我们在这里下载cms的源码,下载之后怎么在本地搭建呢
我们打开phpstudy-》其他选项菜单-》站点域名管理里
把网站目录填写你下载源码的路径就好了,然后进hosts添加域名

然后不出意外就可以访问了
配置debug在白盒代码审计的时候你可能会须要到断点调试,这个时候就须要用到xdebug,这里我个人用的是vscode编辑器,当然你用phpstorm也是可以的,配置过程如下
首先在vscode的运用商店下载php debug插件在php.ini添加[XDebug]xdebug.profiler_output_dir ="D:\phpStudy\PHPTutorial\tmp\xdebug"xdebug.trace_output_dir ="D:\phpStudy\PHPTutorial\tmp\xdebug"zend_extension="D:\phpStudy\PHPTutorial\php\php-7.1.13-nts\ext\php_xdebug.dll"xdebug.remote_enable = onxdebug.remote_autostart = on
在文件-》首选项-》设置-》用户-》扩展-》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}
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环境就成功搭建了
文件上传漏洞
常日来说,漏洞等级评级高的便是可以rce的高危漏洞,而想要rce最常见的便是文件上传
找文件上传漏洞的话,有两种思路,分别为黑盒和白盒,对新手来说代码功底不强的话,黑盒该当是会比较大略的,这里分别从两个不同的角度来探求漏洞
黑盒思路一样平常来说网站的后台很多地方都是可以文件上传的,我们进入后台之后可以探求诸如文章发布处,修正头像处,附件,插件管理等地方,特殊是像在文章发布处有这种富文本编辑器的地方每每会有上传图片和上传附件的功能
我们拿刚刚搭建好的cms,进入后台之后在发布文章处找到有可以上传图片的地方
我们随便上传一个1.php,创造提示上传图片发生缺点,该当是被过滤了
但不愿定是不是前端过滤还是后端过滤,我们先上传1.jpg,抓包改一下
创造上传成功,原来只是前端过滤,芜湖这不起飞,我们再访问一下我们上传的文件
创造已经成功getshell
这里的过滤比较大略,新手可以学一下各种绕过的技巧:https://xz.aliyun.com/t/6692
那么除了发布文章处,我们还可以在上传图片这些地方入手
我们在微信小程序这里的基本设置处看到有个首页分享封面
和上面一样,只是前端做了过滤,我们抓包改文件即可
但是这里的话只是提示上传成功,没有回显出来文件的名字,我们可以在本地文件处看看到底上传了什么东西
创造上传了wx_share_cover.php,这个文件的名字是固定的,于是我们访问试试看
创造也已经成功getshell
白盒思路
对付初学者而言,找漏洞不能只看黑盒,也要基于白盒审计进行,所谓白盒审计可以大略地理解为便是看着代码找漏洞
我们知道php文件上传的函数是move_uploaded_file(),或者一样平常来说上传的方法名是有upload关键字的,我们可以全局搜索他们定位到上传功能的代码里面
我们找到相应的代码块如下
可以看到validate的check便是这里的过滤,我们用上面的方法绕过即可,如果想清楚的跟踪进这个函数就可以在这里打个断点,然后剖析
当然白盒探求rce漏洞,我们还可以找找file_put_content等可以直接写文件的函数
任意文件删除常日我们找文件删除漏洞的话,可以全局搜索unlink函数
第一处这里的代码功能比较大略,正如注释所说的删除目录下面的所有文件,但不删除目录
我们可以看到$directory是我们可控的,而且没用做任何的过滤,说不定就可以穿越目录从而任意删除文件了,我们先手动加一个var_dump(scandir("."));来不雅观察一下这里所处的位置
可以看到现在是在public的目录下,那我们就在上一层目录随便新建一个目录,里面随便新建几个文件试试看
我们输入
http://www.test123.com/system/dir/del?directory=../123
可以创造txt文件都被删除了,但是文件夹没有被删除
由于这个功能不能删除目录,只能删除目录的文件,如果我们还想删412315里面的文件就可以输入
http://www.test123.com/system/dir/del?directory=../123/412315
第二处
这里和第一处差不多,但是功能有点不一样,这里是可以把全体目录删除了,我们输入如下就可以删除全体123目录了
http://www.test123.com/system/dir/delDir?directory=../123
反序列化漏洞
既然前面已经挖到了文件上传漏洞,这个cms又是thinkphp6.0的版本,我们可以再找一下有没有可以触发phar函数的漏洞
第一处溘然看到我们前面的任意文件删除漏洞处,不正是有个is_dir函数吗,而且又是可以掌握的,真是踏破铁鞋无觅处得来全不费功夫
我们先用网上公开的反序列化链天生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
除了上面那个任意文件删除处的is_dir,我们可以再找找还有没有其他地方能够触发的,随手一找又创造两处
这还只是单单用is_dir函数,没算上其他的就已经那么多了,这个 cms 真是"漏洞百出"
本文的漏洞已提交至 cnvd 平台,作为新手找一些少人用的 cms 挖上面几种漏洞还是比较随意马虎的
靶场实操-任意文件下载漏洞的代码审计
https://www.hetianlab.com/expc.do?ec=ECID06a1-2876-4bfb-8e59-a0096299c167&pk_campaign=weixin-wemedia#stu
复制上方链接到PC端;理解文件下载漏洞的事理,通过代码审计节制文件下载漏洞产生的缘故原由以及修复方法。