dedecms變量覆蓋漏洞的猥瑣利用方法

最近的那個dedecms變量覆蓋漏洞,最后可以控制全局變量,但不能完全控制

 

注意這里是遞加的,是在已初始化的全局變量內容上再遞加內容。

現在已公開的漏洞利用方法是控制cfg_dbprefix全局變量里的數據庫表前綴,然后再用ExecuteNoneQuery2點進行SQL注 入。不過這個點只能update,要直接GET WEBSHELL,需要mytag表中已經有記錄,再update normbody字段的內容,利用dedecms的緩存機制GET WEBSHELL。如果dedecms默認這個表是空的,或者緩存已經生成過占了坑,就沒辦法GET WEBSHELL了!

除開這個方法,還有另外一個利用方法,假設原有程序的全局變量是$GLOBALS[‘cfg_dbhost’]= ‘locahost’,變量內容是遞加,那么我們能控制cfg_dbhost為locahost.80sec.com,把原有的cfg_dbhost變成 連向我們的子域名locahost.80sec.com。

類似:

 

不過這個要大規模利用,成本就有稍微點高了:

1.需要一臺泛解析域名的服務器

弄成泛解析域名是為了能大規模自動化攻擊,可以讓程序連任意的子域名*.xx.com,都能反連到我們的mysql。

2.需要patch mysql

可以修改一下mysql源代碼,整成任意用戶名和密碼都能登陸,類似于cve-2012-2122那個漏洞的效果。

再讓數據庫怎么連怎么查都強制返回dedecms mytag表中含有PHP代碼的記錄,這個就需要修改源代碼里的 mysql_query函數了。

本文作者 rayh4c 由網絡安全攻防研究室(www.szcgpp.com)信息安全小組收集整理,轉載請注明出處。