• 记某cms审计过程(新手入门篇)


    作者:larry

    前言

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

    前置工作

    寻找cms及搭建

    一般来说我们可以到谷歌百度等引擎找到cms的官网下载源码,或者码云,然后在本地用phpstudy搭建起来环境

    我们在这里下载cms的源码,下载之后怎么在本地搭建呢

    我们打开phpstudy-》其他选项菜单-》站点域名管理里

    把网站目录填写你下载源码的路径就好了,然后进hosts添加域名

    然后不出意外就可以访问了

    配置debug

    在白盒代码审计的时候你可能会需要到断点调试,这个时候就需要用到xdebug,这里我个人用的是vscode编辑器,当然你用phpstorm也是可以的,配置过程如下

    1. 首先在vscode的应用商店下载php debug插件
    2. php.ini添加
    [XDebug]
    xdebug.profiler_output_dir ="D:phpStudyPHPTutorial	mpxdebug"
    xdebug.trace_output_dir ="D:phpStudyPHPTutorial	mpxdebug"
    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环境就成功搭建了

    文件上传漏洞

    通常来说,漏洞等级评级高的就是可以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
    

    第n处

    除了上面那个任意文件删除处的is_dir,我们可以再找找还有没有其他地方能够触发的,随手一找又发现两处

    这还只是单单用is_dir函数,没算上其他的就已经那么多了,这个 cms 真是"漏洞百出"

    本文的漏洞已提交至 cnvd 平台,作为新手找一些少人用的 cms 挖上面几种漏洞还是比较容易的

    靶场实操-任意文件下载漏洞的代码审计 

    实验:任意文件下载漏洞的代码审计(合天网安实验室)

    复制上方链接到PC端;了解文件下载漏洞的原理,通过代码审计掌握文件下载漏洞产生的原因以及修复方法。

    合天智汇:合天网络靶场、网安实战虚拟环境
  • 相关阅读:
    android之自定义ViewGroup和自动换行的布局的实现
    早上开发有感:事情原本可以变的简单
    android中textview显示汉字,字母,数字乱行行问题解决
    MeasureSpec介绍及使用详解
    android中status bar 小结
    Android推送方式比较(转)
    error: Entry 'xxxxxx' not uptodate. Cannot merge.
    android2.3:加载你的SD卡与can't mount /dev/block/mmcblk0
    有客户自远方来,不亦乐乎?唉,怎一个愁字了得
    卸载Norton 8企业版的一次经历
  • 原文地址:https://www.cnblogs.com/hetianlab/p/14741271.html
Copyright © 2020-2023  润新知