PHP-代码审计项目-taoCMS-后台注入
本文最后更新于 2024年10月21日 晚上
环境搭建
- 我用的是 phpstudy2018+php-5.4.45+Apache
白盒审计
手工审计
审计思路选择
由于功能点太多了,于是果断pass掉功能点审计法与SQL语句监控法,因为功能点太多,那么需要触发的SQL语句也会很多,一时半会还真不好找,于是我选择正则表达式审计法
1 |
|
一共匹配到的有效SQL语句也就30来条左右,通过简单看看这些SQL语句,又可以排除大部分明显不可控的固定的SQL语句,那么剩下的就一条一条验证看是否可控
最终觉得 **\include\Model\Datastore.php **这个文件中的一处SQL语句有点可疑
开始着重审计
审计过程
1 |
|
这段代码的功能就是
通过 GET 获取 bulist 参数的值 (以”|”分割的字符串,子字符串其实就是表名)
对 bulist 参数的值使用explode函数进行分割,得到每一个表名
然后遍历每一个表名,读取其所有数据
并写入到 backup-xxxxx.sql 中供用户下载
简而言之,就是一个数据库的备份功能
但这里并没有对 bulist 的值进行任何过滤,且bulist值用户可控,直接被拼接到表名的位置执行SQL语句
最终导致了 SQL 注入的发生
黑盒触发
根据源码架构,可以看出是MVC架构,那么,Model是datastore.php,方法是create
查看后台首页地址是: /admin/admin.php?action=frame&ctrl=iframes
那么触发的地址应该是:?action=datastore&ctrl=create&bulist=xxxxxxx
或者根据功能点去找,因为这是备份功能,那么就去翻找有备份字眼的功能点
ok,到此就找到了黑盒触发点了
漏洞复现
hackbar发包
payload
1 |
|
成功下载备份文件
打开看看
1 |
|
成功注出数据!