发新话题
打印

[原创]BBSXP再暴惊天漏洞

[原创]BBSXP再暴惊天漏洞

文章作者:光芒果
信息来源:邪恶八进制信息安全团队

注意:次文章已经投稿《黑客防线》

说起来我与BBSXP还算蛮有缘的,因为我第一次建网站用的就是BBSXP3.0,此后又一直用到了4.1,只不过因为种种原因后来不用了(绝非安全因素,那时我对网络安全还是一窍不通,呵呵)。近日看到了许多文章都是讲BBSXP的漏洞的,从最早的“编辑贴子”处的Cookies欺骗到最新的搜索页面的注入攻击,BBSXP可谓是千疮百孔。于是我又想起了我的老朋友--BBSXP。在yuzi的授权下我于大年三十夜在访网站对最新的BBSXP做了一次安全检测。
现在官方用的是BBSXP5.15,而公布出来的程序最新的似乎是5.13,估计是5.15还在测试中的版本吧。但既然是yuzi授权的,问一个5.15的程序自然也非难事。拿到5.15的程序后,我 就翻看了几个已知漏洞的文件代码,好像都补上了,我只好从其他地方入手了。翻到blog.asp这个文时,我发现了如下代码:

<!-- #include file="setup.asp" --><%

username=HTMLEncode(Request("username"))
id=HTMLEncode(Request("id"))

top

if id<>"" then
sql="select * from [calendar] where id="&id&" order by id Desc"
else
sql="select * from [calendar] where (hide=0 or username=&#39;"&Request.Cookies("username")&"&#39;) and username=&#39;"&username&"&#39; order by id Desc"
end if

rs.Open sql,Conn,1

if rs.eof then error("<li>该用户暂时没有任何日志")

%>
<table class="a2" cellSpacing="1" cellPadding="4" width="97%" align="center" border="0">
     <tr class="a3">
          <td colSpan="2">
          <table cellSpacing="0" cellPadding="0" width="100%" border="0" id="table2">
              <tr>
                   <td height="18"> <img src="images/Forum_nav.gif">  <%ClubTree%> → <a href="calendar.asp">社区日志</a> → <span id=title><a href="blog.asp">网络日志</a></span></td>
                   <td align="right" height="18">
                   <img src="images/jt.gif"> <a href=calendar.asp?menu=newcalendar>发表日志</a></td>
              </tr>
          </table>
          </td>
     </tr>
</table>

<br>
<table border="0" width="97%" align="center">
     <tr>
          <td align="center">
          <table class="a2" style="WIDTH:100%" height="100%" cellspacing="1" cellpadding="3" border="0" id="table5">
              <tr>
                   <td class="a1" align="middle" height="25"><b>网络日志</b></td>
              </tr>
              <tr align="middle">
                   <td bgcolor="#ffffff" align="left" height="100">
<%




pagesetup=10 &#39;设定每页的显示数量
rs.pagesize=pagesetup
TotalPage=rs.pagecount  &#39;总页数
PageCount = cint(Request.QueryString("ToPage"))
if PageCount <1 then PageCount = 1
if PageCount > TotalPage then PageCount = TotalPage
if TotalPage>0 then rs.absolutepage=PageCount &#39;跳转到指定页数
i=0
Do While Not RS.EOF and i<pagesetup
i=i+1
username=rs("username")
content=rs("content")

if id="" then
content=ReplaceText(content,"<[^>]*>","")
if len(content)>200 then content=left(""&content&"",200)&"..."
end if


%>
                   <table border="0" width="100%" cellspacing="10">
                        <tr>
                            <td>
                            <b><font size="4"><%=rs("title")%></font></b><br>
                            <br><%=content%>
<%if rs("hide")=1 then%><br><br>注:<font color="#FF0000">本篇日志为隐藏状态</font><%end if%>
<hr>
<%if id="" then%>
<a href="?id=<%=rs("id")%>">阅读全文</a>
<%else%>
<font color="#C0C0C0">阅读全文</font>
<%end if%>
|
<%if Request.Cookies("username")=username then%>
<a href="calendar.asp?menu=newcalendar&id=<%=rs("id")%>">编辑</a>
<%else%>
<font color="#C0C0C0">编辑</font>
<%end if%>
|
<%if username= Request.Cookies("username") or membercode > 3 then%>
<a href="calendar.asp?menu=del&id=<%=rs("id")%>" onclick="checkclick(&#39;您确定要删除此条日志?&#39;)">删除</a>
<%else%>
<font color="#C0C0C0">删除</font>
<%end if%>
| <%=rs("addtime")%> by <a href="Profile.asp?username=<%=username%>"><%=username%></a></td>
                        </tr>
                   </table>
<%
RS.MoveNext
loop

RS.Close  
%>
                   </td>
              </tr>
          </table>
          <p><b>[<script>ShowPage(<%=TotalPage%>,<%=PageCount%>,"username=<%=username%>")</script>]</b></p>
          </td>
          <td width="200" align="right" valign="top">
          <table class="a2" style="WIDTH:95%" cellspacing="1" cellpadding="3" border="0">
              <tr class="a1">
                   <td align="middle" height="25"><b>档案文件</b></td>
              </tr>
              <tr align="middle">
                   <td bgcolor="#ffffff">
<%
sql="select * from [user] where username=&#39;"&username&"&#39;"
Set Rs=Conn.Execute(sql)

select case rs("sex")
case "male"
sex="男"
case "female"
sex="女"
end select

if rs("birthday")<>"" then birthyear=year(now)-split(rs("birthday"),"-")(0)

userphoto=rs("userphoto")
UserInfo=split(rs("UserInfo"),"\")
realname=UserInfo(0)
country=UserInfo(1)
province=UserInfo(2)
city=UserInfo(3)
postcode=UserInfo(4)
blood=UserInfo(5)
belief=UserInfo(6)
occupation=UserInfo(7)
marital=UserInfo(8)
education=UserInfo(9)
college=UserInfo(10)
address=UserInfo(11)
phone=UserInfo(12)
character=UserInfo(13)
personal=UserInfo(14)
rs.close
%>
<script>
if("<%=userphoto%>"!=""){
document.write("<a target=_blank href=<%=userphoto%>><img src=<%=userphoto%> border=0 width=150></a>")
}
</script>
                   <table cellspacing="2" cellpadding="2" width="100%" border="0">
                        <tr>
                            <td valign="top">姓名:</td>
                            <td width="120" ><%=username%></td>
                        </tr>
                        <tr>
                            <td valign="top">年龄:</td>
                            <td width="120"><%=birthyear%>
                            </td>
                        </tr>
                        <tr>
                            <td valign="top">性别:</td>
                            <td width="120"><%=sex%></td>
                        </tr>
                        <tr>
                            <td valign="top">职业:</td>
                            <td width="120"><%=occupation%></td>
                        </tr>
                        <tr>
                            <td valign="top"><font class="bold">位置:</font></td>
                            <td width="120"><%=country%><br>
                            <%=province%><br>
                            <%=city%></td>
                        </tr>
                        <tr>
                            <td colspan="2"><%=personal%></td>
                        </tr>
                   </table>
                   </td>
              </tr>
              <tr align="middle">
                   <td bgcolor="#ffffff" align="right">
                   <a href="Profile.asp?username=<%=username%>">查看档案文件详细信息</a></td>
              </tr>
          </table>
          <br>
          <table class="a2" style="WIDTH:95%" cellspacing="1" cellpadding="3" border="0">
              <tr>
                   <td class="a1" align="middle" height="25"><b>以往公开日志</b></td>
              </tr>
              <tr bgcolor="#ffffff">
                   <td>
<%
sql="select top 10 * from [calendar] where hide=0 and username=&#39;"&username&"&#39; order by id Desc"

Set Rs=Conn.Execute(sql)
Do While Not RS.EOF
%><li><a href=?id=<%=rs("id")%>><%=rs("title")%></a> (<%=rs("adddate")%>)</li><%
RS.MoveNext
loop
RS.Close  
%>
</td></tr>
          </table>
           </td>
     </tr>
</table>

<script>title.innerHTML=&#39;<a href="blog.asp?username=<%=username%>">“<%=username%>”网络日志</a>&#39;</script>

<%

htmlend
%>

好家伙,什么都没过滤啊!我赶紧到官方测试了一下。这个文件是BBSXP中自带的博客(wtf:BBSXP中还有博客?看来功能还挺全。但安全性就……)。随便打开一篇用户的日记,在后边加了个单引号,返回如图1所示页面。然后我又用1=1和1=2测试,分别返回如图2、3所示页面。太好了,可以注入。马上拿出NBSI2,填入注入地址,不一会数据库信息就出来了(图4),可惜只是db_ower权限,没关系,我们来跑用户名和密码吧,于是我就去猜解,但不知为什么,总是提示“发生意外错误”无法猜解(图5),可能是官方配置比较好吧。不管他了,反正是检测而矣,我才懒得用手动去猜呢。
本来到这里已是收获不小了 ,可我还想找出其他漏洞,不过这一行行的代码看下去太头疼,还是自己慢慢用手动来试吧。果然,检测到http://bbs.yuzi.net/favorites.asp?menu=delweb&id=xx 这个url时,我又发现了一个小小的惊喜.这里虽然不能注入,但似乎可以删除任意用户的收藏,而且页面一直在不停地循环。但后来我把这个洞告诉yuzi时他却说这里虽提s示删除成功其实并没有删除(最搞笑的是我直接把 http://bbs.yuzi.net/favorites.asp?menu=delweb&id=xx这个url给他时他还真直接去访问这个地址,而没有把xx改为数字,还跟我说这没问题,我晕绝),事实是否如此我也没有去具体看过了,但页面一直循环至少可以dos吧?
  好了,再过几个小时就是鸡年了,大过年的,别玩得太过了,给自己和yuzi都休息一下吗,呵。,但大家可要注意了,我做的一切都是经过yuzi授权的,大家可不要自己乱搞,否则进了班房可别怪我。不过话又说回来,我检测完就把漏洞和补救方法告诉了yuzi,这篇文章发出来恐怕也要个把月后了,如果yuzi还没补上也怪不得我了。如果大家还有什么问题就到我朋友的小站http://www.shouzai.net/bbs讨论吧。

附件是图文PDF:

附件

BBSXP再暴惊天漏洞.rar (445 KB)

2005-5-7 15:57, 下载次数: 79

select girl from Guilin where age='18-20' and bg='beautiful'--

TOP

好象以前在黑客防线上看过,呵呵,楼主是广西贺州的?
BLOG: http://blog.csdn.net/hkbyest

TOP

引用:
下面是引用evilbogy于05-07-2005 17:35发表的:
好象以前在黑客防线上看过,呵呵,楼主是广西贺州的?
那家伙是贺州的

他骗稿费的手段不是一般的高哦
做事不能三心二意 已离开安全界

TOP

我是投过给黑防,但好像没要啊!漏洞是我首发的,但因为是授权的安全检测,我不敢写的太详细,黑防那个是类似的文章,勇哥写的,比较详细。WTF就要他的咯,不过yuzi在漏洞没公布前都没把官方补好,我算是白检测了,晕。
select girl from Guilin where age='18-20' and bg='beautiful'--

TOP

引用:
下面是引用evilbogy于05-07-2005 17:35发表的:
好象以前在黑客防线上看过,呵呵,楼主是广西贺州的?
干什么公布出来啊??死猫也来出卖我,林林,为我作主啊!!!
select girl from Guilin where age='18-20' and bg='beautiful'--

TOP

有些图片看不到 能否提供编好的word版本 希望大家以后用pdf发文章 保护自己的版权 如果想开放共享也很好控制:)

TOP

光芒果:
你很不厚道啊,首先漏洞是我和勇哥儿发现的,在BBSXP 5.15版本中存在三个安全漏洞
一个是usertop.asp,一个是manageuser.asp其他一个就是你说的那个blog.asp了,
还有一个是要饭的发现的。即使blog.asp是你发现的。你是进行的安全检测,那为什么官方在知道有漏洞至少5个月了也不修补漏洞呢?
对于你的文章,你好好读读程序把,你看看setup.asp中HTMLENCODE()函数是个什么东西,你竟然说对id变量没有做任何过滤,不知道你是怎么读的程序,其实这个函数过滤了&#39;号;号等,你竟然没有发现,所以你使用NB是不会破解出来的。这里付上代码:
function HTMLEncode(fString)
fString=replace(fString,";",";")
fString=replace(fString,"<","<")
fString=replace(fString,">",">")
fString=replace(fString,"\","\")
fString=replace(fString,"--","--")
fString=replace(fString,"&#39;","&#39;")
fString=replace(fString,CHR(34),""")
fString=replace(fString,vbCrlf,"<br>")
HTMLEncode=fString
end function
不多说了。

TOP

光芒果早发现一部分漏洞肯定是真实的 而勇哥儿他们的肯定比较全面而且细致

TOP

引用:
下面是引用llikz于05-13-2005 23:45发表的:
光芒果:
你很不厚道啊,首先漏洞是我和勇哥儿发现的,在BBSXP 5.15版本中存在三个安全漏洞
一个是usertop.asp,一个是manageuser.asp其他一个就是你说的那个blog.asp了,
还有一个是要饭的发现的。即使blog.asp是你发现的。你是进行的安全检测,那为什么官方在知道有漏洞至少5个月了也不修补漏洞呢?
对于你的文章,你好好读读程序把,你看看setup.asp中HTMLENCODE()函数是个什么东西,你竟然说对id变量没有做任何过滤,不知道你是怎么读的程序,其实这个函数过滤了&#39;号;号等,你竟然没有发现,所以你使用NB是不会破解出来的。这里付上代码:
.......
谢谢你的回复,但我确实是告诉了yuzi的,至于他为什么不补我就不清楚了,我后来也曾多次通过QQ和短讯给yuzi留言但没得到回复。这个漏洞是在年三十晚检测的,因为快过年了,代码没注意看。本来我是不想投的,因为没什么新意。但过两个星期我打电话给WTF有点事说道这个漏洞是WTF说我可以写出来我就写了,后来很久没见发出来,我也不敢把文章放到网上,现在你们公布了我知道我的没上我才发出来的,有投稿的图为证,还有什么问题可以联系76194753
[IMG]http://www.tl100.com/UploadFiles/2005514173418184.jpg[/IMG]
select girl from Guilin where age='18-20' and bg='beautiful'--

TOP

引用:
下面是引用冰血封情于05-13-2005 18:09发表的:
有些图片看不到 能否提供编好的word版本 希望大家以后用pdf发文章 保护自己的版权 如果想开放共享也很好控制:)
因为我 一般是在网吧做事,所以没办法用PDF咯。
select girl from Guilin where age='18-20' and bg='beautiful'--

TOP


俺们也发现了~
不过我承认是因为看了勇哥儿公布的动画后才去读的代码(51期间)
usertop.asp和manage.asp也都发现了
所以也写了篇稿子投给X档案
但是没想到5月的黑防上勇哥的文章就先出来了
不过还好,现在BBSXP官方的补丁仍然不够严密
而且,我们的SQL语句也比勇哥的工具里使用的好些(通用性强些,有好些站我们的可以暴,勇哥的就暴不出,并且我们的速度也快些.也许勇哥早就搞好了更好的工具自己用吧,外传的就没那么好了)
个人论坛: http://www.xdxf.net

TOP

越来越没有创意了,这些漏洞,不用争了

TOP

发新话题