本系列文章将针对 ThinkPHP 的历史漏洞进行分析,今后爆出的所有 ThinkPHP 漏洞分析,也将更新于 ThinkPHP-Vuln 项目上。本篇文章,将分析 ThinkPHP 中存在的 SQL注入漏洞 ( insert 方法注入)。
漏洞概要
本次漏洞存在于 Builder 类的 parseData 方法中。由于程序没有对数据进行很好的过滤,将数据拼接进 SQL 语句,导致 SQL注入漏洞 的产生。漏洞影响版本: 5.0.13<=ThinkPHP<=5.0.15 、 5.1.0<=ThinkPHP<=5.1.5 。
漏洞环境
通过以下命令获取测试环境代码:composer create-project --prefer-dist topthink/think=5.0.15 tpdemo
将 composer.json 文件的 require 字段设置成如下:"require": {
"php": ">=5.4.0",
"topthink/framework": "5.0.15"
}
然后执行 composer update ,并将 application/index/controller/Index.php 文件代码设置如下:<?php
namespace app\index\controller;
class Index
{
public function index()
{
$username = request()->get('username/a&