phpBB <= 2.0.17
2005-12-30 03:33
phpBB 是一套使用很廣的討論區系統 , 使用 php + mysql
但近一兩年來連續爆出了許多 High Risk 的大漏洞 ,
例如以下這個 vulnerability 是 phpBB 版本 <= 2.0.17 , 且 php < 5.0.5 , register_global = On ,
可使遠端使用者執行任意的程式碼.
關鍵在 includes/usercp_register.php 這個檔裡面
有一行
$signature = ($signature_bbcode_uid != '') ? preg_replace("/:(([a-z0-9]+:)?)$signature_bbcode_uid(=|\])/si", '\\3', $userdata['user_sig']) : $userdata['user_sig'];
所以如果讓 $signature_bbcode_uid = ‘(.+)/e' , 就可以執行 $userdata['user_sig'] 中的指令了.
但一般狀況下是無法自行修改 $signature_bbcode_uid 的值的 ,
因此需要 server 端的 register_global = On ,
然後在註冊帳號時透過 profile.php?GLOBALS[signature_bbcode_uid]=(.%2B)/e%00 的方式帶進去.
因此也需要 php 5 以上.
Patch :
比較了一下 phpBB 2.0.17 及 2.0.18 , 發現官方版本的做法是直接在 common.php 中
新增以下的 code 來防止透過 GLOBALS 將參數帶入 .
// Protect against GLOBALS tricks
if (isset($HTTP_POST_VARS['GLOBALS']) || isset($HTTP_POST_FILES['GLOBALS']) || isset($HTTP_GET_VARS['GLOBALS']) || isset($HTTP_COOKIE_VARS['GLOBALS']))
{
die("Hacking attempt");
}
// Protect against HTTP_SESSION_VARS tricks
if (isset($HTTP_SESSION_VARS) && !is_array($HTTP_SESSION_VARS))
{
die("Hacking attempt");
}
Reference :
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-3310
phpBB <= 2.0.10shoutcast <= 1.9.4 Format String Vulnerability
新增留言
Trackback this post | 訂閱這則留言的 RSS Feed