?

Aug 10 2016

preg_replace引發的phpmyadmin(4.3.0-4.6.2)命令執行漏洞

首頁 » 漏洞收集 » preg_replace引發的phpmyadmin(4.3.0-4.6.2)命令執行漏洞   

天融信阿爾法實驗室 李喆

這里拿cve-2016-5734講講preg_replace引發的命令執行漏洞,漏洞在exploit-db上有利用腳本,經過測試沒有問題。這里對這個漏洞進行一下回溯跟蹤來解釋下preg_replace這個正則替換函數帶來的問題。

0×01 漏洞觸發原理

preg_replace漏洞觸發有兩個前提:

01:第一個參數需要e標識符,有了它可以執行第二個參數的命令

02:第一個參數需要在第三個參數中的中有匹配,不然echo會返回第三個參數而不執行命令,舉個例子:

 

0×02 觸發漏洞位置回溯

cve-2016-5734的漏洞問題出現在TableSearch.class.php中的_getRegexReplaceRows函數,讓我們看看這個函數:

1-my[1]

 

$find ,和 $replaceWith可以看到在preg_replace中被引用,讓我們回溯這兩個變量,在getReplacePreview中有調用_getRegexReplaceRows函數

2-my[1]

 

繼續回溯,在tbl_find_replace中有調用getReplacePreview,同時參數是post傳入,下面讓我們看看如何利用構造

3-muy[1]

 

0×03構造利用

漏洞利用思路:這個漏洞目前沒法直接利用,因為有token限制,需要登陸抓到token,同時需要構造第三個參數保證和第一個參數匹配上,第一個參數可控,但是第三個參數是從數據庫中取出的,所以只能提前插入到數據庫中,然后再取出來,columnIndex是取出字段值的可控,所以第三個參數也可控了。

 

流程大概走了一圈,下面看看怎么構造,首先這個漏洞需要有創建表插入字段權限的賬號,這里直接用的root賬號測試的,先創建個表,然后表中插入個字段值為“0/e”

4-my[1]

 

所以利用構造大概就是這樣

 

組合后是這樣//preg_replace(‘/0/e’,’phpinfo()’,’0/e‘);,這樣漏洞就構造好了。

總結:這個pre_replace引發的漏洞在4.3.0和5.4.6中能觸發,4.7后就不行了。phpmyadmin在4.6.3中修復了這個漏洞,所以要盡快升級。

正文部分到此結束

文章標簽:這篇文章木有標簽

版權聲明:若無特殊注明,本文皆為( mOon )原創,轉載請保留文章出處。

也許喜歡: «cmseasy前臺無需登錄直接獲取敏感數據的SQL注入(有POC證明) | HEIST攻擊:從HTTPS加密數據中獲取明文»

你腫么看?

你還可以輸入 250/250 個字

? 微笑 大笑 拽 大哭 親親 流汗 噴血 奸笑 囧 不爽 暈 示愛 害羞 吃驚 驚嘆 愛你 嚇死了 呵呵

評論信息框

這篇文章還沒有收到評論,趕緊來搶沙發吧~

?
?
河北11选5开奖