免责申明
本文章仅用于信息安全防御技术分享,因用于其他用途而产生不良后果,作者不承担任何法律责任,请严格遵循中华人民共和国相关法律法规,禁止做一切违法犯罪行为。
前几天发过了一个文章,审计织梦cms的一个过程,但是织梦毕竟作为一个老牌CMS了,已经被再看文章的各位师傅打了好几遍了,所以当时在提交漏洞的时候重复率是非常高的,这里拿出来一个重复了的漏洞说下当时的一个审计流程。
0x00 影响版本
这里的涉及版本是<V5.7.107,笔者也是正式从这个版本开始审计织梦的,目前官网已经发布了5.7.110版本这个漏洞已经被修复。
0x01审计过程
老规矩还是下载对应版本(没有这个版本的师傅下滑,我甩一份),使用PHPStudy进行搭建环境进行审计。
涉及到的漏洞文件
uploads/dede/module_make.php
这个文件当中存在一个移动文件函数
为什么要对他进行细看呢,因为看到在函数move_upload_file函数是可以将一个文件移动之后直接重命名更改为一个php格式,方便我们拿到webshell。
然后向上查找发现
这个代码对应的是一个修改项目的功能点,所以我们对应功能点先随便创建一个项目。
创建好了进行修改点击提交抓包查看是否对应相对应的路由地址
地址对应,然后再进行分析
对应移动的变量为setup,查看哪个上传点查看哪一个是对应的文件移动代码。
这里还发现了可以直接上传空php文件,但是一直找不到对应移动了的地址,即使使用断点或者打印出来依旧找不到文件,继续向下看代码
这里调用了一个函数GetEncodeFile跟进查看,记住这个函数第二个变量为TRUE
这才发现是这个函数将我们上传的文件直接进行了删除,虽然看到里面有一些函数为fread等函数,但是filename参数传进来的是MD5加密值
暂时不考虑这些函数,但是我们回到我们创建的项目管理地方,查看除了修改还有什么功能
发现我们创建的这个项目还可以进行安装,我们点击安装找到路由查看对应代码
点击安装进行抓包寻找路由地址
module_main.php中的setupstart
对应代码如下
首先进行了一个文件的权限检查然后做了一系列操作,我们主要看WriteSystemFile函数
在这个函数当中依然存在fwrite写入函数,我们看到首先filename是一个hashcode和-还有ntype.php结尾,我们进行echo输出查看内容
首先记住这里的hash值
59155be87ea60c5c65ec1f7a46a0fc9d是这个
当我点击确定的时候发现
最后查看文件
已经被保存下来了
0x02漏洞利用
这里有两个坑没说到,第一个就是再移动文件的地方存在过滤代码,他会检测代码当中是否包含一些危险字符,同样是使用的我正则表达式进行的过滤,我们绕过去就可以,我这里使用了base64编码绕过,第二个就是他文件上传无论上传什么格式文件,最终写入文件都是php格式的没必要硬性要求PHP文件(这个师傅们下来可以自己测试一下)
准备好这个文件,内容是向D盘下面写入一个1.txt文件
随便找一个没有安装的项目,进行上传一个恶意文件(需要一定免杀)
注意勾选这个
上传好了之后,进行安装
成功安装(其中有一行代码是之前我们添加的哪个调试代码)
然后查看D盘根目录是否多出来一个1.txt文件
成功写入文件
0x03小结
这个就是之前我自己去审计出来的一个漏洞,也是可以getshell和一位22年的师傅重复了,其实有时候我们从代码的角度去寻找这些问题其实及其的繁琐,有时候会发现还不如黑盒来的快,只是一个简单的上传安装,却要分析这么多的东西!
原文始发于微信公众号(进击安全):DeDeCMS代码审计梅开二度
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论