没有哪一个CMS是不存在漏洞的,需要耐心的审计才能突破屏障

2023-11-09    分类: 网站建设

因传播和使用本文提供的信息而造成的任何直接或间接后果和损失由用户本人负责,雷神公测和本文作者对此不承担任何责任。

雷神中策拥有对本文的修改和解释权。如需转载或传播本文,必须保证本文的完整性,包括版权声明等所有内容。未经雷神公测许可,不得随意修改或添加、删除本文内容,不得以任何方式用于商业用途。

第一名

关于

极品CMS是一款综合了该类CMS诸多特点的商城CMS,其项目经理在更新速度和优化上也下了不少功夫。当然,没有一个CMS没有漏洞,需要非常耐心的审核才能突破

2号

预审阶段

信息收集

在代码审计开始之前,还必须收集信息。我们需要了解以下几点:

1.漏洞数据库中出现的经审计的 CMS 中的漏洞类型有哪些?

2.社区bug收集区提供的信息

3.每个版本的更新版本内容

4.作者其他作品中出现的漏洞

选定的审核版本

尽量选择比更新版本低的最高版本,这样可以比较更新内容更快的审计漏洞,也可以使用低版本对新版本的特性有一个大致的了解,因为大多数 CMS 都有一些漏洞。找到了,版本更新就在那里

环境安装

本地设置环境,+就可以了

3号

极致CMS--pHp代码审计

前期工作

查看官网版本,了解大体结构

我们选择【 CMS v1.7.1 版本】进行代码审计

查看v1.8版本对比更新内容

获取有益信息

1. XSS 过滤不彻底导致多个 XSS

2.微信支付宝支付插件存在未知bug

3.之前版本的数据库报的错误可能会显示错误页面,并且存在SQL注入

您可以通过搜索引擎查看

之前的漏洞大多在于过滤不完整,1.7版本之前的漏洞大多非常严重

去社区查看已经出现的bug

好的,信息已经大致了解了php代码注入漏洞,确定审核方向

1. SQL注入和XSS因为过滤代码可能写不全,重点审计

2.最新版本更新了不显示错误报告的页面,审计过程关注可能出现数据库错误的页面。

3. CMS启动过程中测试不完整也导致了一些不应该出现的bug

4.注意用户之间的未授权访问。在审核过程中,尝试未经授权访问未检测到用户或id的用户私人页面。

5.网站插件比较齐全,查看是否包含可用插件

No.4

开始审核

根据官网提示在本地安装CMS

查看过滤功能

/**

参数过滤、格式化

**/

($=null,$int=0){

if($==null){'';}

($int){

case 0://整数

(int)$;

case 1://

$=(trim($),);

if((,'7.4','>=')){

$ = ($);

}其他{

if(!())$ = ($);

}

$;

case 2://

if($=='')'';

($, "");

$;case 3://浮点数

()$;

案例 4:

if((,'7.4','>=')){

$ = ($);

}其他{

if(!())$ = ($);

}

修剪($);

}

}

//过滤XSS攻击

(&$arr) {

$ra=('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/','//','//','//','/ /','//'

,'/meta/','/xml/','//','/link/','//','//','//','//','// ','//','//'

,'/base/','//','//','//','//','//','//','//','//', '//','//','//','//','//','//','//','//'

,'//','//','//','//');

如果(($arr))

{

($arr as $key => $)

{

如果 (!($))

{

if((,'7.4','>='))

{

$ = ($);

}

其他

{

如果 (!())

{

$ = ($);

}

}

$ = ($ra,'',$); //删除非打印字符,粗暴过滤xss可疑字符串

$arr[$key] = (($)); //去除HTML和pHp标签并转换为HTML实体

}

其他

{

($arr[$key]);

}

}

}

}

查看执行的SQL语句的功能

//查询一个

find($=null,$=null,$=null,$=1)

{

if( $ = $this->($, $, $, 1) ){

($);

}其他{

;

}

}

跟进功能

// 查询全部

($=null,$=null,$=null,$=null){

$ ='';if(($)){

$join = ();( $ as $key => $ ){

$='\''.$.'\'';

$join[] = "{$key} = {$}";

}

$ = "".join(" AND ",$join);

}其他{

if(null != $)$ = "".$;

}

if(($)){

$ .= 'bY';

$ .= (',', $);

}其他{

if($!=null)$ .= "bY ".$;

}

if(!($))$ .= "{$}";

$ = ($)? "*": $;

$sql = "{$} FROM {

$this->} {$}";

$this->($sql);

}

再次跟进功能

//获取数据

($sql){

if(!$ = $this->($sql)) ();

if(!$this->->()) ();

$rows = ();

($rows[] = $this->->(pDO::)){}

$this->=null;

($rows);

$rows;

}

后续执行功能

//执行SQL语句并检查错误

($sql){

$this->[] = $sql;

$this-> = $this->pdo->($sql);

if ($this->) {

$this;

}其他{

$msg = $this->pdo->();

if($msg[2]) exit('数据库错误:'.$msg[2].end($this->));

}

}

见语句$msg = $this->pdo->();php代码注入漏洞,表示会在页面上打印数据库错误信息并显示并退出

经过一组分析,没有发现过滤sql语句。如果得到的数据没有过滤,就会发生注入

例如:

(){

M('')->find([''=>$_GET['name']]);

}

如果像这样直接将GET pOST带入数据库,会产生错误注入

例如.//name=123'(加引号会报错,如果不过滤引号)

现在你只需要找到类型,这样句子就可以不用过滤直接带入数据库了。

找很多这样的地方就行了。我们以位置为例。

这是支付插件的位置。蓝框1添加代码模拟激活支付宝功能并通过验证

可以看到这个函数只用了[]来过滤xss,但是没有过滤sql语句。用刚才的方法注入

可以看到确实有sql语句和数据库错误

直接报错并注入获取敏感信息

/?=1%27 和 (1,(0x7e,(()),0x7e),1)--+"

该漏洞已提交供应商修复

本文名称:没有哪一个CMS是不存在漏洞的,需要耐心的审计才能突破屏障
URL标题:/news49/293299.html

成都网站建设公司_创新互联,为您提供云服务器网页设计公司外贸网站建设星空体育app最新版本(2024已更新)搜索引擎优化网站排名

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

微信小程序开发