目录
环境搭建
(1)源码下载:
https://search.gitee.com/?skin=rec&type=repository&q=discuz
git clone http://htts://gite.com/ComsenzDiscuzX.git
放置于web根目录,访问即可进入安装页面
(2)也可搭建vulhub靶场,启动discuz环境
漏洞检测
http://139.198.124.92/admin.php?
登录后台,点击站长-》UCenter设置-》UCenter应用ID,此处存在注入漏洞
报错注入
1' and (updatexml(1,concat(0x7e,(select user()),0x7e),1)); -- -
或者使用bp抓包发送:
写文件
1' into outfile '1.txt'; -- -
漏洞分析
uc_client/mode/base.php:209行
在note_exists函数中,$noteexists 变量在最后拼接了UC_APPID变量。先跟进result_first,也就是uc_client/lib/db.class.php:66行
直接执行sql语句。所以我们只要可控前面的$noteexists变量,即可构造注入。由于Discuzx默认自带一定的敏感字符,直接的sql注入都无法攻击。通过管理员修改配置构造二次注入的方式,可以有效绕过DiscuzX自带的过滤机制。
UC_APPID是从配置文件中读取的配置信息,一般写为define('UC_APPID','xxxx');。这个是管理员可以控制的UC变量,也就是CenterID 。
参考资料