免费发布信息
当前位置:APP交易 > 热点资讯 > 资产交易 >  利用白盒与黑盒结合的方式审计某CMS

利用白盒与黑盒结合的方式审计某CMS

发表时间:2021-07-09 16:58:56  来源:红帽社区  浏览:次   【】【】【
红帽社区是一个垂直网络安全社区,融合“红帽先锋”正能量精神,每日分享最新安全资讯,提供安全问答、靶场、众测、漏洞库等功能,是网络安全爱好者学习、交流的优质社区。

在群里看到Ashe表哥放了几手0day,心里那个羡慕啊于是打算开始学代码审计逛CNVD的时候发现最近SDCMS的漏洞比较多,于是下手挖掘,找到了两个漏洞的位置,因为此源码一些关键的位置都混淆了,所以对我这个刚接触的憨憨有点难度,于是采用白盒加黑盒的方式进行审计。
注:以下漏洞非本人提交,CNVD已经收录,源码是8.27下载的,漏洞依然存在

我在官网下载最新的1.8源码进行搭建,其中PHP要开启Openssl扩展方法很简单,打开php.ini找到该行,将前面的分号去掉就可以了

搭建好源码,然后去后台看看功能,测试发现多处上传的位置都存在目录遍历
发现过程:

点击选择,进入后点击upfile文件夹,Burp开启

抓取到如下数据包:

分析该数据包,发现并未提交参数,而是GET直接访问路径,观察路径发现
dXBmaWxl.html为Base64编码地址+.html

猜想,如果为./是否会遍历web根目录下的文件
将数据包发送到Burp的重放模块,并修改参数./ -> Li8= 测试目录遍历成功

该目录遍历存在的地方比较多,有上传的地方基本就存在,但是很鸡肋,没有列出目录,于是继续挖掘,发现插件中有一处目录遍历可列出目录和文件
进入插件列表,找到附件管理

当点击管理的时候,进入后Burp开启,然后随意点击一个文件夹抓到数据包

观察发现与上面的情况相似,直接修改为当前目录,然后提交.

发现成功遍历了网站根目录
这一处比较鸡肋,下面分享代码执行
在系统管理处有一处模板管理可以修改PHP文件

到这可能大家以为,这直接可以Getshell了啊,当时我也这样想,后面发现,写入PHP代码后还会在前面加一段代码,导致了我们的代码执行不了,甚至连phpinfo函数都写入不了,黑盒测试了一下无果


前面说到该CMS的一些文件是混淆了的,后来发现有些文件没有混淆,于是查找存在漏洞的位置在app/admin/controller目录下,发现大部分文件没有混淆加密,且可以通过文件名明白该文件实现的功能,如图:

而主题模板的功能文件在app/admin/controller/themecontroller.php
目录下,查找问题原因,定位到themecontroller.php文件的150

此处找到问题原因,如果路径中存在字符串.php则执行 if代码块的内容
if代码块的内容正是向文件中写入下面的代码:


该代码导致了我们写入的代码无法执行,看到查找字符串的函数是strpos
学过PHP的朋友们应该知道strpos函数是对大小写敏感的,于是我们可以用.PHP的方法跳过该判断分支,前面我们还遇到一个问题就是phpinfo()函数写入时会报非法内容,原先的猜想是他有一个WAF会过滤,结果看到一个函数调用处理提交的数据,然后跟踪到该文件最后一行时震惊了

private function check_bad($str)

  {

    $num=preg_match_all("/(phpinfo|eval|if(!APP_DEMO)file_put_contents|file_get_contents|passthru|exec|chroot|scandir|proc_open|delfolder|un|mkdir|fopen|fread|fwrite|fputs|tmpfile|flock|chmod|delete|assert|_post|_get|_request|_file)/Ui",$str,$match);

    return $num?$num:0;

  }

他自己写了一个函数,函数功能是用正则来过滤php的一些函数和变量名称,而且还没有过滤全,system函数漏了呀(程序员出来挨打).
这个绕过方法就不用多讲了,直接以变量为函数名,将函数名的字符串拆开绕过

先将访问一个php文件然后Burp抓包,操作与上面目录遍历的方法相同,不过文件后缀要大写然后Base64编码修改后访问,然后写文件时进行函数名拆分赋给变量str3,最后以变量str3为函数名执行

最后访问文件地址

成功写入PHP文件并执行了我们的代码

本人最近刚开始学代审,文章深度可能达不到各位表哥的水平,但是希望该文章能给与我一样刚接触代码审计的小白一个思路,同时也希望与云众的各位共同进步,感谢在我的学习之路上一直鼓励和帮助过我的表哥们。

0x01

在群里看到Ashe表哥放了几手0day,心里那个羡慕啊于是打算开始学代码审计逛CNVD的时候发现最近SDCMS的漏洞比较多,于是下手挖掘,找到了两个漏洞的位置,因为此源码一些关键的位置都混淆了,所以对我这个刚接触的憨憨有点难度,于是采用白盒加黑盒的方式进行审计。
注:以下漏洞非本人提交,CNVD已经收录,源码是8.27下载的,漏洞依然存在
image.png

0x02

我在官网下载最新的1.8源码进行搭建,其中PHP要开启Openssl扩展方法很简单,打开php.ini找到该行,将前面的分号去掉就可以了
image.png
搭建好源码,然后去后台看看功能,测试发现多处上传的位置都存在目录遍历
发现过程:
image.png
点击选择,进入后点击upfile文件夹,Burp开启
image.png
抓取到如下数据包:
image.png
分析该数据包,发现并未提交参数,而是GET直接访问路径,观察路径发现
dXBmaWxl.html为Base64编码地址+.html
image.png
猜想,如果为./是否会遍历web根目录下的文件
将数据包发送到Burp的重放模块,并修改参数./ -> Li8= 测试目录遍历成功
image.png
该目录遍历存在的地方比较多,有上传的地方基本就存在,但是很鸡肋,没有列出目录,于是继续挖掘,发现插件中有一处目录遍历可列出目录和文件
进入插件列表,找到附件管理
image.png
当点击管理的时候,进入后Burp开启,然后随意点击一个文件夹抓到数据包
image.png
观察发现与上面的情况相似,直接修改为当前目录,然后提交.
image.png
发现成功遍历了网站根目录
这一处比较鸡肋,下面分享代码执行
在系统管理处有一处模板管理可以修改PHP文件
image.png
到这可能大家以为,这直接可以Getshell了啊,当时我也这样想,后面发现,写入PHP代码后还会在前面加一段代码,导致了我们的代码执行不了,甚至连phpinfo函数都写入不了,黑盒测试了一下无果
image.png
image.png
前面说到该CMS的一些文件是混淆了的,后来发现有些文件没有混淆,于是查找存在漏洞的位置在app/admin/controller目录下,发现大部分文件没有混淆加密,且可以通过文件名明白该文件实现的功能,如图:
image.png
而主题模板的功能文件在app/admin/controller/themecontroller.php
目录下,查找问题原因,定位到themecontroller.php文件的150
image.png
此处找到问题原因,如果路径中存在字符串.php则执行 if代码块的内容
if代码块的内容正是向文件中写入下面的代码:

<?php if(!defined('IN_SDCMS')) exit;?>

该代码导致了我们写入的代码无法执行,看到查找字符串的函数是strpos
学过PHP的朋友们应该知道strpos函数是对大小写敏感的,于是我们可以用.PHP的方法跳过该判断分支,前面我们还遇到一个问题就是phpinfo()函数写入时会报非法内容,原先的猜想是他有一个WAF会过滤,结果看到一个函数调用处理提交的数据,然后跟踪到该文件最后一行时震惊了
image.png

private function check_bad($str)

  {

    $num=preg_match_all("/(phpinfo|eval|if(!APP_DEMO)file_put_contents|file_get_contents|passthru|exec|chroot|scandir|proc_open|delfolder|un|mkdir|fopen|fread|fwrite|fputs|tmpfile|flock|chmod|delete|assert|_post|_get|_request|_file)/Ui",$str,$match);

    return $num?$num:0;

  }

他自己写了一个函数,函数功能是用正则来过滤php的一些函数和变量名称,而且还没有过滤全,system函数漏了呀(程序员出来挨打).
这个绕过方法就不用多讲了,直接以变量为函数名,将函数名的字符串拆开绕过

0x03

先将访问一个php文件然后Burp抓包,操作与上面目录遍历的方法相同,不过文件后缀要大写然后Base64编码修改后访问,然后写文件时进行函数名拆分赋给变量str3,最后以变量str3为函数名执行
image.png
最后访问文件地址
image.png
成功写入PHP文件并执行了我们的代码

结语

本人最近刚开始学代审,文章深度可能达不到各位表哥的水平,但是希望该文章能给与我一样刚接触代码审计的小白一个思路,同时也希望与云众的各位共同进步,感谢在我的学习之路上一直鼓励和帮助过我的表哥们。

责任编辑:
声明:本平台发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。

德品

1377 678 6470