91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ThinkPHP5中的SQL注入漏洞是什么

發布時間:2021-10-11 10:58:59 來源:億速云 閱讀:189 作者:柒染 欄目:網絡管理

今天就跟大家聊聊有關ThinkPHP5中的SQL注入漏洞是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

漏洞概要

本次漏洞存在于 Builder 類的 parseData 方法中。由于程序沒有對數據進行很好的過濾,將數據拼接進 SQL 語句,導致 SQL注入漏洞 的產生。漏洞影響版本: 5.0.13<=ThinkPHP<=5.0.155.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');
        db('users')->insert(['username' => $username]);
        return 'Update success';
    }
}

application/database.php 文件中配置數據庫相關信息,并開啟 application/config.php 中的 app_debugapp_trace 。創建數據庫信息如下:

create database tpdemo;
use tpdemo;
create table users(
    id int primary key auto_increment,
    username varchar(50) not null
);

訪問 http://yoursite/index/index/index?username[0]=inc&username[1]=updatexml(1,concat(0x7,user(),0x7e),1)&username[2]=1 鏈接,即可觸發 SQL注入漏洞 。(沒開啟 app_debug 是無法看到 SQL 報錯信息的)ThinkPHP5中的SQL注入漏洞是什么

漏洞分析

ThinkPHP5中的SQL注入漏洞是什么首先在官方發布的 5.0.16 版本更新說明中,發現其中提到該版本包含了一個安全更新,我們可以查閱其 commit 記錄,發現其修改的 Builder.php 文件代碼比較可疑。ThinkPHP5中的SQL注入漏洞是什么接著我們直接跟著上面的攻擊 payload 來看看漏洞原理。首先, payload 數據經過 ThinkPHP 內置方法的過濾后(不影響我們的 payload ),直接進入了 $this->builderinsert 方法,這里的 $this->builder\think\db\builder\Mysql 類,代碼如下:ThinkPHP5中的SQL注入漏洞是什么Mysql 類繼承于 Builder 類,即上面的 $this->builder->insert() 最終調用的是 Builder 類的 insert 方法。在 insert 方法中,我們看到其調用 parseData 方法來分析并處理數據,而 parseData 方法直接將來自用戶的數據 $val 進行了拼接返回。我們的惡意數據存儲在 $val[1] 中,雖經過了 parseKey 方法處理,當絲毫不受影響,因為該方法只是用來解析處理數據的,并不是清洗數據。ThinkPHP5中的SQL注入漏洞是什么上面,我們看到直接將用戶數據進行拼接。然后再回到 Builder 類的 insert 方法,直接通過替換字符串的方式,將 $data 填充到 SQL 語句中,進而執行,造成 SQL注入漏洞ThinkPHP5中的SQL注入漏洞是什么至此,我們已將整個漏洞分析完了。實際上,上面的 switch 結構中,3種情況返回的數據都有可能造成 SQL 注入漏洞,但是在觀察 ThinkPHP 官方的修復代碼中,發現其只對 incdec 進行了修復,而對于 exp 的情況并未處理,這是為什么呢?實際上, exp 的情況早在傳入 insert 方法前就被 ThinkPHP 內置過濾方法給處理了,如果數據中存在 exp ,則會被替換成 exp空格 ,這也是為什么 ThinkPHP 官方沒有對 exp 的情況進行處理的原因了。具體內置過濾方法的代碼如下:ThinkPHP5中的SQL注入漏洞是什么

漏洞修復

ThinkPHP5中的SQL注入漏洞是什么

攻擊總結

最后,再通過一張攻擊流程圖來回顧整個攻擊過程。ThinkPHP5中的SQL注入漏洞是什么

看完上述內容,你們對ThinkPHP5中的SQL注入漏洞是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁波市| 哈巴河县| 临武县| 呼图壁县| 黄龙县| 肃南| 云浮市| 庄河市| 陆河县| 福清市| 冀州市| 肥西县| 双牌县| 马龙县| 台东市| 东丰县| 双鸭山市| 盐亭县| 黑龙江省| 布拖县| 乌鲁木齐市| 喀什市| 南郑县| 辉县市| 同江市| 闸北区| 当雄县| 监利县| 富裕县| 宜良县| 阳新县| 安化县| 车险| 安义县| 兰溪市| 木兰县| 玉环县| 云林县| 宁国市| 琼结县| 西藏|