点击上方蓝字关注我吧
记录一下渗透过程中的思路以及遇到的难点,不足之处还请各位大佬多多包涵。
拿到目标站点: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



本文分享自微信公众号 - 黑白天(li0981jing)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。