Discuz 的渗透渗透测试,最怕的渗透就是拿个扫描器一顿乱扫,结果除了几个 XSS 啥也捞不着。渗透真正好用的渗透入口,往往藏在那些你以为“过时了”的渗透功能里。比如一个允许上传附件的渗透论坛,如果附件目录权限没配好,渗透或者图片处理库有老漏洞,渗透拿 shell 就是渗透分分钟的事。
我去年帮朋友看一个 Discuz X3.4 的渗透站,前台没啥特别,渗透就是渗透普通论坛。但用户组权限设置得比较松,渗透新注册用户就能上传 .zip 附件。渗透当时试了一下,渗透上传一个包含 php 文件的压缩包,Discuz 默认会重命名,但如果你把 php 改成 .phtml 或者 .php5,有些服务器配置照样解析。更直接的是,如果站长用了某些第三方插件做附件管理,插件本身带任意文件读取,那就不用绕了。
Discuz 的数据库配置文件一般在
config/config_global.php和config/config_ucenter.php里。如果能通过任意文件读取漏洞拿到这两个文件,数据库账号密码就到手了。有个很经典的组合:利用forum.php?mod=ajax&action=downremoteimg这个接口,配合 SSRF 打内网,或者直接读本地文件。这个接口设计时没做好过滤,参数里传个http://或者file://就能让服务器帮你请求。我见过一个案例,通过它读到了/etc/passwd,然后顺手把 config 文件也读出来,数据库是 root 权限,直接 udf 提权。后台拿 shell 的路子更粗暴。Discuz 后台有“数据库备份”功能,备份文件默认存在
data/backup_xxxx目录下,文件名是随机字符串,但备份内容可以控制。如果你能进后台,先备份一个包含 php 代码的数据库表,然后通过“恢复”功能或者直接访问备份文件,有时候能解析。不过现在很多站会把 backup 目录加 .htaccess 或者移到 web 目录外,这招就不灵了。另一个方法是后台的“模板管理”,直接编辑模板文件插入 php 代码,保存后访问对应页面就执行了。这招简单直接,但前提是你得先进后台。弱口令进后台是永恒的话题。Discuz 默认管理员账号是 admin,很多站不改密码,或者密码是 admin123、123456 这种。我试过一个站,admin/admin888 直接进去,后台模板编辑写个一句话,连上去一看,服务器是 Windows,权限还是 system。当时就觉得,这站不被黑真是运气好。
还有一个容易被忽略的点:Discuz 的 UCenter。很多站长装完 Discuz 就不管 UCenter 了,默认密码 123456 或者空。UCenter 的接口文件
uc_server/api/uc.php如果没删,配合某些参数能直接调用数据库操作。更狠的是,UCenter 后台有个“应用管理”,可以添加新应用,填上你的服务器地址,然后通过“通信”功能让目标站请求你的 URL,里面可以带出数据库配置信息。这个思路和 SSRF 类似,但更隐蔽。实战里,我习惯先看
robots.txt和readme文件,确认版本。Discuz 的版本号有时候会写在forum.php的注释里,或者通过static/js/common.js的版本参数判断。知道版本后,去搜对应的 CVE。比如 Discuz X3.2 有个前台 SSRF,X3.4 有个后台任意文件删除。别小看文件删除,配合日志包含或者 session 文件,照样能 getshell。最后说个真事。一个高校论坛,用的是 Discuz X3.4,我通过前台发帖处的“远程图片下载”功能,把
顶: 76踩: 99924file:///etc/passwd的内容读出来,然后读到了 config 文件。数据库是内网地址,但密码是弱口令。连上数据库后,发现pre_ucenter_members表里管理员的密码 hash 是 md5,直接 cmd5 解出来是 123456。登录后台,模板编辑拿 shell。整个过程没用什么高级工具,就是耐心看功能点。渗透这事,有时候就是比谁更细心。






评论专区