關於“PHP彩蛋”的說法也許很多老PHPer已經都知道或聽說了,好像是早在PHP4版本的時候就有彩蛋了,挺好玩兒的,可能近年來逐漸被人們遺忘了,其實彩蛋功能在PHP指令碼引擎預設情況下是開啟。
寫個phpinfo();然後訪問,再加上以下的GET值即可查閱
下面就用Discuz官方論壇做一下測試:
http://www.discuz.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
http://www.discuz.net/?=PHPE9568F35-D428-11d2-A769-00AA001ACF42
http://www.discuz.net/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
http://www.discuz.net/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
如上4個連結加紅色的部分是PHP源碼/ext/standard/info.h中定義的GUID值,如下圖所示
關於PHP彩蛋這個玩法已經被國外的某些Web漏洞掃描器(例如:HP WebInspect)所使用了,用其來探測被掃描的網站使用的是何種Web開發語言。其實在滲透測試過程中經常遇見某些網站難以辨別出使用了何種Web開發語言,因為有些網站採用動態指令碼產生純靜態HTML頁或者是採用URL重寫實現偽靜態頁面,如果網站使用的是PHP開發的話,可以嘗試使用彩蛋的探測法,在很多情況下可以一針見血的評鑑出來,因為預設情況下彩蛋的功能在php.ini中是開啟的,當然如果不想讓別人通過彩蛋的方式來擷取網站的敏感資訊的話,那就在php.ini中將expose_php = Off即可!
看完上面這些可能有些人會說既然php.ini中的expose_php = On,那麼直接抓包看看http頭資訊不就OK了,可是某些大網站Web伺服器的前面都是有反向 Proxy伺服器的,所以還不能完全依賴於捕獲http頭中的資訊。