适用场景:大型渗透项目单个IP指向多个域名,通过信息收集到内网域名。
先决条件:目标是真实IP
工具:burp爆破或者Fuff工具
后续渗透
修改hosts文件指向内网域名,发现用的opensnsV2框架,基于thinkphp3的,搜了一下网上并没有什么漏洞便拿来审计。
因为比较老,又是基于thinkphp3的,在前台找到一处任意文件上传getshell
拓展
顺便拿过来审计了v3版本的漏洞,有个RCE和文件包含
漏洞出发点位于weibo控制器下,shareController下
assign对模板变量进行赋值设置为模板变量,调用基类的display方法将模板输出到页面
获取参数–>转换为数组–>输出至模板,查看模板文件Application\Weibo\View\default\Widget\share\sharebox.html
调用了W方法 传入参数Weibo/Share/fetchShare以及我们传入的get请求数组
追进一下W方法
渲染输出widger并且调用了R方法,跟进
通过A方法实例化控制器,调用$class的$action. C(‘ACTION_SUFFIX’)方法,也就是调用\Application\Weibo\Widget\ShareWidget.class.php中的fetchShare方法
接着会调用assginFetch方法,进而调用getinfo()方法,传入的参数就是我们传入的数组
最后通过调用D方法实例化模型类,传入一个参数,并且我们都可控,实现了调用任意模型类的方法,但是只接受一个参数
最后找了所有模型类的方法,符合的也就是网上公开的Application\Common\Model\ScheduleModel.class.php类
如果可行,这里将会传入一个id[]参数,并且需要满足if条件也就是id[status]=1,其他参数为id[0],id[1]
然后这里又调用了D方法,参数也可控,找到thinkphp自己写的一个类
参数可控最后实现RCE
1 | ?s=weibo/share/shareBox&query= |
文件包含
assign第一个变量可控导致的任意文件包含
1 | Url:http://localhost:86/index.php?s=/home/index/search.html |
全局搜assign($
反序列化
https://mp.weixin.qq.com/s/S3Un1EM-cftFXr8hxG4qfA
审计thinkphp3框架注意的点
- sql注入
- assign文件包含
- 反序列化
- https://xz.aliyun.com/t/2630 关注函数
- https://www.chabug.org/audit/1035.html 错误使用上传类