PHP 5.2.13漏洞(CVE-2010-0554)是一種遠(yuǎn)程代碼執(zhí)行(RCE)漏洞,可通過反序列化攻擊手段在PHP應(yīng)用中進(jìn)行解包和組包的過程中攻擊到系統(tǒng)環(huán)境,進(jìn)而導(dǎo)致系統(tǒng)崩潰和代碼執(zhí)行失控的問題。此漏洞主要影響運行PHP 5.2.6至5.2.13版本的Web應(yīng)用程序,包括PHP自帶的序列化函數(shù)及其的文件handle.c。此漏洞的有效利用將導(dǎo)致入侵者完全控制受影響的系統(tǒng),包括潛在的敏感信息泄露。
以下是一些常見的反序列化導(dǎo)致的攻擊場景:
1、類屬性的反序列化注入攻擊
$object = unserialize($_GET['object']);
$object->function();
攻擊者構(gòu)造特定的樣本串(buffer):[00]表示屬性,[01]表示對象結(jié)束。在反序列化時匹配到屬性時,開辟一塊內(nèi)存并拷貝字節(jié)序列,最終可以對反序列化后的類進(jìn)行注入。
2、利用unserialize()中引用的遞歸特性
我們創(chuàng)建兩個類,父類和子類,子類繼承父類,其屬性是Object,可以反序列化。
class parent
{
public $obj;
public function __wakeup(){
echo "AAAAAAAA\n";
}
}
class child extends parent
{
}
$obj1 = new child;
$obj1->obj = new parent;
$obj1->obj->obj = &$obj1->obj;
$ser = serialize($obj1);
攻擊者可以在樣本串(buffer)中插入循環(huán)引用,就會出現(xiàn)溢出。
3、使用register_shutdown_function()函數(shù)
當(dāng)PHP解釋器完成后執(zhí)行了所有流程,但腳本還沒有退出的時候,PHP會執(zhí)行一些額外的任務(wù)。其中一個就是執(zhí)行register_shutdown_function()函數(shù)。攻擊者可以通過自己實現(xiàn)這個函數(shù),來達(dá)到攻擊的效果。
function __destruct(){
//故意制造錯誤
$msg = "剛輸完密碼就掛掉";
error_log($msg);
}
下一篇css3 選擇框