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