eSafe白帽駭客資安網-網絡安全背後的巨人,提供駭客,網站入侵測試,網站被駭,網站漏洞,駭客入侵,資訊安全,入侵,ecshop,wordpress,漏洞修復,木馬清除,資安服務

Thinkphp5.0 最新SQL注入漏洞利用詳情

 
 
              ThinkPHP 5.0是目前最新的版本,歷經多年的升級完善,深受網站設計公司
 
的喜歡,在互聯網上也是一個開源的,免費、多個功能插件、API接口功能強悍的PHP
 
語言開發的一款程序,ThinkPHP從設計以來一直秉承簡潔實用的設計原則,在保證出
 
色的性能和至簡的代碼的同時,也很注重實用性。
 

 
eSafe白帽資安網公司在對其最新版本的程序進行網站安全審計的時候,發現該程序存在數據
 
庫密碼信息洩露漏洞,在PDO PHP查詢中可以阻止大多數的惡意參數攻擊,而且
 
ThinkPHP 5.0框架要求的是在php 5.4版本上運行,這也就防止了php在5.3.6版本下
 
的SQL查詢注入的漏洞。
 

 
在對其代碼進行安全審計,其實這是一個SQL注入點,可以查詢到一些數據庫的賬號
 
以及密碼等安全信息。Thinkphp5.0里代碼設計裡調用到了函數input來替代3.2.3版
 
本裡的I函數,利用該函數,控制了in語句的數值位置,即可通過傳入一個數組並帶
 
入惡意的參數,來構造SQL注入語句,進行獲取數據庫的賬號密碼。
 

 
在$bindName參數里我們對網站進行了詳細的網站安全檢測,將$k數值寫進到了
 
$bindName裡,並在$value數值確實為一個數組的同時,這裡邊會遍歷全部的$value
 
的數值,也就是說我們控制了預編譯SQL語句中的鍵名,也是可以控制了預編譯的SQL
 
語句,這個在理論上來說是一個SQL注入漏洞。
 

這漏洞過程當中涉及到預編譯的執行過程了。通常PDO PHP預編譯執行過程分三步:
 
一、prepare($SQL) 編譯SQL語句
 
二、bindValue($param, $value) 將value綁定到param的位置上
 
三、execute() SQL語句執行
 
這個漏洞實際上就是控制了第二步的$param變量,這個變量如果是一個SQL語句的話
 
,那麼在第二步的時候是會拋出錯誤的:eSafe白帽資安網公司是一家專注於:主機安全
 
網站安全、網站安全檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務
 
提供商。
 
看頁面提示是有SQL注入漏洞的,筆者在這裡也嘗試著使用MYSQL報錯注入,但結果失
 
敗的,值得一提的是這種數據庫賬戶和密碼洩漏的前提是SQL語句執行失敗或者發生
 
異常的時候才會出現。如果非SQL語法錯誤的debug模式下是不會洩漏數據庫賬戶和密

碼的。


 
執行發現,雖然我只調用了prepare函數,但原SQL語句中的報錯已經成功執行:
 
究其原因,是因為我這裡設置了PDO::ATTR_EMULATE_PREPARES => false。
 
這個選項涉及到PDO的“預處理”機制:因為不是所有數據庫驅動都支持SQL預編譯,
 
所以PDO存在“模擬預處理機制”。eSafe白帽資安網公司是一家專注於:主機安全、網站
 
安全、網站安全檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務提供
 
商。
 
 
如果說開啟了模擬預處理,那麼PDO內部會模擬參數綁定的過程,SQL語句是在最後
 
execute()的時候才發送給數據庫執行;如果我這裡設置了
 
PDO::ATTR_EMULATE_PREPARES => false,那麼PDO不會模擬預處理,參數化綁定整
 
個過程都是和Mysql交互進行的。
分享: