1. 程式人生 > >Maccms8.x 命令執行分析

Maccms8.x 命令執行分析

在很多地方看到有這個漏洞,自己學著分析一下。看到的poc如下

Url:  http://127.0.0.1/index.php?m=vod-search

POST:  wd={{page:lang}if-:p{page:lang}hpinfo()}a{endif-}}

在index.php這裡主要是進行模板的路由規則替換,vod-search就會拆分成vodsearch,然後載入vod.php

下面動態除錯可以看更清晰的結果,箭頭指向的為載入那個vod檔案:


去到inc\module\vod.php檔案下面,提交的wd首先會經過sql的檢測:


Chksql檢查是否存在sql注入,不礙事,往下看這幾行:可看到wd就是我們傳進來的poc,在這裡wd進行了賦值:


再賦值給$valarr,然後進行str_replace直接替換了{page:lang},然後寫入模板檔案:



經過replace,$tpl->H有些內容變成了{if-:phpinfo()}a{endif-}}



然後我們回到index.php檔案那裡,往下走,可以看到ifex()方法:



在inc\common\template.php 裡面可以看到 ifex() 方法,可以看到進行了一個正則匹配,然後再進行正則內容的迴圈獲取:


從下面的圖中可以看到,$strif已經變成phpinfo():


經過兩次if,else判斷,去到1041行,由於上面的$strif沒有進行過濾,直接就eval了,所以造成了傳入的php程式碼執行了:



寫得囉嗦了點,主要是學著用phpstorm進行程式碼的除錯。


參考:

https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=23026