2013年7月21日 星期日

HITCON 2013 Wargame - Pwn3d 500 詳解


之前在 tw.PyCon.org 2013 上有分享到 Django 在 SECRE_KEY 洩漏的情況有機會造成 Remote Code Execution

這個 Pwn3d 500 就是那次演講的實例
(演講投影片在 http://orange-tw.blogspot.tw/2013/05/pycon2013-slide-django.html)



Django 有個可愛的 feature 叫做 Signed Cookie

Signed Cookie 實作上是透過 Pickle 物件去儲存 Python 中的 Object 並使用 SECRE_KEY 用 sha1 + hmac 去做出 signature 判斷 COOKIE 有沒有被偽造

Django Apps 的 source code 在 Guthub 上

相對的 solution 如下



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

2013年7月19日 星期五

0-Day 輕鬆談 (0-Day Easy Talk) - Happy Fuzzing Internet Explorer


這是我在台灣駭客年會 Hacks in Taiwan HITCON 2013 的演講

#

0-Day 怎麼來? 
Fuzzing 做為一種尋找漏洞的方式,讓你連躺著都有 0-Day 進帳。

這是一場輕鬆的演講, 
分享一些 Fuzzer 的設計、Fuzzing 上的心得、Fuzzing Internet Explorer 上的方向。

最後為本次 HITCON 揭露一個未公開的 0-Day。

#