前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实战技巧|利用ThinkPHP5.X的BUG实现数据库信息泄露

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

作者头像
黑白天安全
发布2020-04-14 17:22:18
4.3K0
发布2020-04-14 17:22:18
举报

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

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

首先针对目标进行子域名收集

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

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

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

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

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

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

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

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

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

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

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

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

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

问题主要出在\thinkphp\library\think\db\Builder.php中buildWhere和parseWhereItem上

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

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑白天实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档