bbsxp2007 SQL漏洞

1、
bbsxp 2007斑竹权限注射


moderation.asp中的这些代码
if Request.ServerVariables("Request_method") = "POST" then

select case Request.Form("Item")
case "BatchDel"
IsDel=Request.Form("IsDel")
for each ho in Request.Form("ThreadID")
ho=int(ho)
Conn.execute("update [BBSXP_Threads] set IsDel="&IsDel&",lasttime="&SqlNowString&",lastname='"&CookieUserName&"' where ThreadID="&ho&ForumSql&"")
next

succtitle="批量删除,主题ID:"&Request.Form("ThreadID")&""


IsDel=Request.Form("IsDel")这句是完全信任的,所以不说了呵~~~~~~~
我够无聊的唉,我承认我是搜=request.来的,这个是bbsxp没过滤的特征 :)




2、
BCT曾经发过bbsxp的注射,官方好象补了,真的补了么?看看,还是原来的文件还是原来的地方还是原来的函数还是原来的利用法子

sub Log(Message)
MessageXML=MessageXML&"<Message>"&Message&"</Message>"&vbCrlf
MessageXML=MessageXML&"<REMOTE_ADDR>"&Server.HTMLEncode(Request.ServerVariables("REMOTE_ADDR"))&"</REMOTE_ADDR>"&vbCrlf
MessageXML=MessageXML&"<Request_Method>"&Server.HTMLEncode(Request.ServerVariables("Request_method"))&"</Request_Method>"&vbCrlf
MessageXML=MessageXML&"<Server_Name>"&Server.HTMLEncode(Request.ServerVariables("server_name"))&"</Server_Name>"&vbCrlf
MessageXML=MessageXML&"<Script_Name>"&Server.HTMLEncode(Request.ServerVariables("script_name"))&"</Script_Name>"&vbCrlf
MessageXML=MessageXML&"<Query_String>"&Server.HTMLEncode(Escape(Request.ServerVariables("Query_String")))&"</Query_String>"&vbCrlf
MessageXML=MessageXML&"<Request_Form>"&Server.HTMLEncode(Escape(Request.Form))&"</Request_Form>"&vbCrlf
MessageXML=MessageXML&"<All_Http>"&Server.HTMLEncode(Request.ServerVariables("All_Http"))&"</All_Http>"&vbCrlf

Conn.Execute("insert into [BBSXP_EventLog] (UserName,ErrNumber,MessageXML) values ('"&CookieUserName&"','"&Err.Number&"','"&MessageXML&"')")
end sub


是的,没补,一点都没补,换了个写法,漏洞依然哪!可能对于server.htmlencode有点误解
<%
response.write(server.htmlencode(request("a")))
%>

a里带'是不会被转义的,偏偏就是'不会转,呵呵,但是escape函数不一样,特殊的都转,所以我们只能用那个[code]Request.ServerVariables("All_Http")
 

这是啥玩意呢,原来是http头里发过来的都在这之内,简单了,在http头里加个
Loveshell: fuck the world!';sql语句--
就行啦........

现在去找log函数调用的地方,好多,最便宜的就是编辑帖子,当然这是insert的注射,对于access我没有好的办法,所以只能针对sql了,去看sb同学的文章吧,能拿shell的[code]
 
 
 
 
3、


bbsxp 2007[以前版本不知道]一个有意思的漏洞

cpmpact.asp

<%
option explicit
Const JET_3X = 4

if ""&Request("sessionid")&""<>""&session.sessionid&"" then error("效验码错误")

Dim dbpath,boolIs97
dbpath = Request("dbpath")
boolIs97 = Request("boolIs97")
If dbpath <> "" Then
 dbpath = server.mappath(dbpath)
 response.write(CompactDB(dbpath,boolIs97))
End If

Function CompactDB(dbPath, boolIs97)
 Dim fso, Engine, strDBPath
 strDBPath = Left(dbPath,instrrev(DBPath,"\"))
 Set fso = createObject("Scripting.FileSystemObject")
 If fso.FileExists(dbPath) Then
 Set Engine = createObject("JRO.JetEngine")
 On Error Resume Next
 If boolIs97 = "True" Then
 Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath, _
 "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath & "temp.mdb;" _
 & "Jet OLEDB:Engine Type=" & JET_3X
 Else
 Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath, _
 "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath & "temp.mdb"
 End If
 If Err Then error("不可识别的数据库格式")
 fso.CopyFile strDBPath & "temp.mdb",dbpath
 fso.deleteFile(strDBPath & "temp.mdb")
 Set fso = nothing
 Set Engine = nothing
 CompactDB = "<script language='JavaScript'>alert('压缩成功!');history.back();</script>"
 Else
 CompactDB = "<script language='JavaScript'>alert('找不到数据库!\n请检查数据库路径是否输入错误!');history.back();</script>"
 End If
End Function

sub Alert(Message)
%>
<script language='JavaScript'>alert('<%=Message%>');history.back();</script><script language='JavaScript'>window.close();</script>
<%
 response.end
end sub
%>
 


整个代码权限验证是

if ""&Request.form("sessionid")&""<>""&session.sessionid&"" then error("效验码错误")
 


只要post过来sessionid和当前的sessiond相等就有权限了,那么我们如何知道sessionid呢?简单哪!
viewonline.asp部分代码

sub default
 if Request.ServerVariables("Request_method") = "POST" and BestRole<>1 then error("只有超级版主与管理员才能使用查询功能")
 Key=HTMLEncode(Request.Form("Key"))
 Find=HTMLEncode(Request.Form("Find"))

 if Len(Find)>10 then error("非法操作")
 if Key<>empty then SqlFind=" where "&Find&"='"&Key&"'"
 sql="select * from [BBSXP_UserOnline] "&SqlFind&" order by LastTime Desc"
 Rs.Open sql,Conn,1
 PageSetup=20 '设定每页的显示数量
 Rs.Pagesize=PageSetup
 TotalPage=Rs.Pagecount '总页数
 PageCount = RequestInt("PageIndex")
 if PageCount <1 then PageCount = 1
 if PageCount > TotalPage then PageCount = TotalPage
 if TotalPage>0 then Rs.absolutePage=PageCount '跳转到指定页数
 i=0
 Do While Not Rs.EOF and i<PageSetup
 i=i+1
 if BestRole<>1 then
 ips=split(Rs("IPAddress"),".")
 ShowIP=""&ips(0)&"."&ips(1)&".*.*"
 else
 ShowIP=""&Rs("IPAddress")&""
 end if

 if ""&Rs("UserName")&""="" then
 UserName="<FONT COLOR=#C0C0C0>"&Rs("SessionID")&"</FONT>"
 else
 if Rs("IsInvisible")=0 or BestRole=1 then UserName="<a href=Profile.asp?UserName="&Rs("UserName")&">"&Rs("UserName")&"</a>"
 if Rs("IsInvisible")=1 then UserName=UserName&"(隐身)"
 end if
 


只要有人在线然后你的username=''就是你是游客,那么这里显示的就是你的sessionid了,呵呵.好,记录下自己的ip对应的sessionid就可以去压缩数据库了.不过也没有什么用是么?你又不知道数据库路径在哪......
让我们想想,如果我们可以上传一个txt后缀的数据库,然后把路径记录下来,送过去压缩......没什么用吧,还是.不过再等下,记得以前的jet是有溢出的,如果我们送个exploit上去会怎么样?我也不晓得会怎么样,没环境,没测试.....
YY啊,我是真有够无聊的......

转载于:https://www.cnblogs.com/allyesno/archive/2007/07/03/803809.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值