網安干貨 | PHP反序列化基礎利用鏈
一、準備漏洞代碼
二、 準備POC代碼
將上述POC進行簡化:
三、執(zhí)行漏洞利用

四、變量存在訪問修飾符的利用
1、為漏洞代碼添加修飾符
2、構造存在修飾符的POC
3、事實上的輸出

上述輸出中包含了多個不可見字符,即%00字符,所以需要使用URL轉碼使用。
4、進行URL轉碼后利用
(1)修改uspoc.php中輸出反序列化字符串的代碼為:
(2)在瀏覽器中訪問usdemo.php并傳參為:
http://192.168.112.188/security/unserial/usdemo.php?code=O%3A5%3A%22Woniu%22%3A1%3A%7Bs%3A4%3A%22%00%2A%00a%22%3BO%3A3%3A%22Vul%22%3A1%3A%7Bs%3A9%3A%22%00Vul%00data%22%3Bs%3A10%3A%22phpinfo%28%29%3B%22%3B%7D%7D
五、反序列化的常用手段
1、反序列化的常見起點:
(1)__wakeup 一定會調用
(2)__destruct 一定會調用
(3)__toString 當一個對象被反序列化后又被當做字符串使用
2、反序列化的常見中間跳板:
(1)__toString 當一個對象被當做字符串使用
(2)__get 讀取不可訪問或不存在屬性時被調用
(3)__set 當給不可訪問或不存在屬性賦值時被調用
(4)__isset 對不可訪問或不存在的屬性調用isset()或empty()時被調用,形如$this->$func();
(5)__call 調用不可訪問或不存在的方法時被調用
3、反序列化的常見終點:
(1)call_user_func 一般php代碼執(zhí)行都會選擇這里
(2)call_user_func_array 一般php代碼執(zhí)行都會選擇這里
(3)執(zhí)行指令、文件操作、執(zhí)行代碼等敏感操作
4、常用的函數(shù)調用方式
標簽: