當前位置:
首頁 > 新聞 > Phpcms v9漏洞分析

Phpcms v9漏洞分析

最近研究源碼審計相關知識,會抓起以前開源的CMS漏洞進行研究,昨天偶然看見了這個PHPCMS的漏洞,就準備分析研究一番,最開始本來想直接從源頭對代碼進行靜態分析,但是發現本身對PHPCMS架構不是很熟悉,導致很難定位代碼的位置,最後就採用動態調試&靜態分析的方式對漏洞的觸發進行分析,下面進入正題。




1、漏洞觸發代碼定位


通過漏洞的POC(

/phpcms/index.php?m=member&c=index&a=register&siteid=1

)判斷,漏洞觸發點的入口位於/phpcms/modules/member/index.php文件中的register()方法中,在代碼中插入一些echo函數,觀察輸出(見下)的變化。從下面的結果變化可知,img標籤的src屬性是在執行完下面的get()函數:



$user_model_info = $member_input->get($_POST["info"])


後發生變化,因此基本可以確定,漏洞的觸發點就是位於這個函數中。





2、定位member_input->get()跟進分析


跟進該函數,該函數位於/phpcms/modules/member/fields/member_input.class.php文件中,此處本來還想故技重施,在該方法中對代碼進行插樁,但是發現插樁後的居然無法列印到頁面上,沒轍(原因望各位大神指點一二),只能對代碼進行一行行推敲,先把代碼貼上,方便分析:




代碼整體比較容易,可能比較難理解的就是$this->fields這個參數,這個參數是初始化類member_input是插入的,這個參數分析起來比較繁瑣,主要是對PHPCMS架構不熟,那就在此走點捷徑吧,在1中,直接將初始化完成後的member_input類dump出來

,效果還不錯,所有的參數都dump到頁面上了,下面主要摘取比較重要的$this->fields[$field],即:【$this->fields["content"]】這個參數,如下所示??:







有了上面的參數列表後,理解get()函數的代碼就要輕鬆許多了,分析過程略。結論就是,漏洞的觸發函數在倒數6、7兩行,單獨截個圖,如下??:


這裡比較重要的是要找出$func這個函數,查查上面的表,找到["formtype"]=>string(6) 「editor」,可知$func就是editor()函數,editor函數傳入的參數就是上面列出的一長串字元串,和img標籤的內容,下面將跟進editor函數,真相好像馬上就要大白於天下了。




3、跟進editor函數及後續函數


editor()函數位於/phpcms/modules/member/fields/editor/imput.inc.php文件中,老規矩,先貼出代碼:


簡單閱讀代碼,發現實際的觸發流程發生在$this->attachment->download()函數中,直接跟進這個函數,這個函數位於/phpcms/libs/classes/attachment.class.php中download()函數,源代碼有點長,就貼一些關鍵代碼,??



代碼主要是進行一些正則過濾等等操作,這裡真正關鍵的是代碼的最後一行的操作$upload_func($file, $newfile),其中$this->upload_func = 『copy』;,寫的在明白點就是copy(

$file, $newfile

),漏洞就是一個copy操作造成的。


*本文作者:nightmarelee,轉載請註明來自Freebuf.COM



喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

Arduino+Avr libc製作Badusb原理及示例講解 | 長文含視頻
揭秘HTTPS中 S 的另一面
驗證碼安全那些事
最具同情心的勒索軟體套件Philadelphia
【漏洞預警】Linux內核ipv4/udp.c 遠程任意代碼執行(CVE-2016-10229)

TAG:FreeBuf |

您可能感興趣

ISPsystem漏洞分析
詳細分析Apache Struts RCE漏洞及攻擊事件
Apache Struts遠程代碼執行漏洞分析
Apache已修復Apache Tomcat中的高危漏洞
Glibc堆漏洞利用基礎-深入理解ptmalloc2 part1
Microsoft Exchange Server 內存破壞漏洞
Microsoft Exchange任意用戶偽造漏洞分析
Microsoft Windows CVE-2018-1040漏洞分析
MySQL mmm_agent遠程代碼注入漏洞分析
iOS 12.1.4還包括一個Live Photos漏洞修復
Chrome 0day漏洞:不要用Chrome查看pdf文件
360發現的Flash Player漏洞已被Adobe官方修復
Intel官方對5月15號曝出的CPU側信道漏洞「ZombieLoad」的詳細技術分析(上)
iOS/Android 漏洞:數以萬計App受影響!
WebKit漏洞影響最新版Apple Safari
Linux中create_elf_tables函數整型溢出漏洞分析(CVE-2018-14634)
研究人員公開新CPU漏洞Spectre 1.1和Spectre 1.2
看我如何發現Facebook安卓APP的$8500美金Webview漏洞
深入分析Microsoft Outlook漏洞CVE-2018-8587
繞過nftables/PacketFilter防火牆過濾規則傳輸ICMP/ICMPv6數據包的漏洞詳解(上)