natas33
__destruct() 時會呼叫 passthru() 串接檔名來執行指令
CHA.php
vim 或加上 -d 變更成 phar.readonly=Off,構造並生成惡意的 CHA.phar
CHA.phar,同樣使用 Proxy 攔截並修改檔案名稱
phar://CHA.phar
phar:// 觸發,使 md5_file() 操作檔案時將 Phar 的序列化資料反序列化,變更 $signature = True 藉此忽略 MD5sum 的檢查,並由 $filename = 'CHA.php' 修改成執行第一次上傳的 PHP 腳本獲取密碼檔案.phar 中相同即可,而最後上傳的檔案可以將檔名改成 phar://CHA.phar/CHA.php 或者 phar://CHA.phar/CHA 等filesize()
move_uploaded_file()
chdir()
md5_file()
phar://