CVE-2016-7124漏洞復現


CVE-2016-7124漏洞復現

__wakeup()魔術方法繞過

實驗環境

操作機:Windows 10

服務器:apache 2.4

數據庫:mysql 5.0

PHP版本:5.5

漏洞影響版本:

PHP5 < 5.6.25

PHP7 < 7.0.10

漏洞產生原因:

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

漏洞復現

編寫測試腳本

Test1.php

 

 

 

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

訪問test1.php

根據代碼可以看出反序列化之前先調用了__wakeup 方法,再調用_destruct 方法。

 

將傳入的序列化數據的對象變量個數由1更改為2,頁面只執行了__destruct方法,而且輸出name屬性時報錯,是由於反序列化數據時失敗無法創建對象。

 

 

 

漏洞利用

更改測試代碼

test.php

 

 

 

其中 __destruct方法在調用時將name參數寫入wcute.php文件但是由於__wakeup方法清除了對象屬性,所以在調用__destruct時已經沒有了name屬性,因此文件將會寫入失敗。

 

 

 

將對象屬性個數改為2繼續嘗試,成功繞過__wakeup方法執行,將代碼寫入文件

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM