thinkphp历史漏洞

Posted 0xdd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp历史漏洞相关的知识,希望对你有一定的参考价值。

路由控制類RCE
/think/App.php

if (!preg_match(‘/^[A-Za-z](\w|\.)*$/‘, $controller)) 
throw new HttpException(404, ‘controller not exists:‘ . $controller);

 

 

變量覆蓋RCE
/think/Request.php

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 。

$username = request()->get(‘username/a‘);
db(‘users‘)->insert([‘username‘ => $username]);

 


2.
5.1.6<=ThinkPHP<=5.1.7 (非最新的 5.1.8 版本也可利用)。

$username = request()->get(‘username/a‘);
db(‘users‘)->where([‘id‘ => 1])->update([‘username‘ => $username]);
return ‘Update success‘;

 


3.
ThinkPHP 中存在的 SQL注入 漏洞( select 方法注入)。ThinkPHP5全版本 。

$username = request()->get(‘username‘);
$result = db(‘users‘)->where(‘username‘,‘exp‘,$username)->select();
return ‘select success

 

‘;


4.。漏洞影响版本: ThinkPHP=5.0.10 。

漏洞环境

$username = request()->get(‘username/a‘);
$result = db(‘users‘)->where([‘username‘ => $username])->select();
var_dump($result);

 


5.

漏洞影响版本: 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();

 

以上是关于thinkphp历史漏洞的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPhp常见历史漏洞小结

thinkphp 怎么利用漏洞

THINKPHP网站漏洞怎么修复解决

ThinkPHP 5.x远程命令执行漏洞

thinkPHP3.x日志泄露漏洞复现

总结下ThinkPHP的代码审计方法