2013年7月21日 星期日

HITCON 2013 Wargame - Web 500 詳解


Web 500 是一題 PHP source code review 找 vuln 的題目




















scahll.phps







其實考的滿簡單的,如果對 PHP Sec 有概念的話直覺會想到 unserialize 的 object inj

利用 object inj 覆蓋 magic method(__destruct) 的 key_var 變量

繞過 md5() == '' 可以用
checksum[]=bla

繞過 safe 函數的話我不小心少寫一個 byte 所以可以用 s 大小寫置換來繞過,

不過我既然題目都已經出來了就算了XD 給你們簡單解吧!



原本繞過的方式是利用 PHP 對於 unserialize 實作的不一致來繞過

O:3:"qoo":1:{s:7:"key_var"ts:3:"Key";}


注意的 ts:3 這樣的形式 PHP unserialize 是可以接受的,有多少人是這樣解的給我說說看XDDD


這個問題有在 2012 年 12 月底的時候 ipb 漏洞出來被人探討過,

Invision Power Board 是一款滿流行的 PHP 討論版,由於在程式碼實作上會用到 unserialize

所以 ipb 寫了一個 check function 去檢查 unserialize 是否為惡意的

但由於 PHP 對 unserialize  上的實作缺陷,讓 check function 可被繞過(這點 PHP 後來有做 bug fix掉了(待確認中))

詳細細節可參考 80vul 寫的文章

http://www.80vul.com/pch/pch-010.txt

沒有留言:

張貼留言