【渗透实战系列】26|一记某cms审计过程(步骤详细)

admin 2022年1月10日15:51:11代码审计评论33 views4296字阅读14分19秒阅读模式

前言

今天放假闲着无事就找了个cms来挖挖漏洞,挖到的漏洞比较简单,适合新手入门,所以本篇文章就记录一下这几个漏洞的审计过程,以及如何从新手的角度去挖到cms一些常见的漏洞,如果是大佬就可以绕道了

前置工作

寻找cms及搭建

一般来说我们可以到谷歌百度等引擎找到cms的官网下载源码,或者码云,然后在本地用phpstudy搭建起来环境
【渗透实战系列】26|一记某cms审计过程(步骤详细)
我们在这里下载cms的源码,下载之后怎么在本地搭建呢
我们打开phpstudy-》其他选项菜单-》站点域名管理里
【渗透实战系列】26|一记某cms审计过程(步骤详细)
把网站目录填写你下载源码的路径就好了,然后进hosts添加域名
【渗透实战系列】26|一记某cms审计过程(步骤详细)
然后不出意外就可以访问了

配置debug

在白盒代码审计的时候你可能会需要到断点调试,这个时候就需要用到xdebug,这里我个人用的是vscode编辑器,当然你用phpstorm也是可以的,配置过程如下
  1. 首先在vscode的应用商店下载php debug插件
  2. php.ini添加
[XDebug]
xdebug.profiler_output_dir ="D:phpStudyPHPTutorialtmpxdebug"
xdebug.trace_output_dir ="D:phpStudyPHPTutorialtmpxdebug"
zend_extension="D:phpStudyPHPTutorialphpphp-7.1.13-ntsextphp_xdebug.dll"
xdebug.remote_enable = on
xdebug.remote_autostart = on
  1. 在文件-》首选项-》设置-》用户-》扩展-》settings.json
{
    "php.validate.executablePath""D:/phpStudy/PHPTutorial/php/php-7.1.13-nts/php.exe",
    "editor.mouseWheelZoom"true,
    "php.executablePath""D:/phpStudy/PHPTutorial/php/php-7.1.13-nts/php.exe",
    "workbench.editorAssociations": [
        {
            "viewType""jupyter.notebook.ipynb",
            "filenamePattern""*.ipynb"
        }
    ],
    "explorer.confirmDelete"false
}
  1. launch.json添加
{
    "version""0.2.0",
    "configurations": [
    {
        "name""Listen for Xdebug",
        "type""php",
        "request""launch",
        "port": 9000
    },
    ]
}
上面一些路径自行更改一下,然后我们新建一个1.php打个断点,然后访问http://127.0.0.1/1.php,如果出现如下,就说明xdebug环境就成功搭建了
【渗透实战系列】26|一记某cms审计过程(步骤详细)

文件上传漏洞

通常来说,漏洞等级评级高的就是可以rce的高危漏洞,而想要rce最常见的就是文件上传
找文件上传漏洞的话,有两种思路,分别为黑盒和白盒,对新手来说代码功底不强的话,黑盒应该是会比较简单的,这里分别从两个不同的角度来寻找漏洞

黑盒思路

一般来说网站的后台很多地方都是可以文件上传的,我们进入后台之后可以寻找诸如文章发布处,修改头像处,附件,插件管理等地方,特别是像在文章发布处有这种富文本编辑器的地方往往会有上传图片和上传附件的功能
我们拿刚刚搭建好的cms,进入后台之后在发布文章处找到有可以上传图片的地方
【渗透实战系列】26|一记某cms审计过程(步骤详细)

我们随便上传一个1.php,发现提示上传图片发生错误,应该是被过滤了
【渗透实战系列】26|一记某cms审计过程(步骤详细)
但不确定是不是前端过滤还是后端过滤,我们先上传1.jpg,抓包改一下
【渗透实战系列】26|一记某cms审计过程(步骤详细)

发现上传成功,原来只是前端过滤,芜湖这不起飞,我们再访问一下我们上传的文件

【渗透实战系列】26|一记某cms审计过程(步骤详细)

发现已经成功getshell
这里的过滤比较简单,新手可以学一下各种绕过的技巧:https://xz.aliyun.com/t/6692
那么除了发布文章处,我们还可以在上传图片这些地方入手
【渗透实战系列】26|一记某cms审计过程(步骤详细)

我们在微信小程序这里的基本设置处看到有个首页分享封面
和上面一样,只是前端做了过滤,我们抓包改文件即可
【渗透实战系列】26|一记某cms审计过程(步骤详细)

但是这里的话只是提示上传成功,没有回显出来文件的名字,我们可以在本地文件处看看到底上传了什么东西
【渗透实战系列】26|一记某cms审计过程(步骤详细)

发现上传了wx_share_cover.php,这个文件的名字是固定的,于是我们访问试试看
发现也已经成功getshell
【渗透实战系列】26|一记某cms审计过程(步骤详细)

白盒思路

对于初学者而言,找漏洞不能只看黑盒,也要基于白盒审计进行,所谓白盒审计可以简单地理解为就是看着代码找漏洞
我们知道php文件上传的函数是move_uploaded_file(),或者一般来说上传的方法名是有upload关键字的,我们可以全局搜索他们定位到上传功能的代码里面
我们找到相应的代码块如下

【渗透实战系列】26|一记某cms审计过程(步骤详细)


可以看到validatecheck就是这里的过滤,我们用上面的方法绕过即可,如果想清楚的跟踪进这个函数就可以在这里打个断点,然后分析
当然白盒寻找rce漏洞,我们还可以找找file_put_content等可以直接写文件的函数

任意文件删除

通常我们找文件删除漏洞的话,可以全局搜索unlink函数

第一处

【渗透实战系列】26|一记某cms审计过程(步骤详细)


这里的代码功能比较简单,正如注释所说的删除目录下面的所有文件,但不删除目录
我们可以看到$directory是我们可控的,而且没用做任何的过滤,说不定就可以穿越目录从而任意删除文件了,我们先手动加一个var_dump(scandir("."));来观察一下这里所处的位置

【渗透实战系列】26|一记某cms审计过程(步骤详细)


可以看到现在是在public的目录下,那我们就在上一层目录随便新建一个目录,里面随便新建几个文件试试看

【渗透实战系列】26|一记某cms审计过程(步骤详细)


我们输入
http://www.test123.com/system/dir/del?directory=../123
可以发现txt文件都被删除了,但是文件夹没有被删除
【渗透实战系列】26|一记某cms审计过程(步骤详细)

因为这个功能不能删除目录,只能删除目录的文件,如果我们还想删412315里面的文件就可以输入
http://www.test123.com/system/dir/del?directory=../123/412315

第二处

【渗透实战系列】26|一记某cms审计过程(步骤详细)
这里和第一处差不多,但是功能有点不一样,这里是可以把整个目录删除了,我们输入如下就可以删除整个123目录了
http://www.test123.com/system/dir/delDir?directory=../123

反序列化漏洞

既然前面已经挖到了文件上传漏洞,这个cms又是thinkphp6.0的版本,我们可以再找一下有没有可以触发phar函数的漏洞

第一处

突然看到我们前面的任意文件删除漏洞处,不正是有个is_dir函数吗,而且又是可以控制的,真是踏破铁鞋无觅处得来全不费功夫

【渗透实战系列】26|一记某cms审计过程(步骤详细)


我们先用网上公开的反序列化链生成test.jpg,然后利用上面的任意文件删除漏洞上传,上传到这个位置
{"code":1,"msg":"上传成功","url":["http://www.test123.com/uploads/postImages/20210404\3c5ea1104433e1cb734be47ab8377a11.jpg"]}
我们再用phar协议去触发这个文件即可rce
http://www.test123.com/system/dir/del?directory=phar://uploads/postImages/20210404/3c5ea1104433e1cb734be47ab8377a11.jpg

【渗透实战系列】26|一记某cms审计过程(步骤详细)


第n处

除了上面那个任意文件删除处的is_dir,我们可以再找找还有没有其他地方能够触发的,随手一找又发现两处
【渗透实战系列】26|一记某cms审计过程(步骤详细)

【渗透实战系列】26|一记某cms审计过程(步骤详细)


这还只是单单用is_dir函数,没算上其他的就已经那么多了,这个 cms 真是"漏洞百出"
本文的漏洞已提交至 cnvd 平台,作为新手找一些少人用的 cms 挖上面几种漏洞还是比较容易的

靶场实操-任意文件下载漏洞的代码审计 
https://www.hetianlab.com/expc.do?ec=ECID06a1-2876-4bfb-8e59-a0096299c167&pk_campaign=weixin-wemedia#stu   

推荐阅读:




渗透实战系列


【渗透实战系列】25|一次从 APP 逆向到 Getshell 的过程

【渗透实战系列】24|-针对CMS的SQL注入漏洞的代码审计思路和方法

【渗透实战系列】23|-某菠菜网站渗透实战

【渗透实战系列】22|-渗透系列之打击彩票站

【渗透实战系列】21|一次理财杀猪盘渗透测试案例

【渗透实战系列】20|-渗透直播网站

【渗透实战系列】19|-杀猪盘渗透测试

【渗透实战系列】18-手动拿学校站点 得到上万人的信息(漏洞已提交)

【渗透实战系列】|17-巧用fofa对目标网站进行getshell

【渗透实战系列】|16-裸聊APP渗透测试

【渗透实战系列】|15-博彩网站(APP)渗透的常见切入点

【渗透实战系列】|14-对诈骗(杀猪盘)网站的渗透测试

【渗透实战系列】|13-waf绕过拿下赌博网站

【渗透实战系列】|12 -渗透实战, 被骗4000花呗背后的骗局

【渗透实战系列】|11 - 赌博站人人得而诛之

【渗透实战系列】|10 - 记某色X商城支付逻辑漏洞的白嫖(修改价格提交订单)

【渗透实战系列】|9-对境外网站开展的一次web渗透实战测试(非常详细,适合打战练手)

【渗透实战系列】|8-记一次渗透测试从XSS到Getshell过程(详细到无语)

【渗透实战系列】|7-记一次理财杀猪盘渗透测试案例

【渗透实战系列】|6- BC杀猪盘渗透一条龙(文末附【渗透实战系列】其他文章链接)

【渗透实战系列】|5-记一次内衣网站渗透测试

【渗透实战系列】|4-看我如何拿下BC站的服务器

【渗透实战系列】|3-一次简单的渗透

【渗透实战系列】|2-记一次后门爆破到提权实战案例

【渗透实战系列】|1一次对跨境赌博类APP的渗透实战(getshell并获得全部数据)

【渗透实战系列】26|一记某cms审计过程(步骤详细)

长按-识别-关注

Hacking黑白红

一个专注信息安全技术的学习平台

【渗透实战系列】26|一记某cms审计过程(步骤详细)

点分享

【渗透实战系列】26|一记某cms审计过程(步骤详细)

点收藏

【渗透实战系列】26|一记某cms审计过程(步骤详细)

点点赞

【渗透实战系列】26|一记某cms审计过程(步骤详细)

点在看


本文始发于微信公众号(Hacking黑白红):【渗透实战系列】26|一记某cms审计过程(步骤详细)

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月10日15:51:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  【渗透实战系列】26|一记某cms审计过程(步骤详细) http://cn-sec.com/archives/467809.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: