实战技巧|利用ThinkPHP5.X的BUG实现数据库信息泄露

文章来源:NearSec

记录一下渗透过程中的思路以及遇到的难点,不足之处还请各位大佬多多包涵。

拿到目标站点:http://.**.cn

首先针对目标进行子域名收集
38356-vtwzdsgwiy.png

发现存在http://t.**.cn域名,为测试系统
89752-is8f9f6pk1f.png

URL后面随便输入个目录,发现是ThinkPHP 3.2.3的系统,目前公开渠道没有可直接GetShell的漏洞
48782-g193c87o4dg.png

尝试加上/admin可以进入到后台登录页,使用Burp挂载弱口令Top1000爆破无果
90148-ztof50nqnkd.png

根据IP解析情况分析网站未使用WAF、CDN等服务,直接为真实IP,非云服务器,为运营商企业宽带IP地址,针对端口扫描存在大量开放端口,但是针对MySQL、SSH等服务的爆破也无果
83900-eo3ybtfayv.png

针对同服网站信息搜集未找到其他相关站点,此时返回目标网站前台尝试继续寻找突破口,使用测试手机号Top1000搭配弱口令123456成功爆破出一个前台测试账号

38470-mujpydya3k.png

发现这个账号存在多个订单

75396-end8bddqaeo.png

Burp抓包找到获取订单信息的接口,尝试修改UID发现可以越权获取到整站订单信息
23422-bp2km08rrdi.png

此时原本已打算就此结束,发现在前台存在某个功能
36521-w5etfr5eysf.png

此功能指向了另外一个URL:http://x.**.net
89307-c67mp79ubme.png

尝试添加/install发现是使用了一个返利系统搭建的,随后请群内做代码审计的师傅对这套系统的代码进行分析,无从下手

42468-6gm1c3cbwlm.png

针对这个域名进行子域收集发现只解析了x、w以及根域

45974-67645up2sdt.png

访问后发现根域搭建的也是一个ThinkPHP的程序,版本为5.0.24,同时根据服务器网卡IP 172.*及网站公网IP和上一个站处于同C段,猜测同位于此公司内网中

70949-54dlhq9z51l.png

根据报错信息可判断站点开启了debug模式,团队内的师傅刚好掌握一个ThinkPHP 5.X版本的BUG,在某些情况下可以直接获取数据库相关信息,针对此站点进行测试后发现恰好存在这个问题

问题主要出在thinkphplibrarythinkdbBuilder.php中buildWhere和parseWhereItem上
15350-jdd0orsc6u.png

54404-vqdltywcz0i.png

44730-lfiw2yes6c.png

当处于debug模式下时,如果数据库抛出错误,那么ThinkPHP就会一起报错,并输出数据库配置信息。

也就是说,可以通过爆破或空连接等方式来使MySQL拒绝服务,同时一直尝试请求Web端页面,就会有几率导致ThinkPHP抛出数据库配置信息

62539-57f7czrxufh.png

最终导致ThinkPHP报错,泄露数据库地址账号密码

88331-1kn2h8to19.png

两个站使用了同一个库,从库中获取到后台管理员账号密码,进入后台getshell
71888-4hy5f16654x.png

本文经授权后发布,本文观点不代表立场,转载请联系原作者。
「实战」 缘分使我们(骗子)相遇
« 上一篇 05-08
【基础篇】PHP源代码审计
下一篇 » 05-09

相关推荐

红队防猝死手册

文章来源:https://github.com/zhutougg/RedteamStandard一切为了不丢分工作环境工作时全部操作均在虚拟机中完成虚拟机...

Android渗透工具集合

Android安全测试更多地被安全行业用来测试Android应用程序中的漏洞。下面将列举全面的Android渗透测试工具和资源列表,其涵盖了在Andro...

基于社工的钓鱼研究

声明由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。雷神众测拥有对此文章的...