asp后,它已经是一个正常的文件管理系统了,仅仅能够查看文件信息和上传文件,也能够执行一些不带参数的命令。我想,只要可以执行命令,即使不能够带参数也够了,因为我们可以写bat文件上传然后运行。唯一的缺点就是iis进程一iwam_name帐号启动,得到的仅仅是guest权限,那么有办法改变这个缺点吗?有,下面我就说说如何利用iis的缺陷配置system权限的asp后门的几个方法:
第一种方法,很简单,既然iis是以匿名帐号iusr_name访问的,那么,我们将iusr_name帐号加入administrator组里面,iis就是以administrator权限访问的了。一条命令net localgroup administrators iusr_name /add就完成了,这样,我们就得到了administrator权限的asp后门了。可以通过上传bat文件执行任何系统命令了~~但是把iusr_name帐号加入administrators组中仍然是很危险的事情,万一管理员发现了呢?
第二种方法,依然很简单,但是被发现的可能性稍微小些。把iis应用程序保护由默认的“中(共用的)”改为“低(iis进程)”就可以了,基本步骤如下:开始菜单---->程序---->管理工具---->Internet服务管理器---->默认web站点属性,然后修改即可,如下图:
第三种方法比较复杂,但是效果比较好,也比较隐蔽,首先介绍一下iis的基本知识。几乎所有IIS的配置信息都包含在%SystemRoot%\system32\inetsrv目录下面的IIS的配置文件MetaBase.bin中,MetaBase.bin文件的结构类似如注册表,它有两个主键:LM和Schema。LM主键下面有W3SVC/InProcessIsapiApps键,这是一个数组,里面包含的是一组指向一些ISAPI的路径。在这个数组里面的ISAPI运行的时候都是由inetinfo.exe直接启动的,继承inetinfo.exe的local system权限;而不在其中的ISAPI则是由svchost.exe派生的dllhost.exe进程启动的,运行的身份是IWAM_NAME,当然,这是IIS默认的安全级别“中”的情况下,如果设为低,那么所有ISAPI都会由inetinfo.exe直接派生。这里,就是第二种方法实现system权限的asp后门的原理所在。
我们知道,asp脚本是由C:\WINNT\system32\inetsrv目录下面的asp.dll文件解释执行的。默认的,asp.dll不在数组InProcessIsapiApps中,所以asp.dll是由svchost.exe派生的dllhost.exe进程启动的,运行的身份是IWAM_NAME。那么,如果我们手动将asp.dll文件加入到数组InProcessIsapiApps中,asp.dll岂不是由inetinfo.exe直接启动,继承inetinfo.exe的local system权限,以至于我们得到system权限的后门?对,就这样!
在C:\Inetpub\AdminScripts目录有个文件adsutil.vbs,它就是修改iis的配置用的,我们先查看数组InProcessIsapiApps中有哪些isapi,如下图:
注意我用红线框出的地方,这个地方要注意别写错了~还有,看第一行有idq.dll吧,所以以前的那个idq溢出得到的是system权限,呵。好了,现在我们把asp.dll也加进去,注意:这个数组不能够修改,只能够覆盖,所以记得把所有的一起加进去,看我怎么做的,如下图:
注意,我画红线的地方是我输入的命令,下面的是回显,哈哈,看最后面,有asp.dll了吧?这样,所有的asp脚本都是以system权限运行的了~~这样的后门够隐蔽吧?看看我的asp后门运行结果?如下图:
第四种方法,这种方法是最困难的,但是也是最隐蔽的一种。在IIS的配置文件MetaBase.bin中有ScriptMaps键,即脚本映射。在某个目录下设定该值后,则向该目录请求的特定扩展名的文件会交给指定的ISAPI执行。这样,只要创建一个特定扩展名的脚本映射,比如china,呵呵,指向一个特殊的ISAPI,并把该ISAPI添加到InProcessIsapiApps数组中。那么向服务器请求该扩展名类型文件时就会在服务器上以local system权限执行该ISAPI。我刚学写程序,还没有这种实力写个dll文件运行,幸好已经有高手摆平了~,听envymask说安全焦点(http://www.xfocus.net)的isno写了个iisapi.dll文件,能够得到shell,并且envymask为这个dll写了个安装批处理,有兴趣的可以去envymask的主页下载,地址是envymask.3322.org,他可是脚本狂呀…去我的烂叶子也可以,我特地也放了个。这个后门确实比较阴险,也难以查出来,而且可以突破防火墙的封锁,因为他利用的是80端口,一个网站,80端口总是要开的呀!下面就是我利用isno的那个dll文件通过连接80端口得到的system权限的shell,成功突破防火墙。
后说说防范的办法。第一种和第二种后门,管理员只要小心看看就可以发现了。第三种就只有利用adsutil.vbs来找了,用命令cscript adsutil.vbs get w3svc/inprocessisapiapps来查看有哪些dll文件了,至于第四种后门,就比较麻烦。我看了下envymask的安装批处理,他是把isno写的iisapi.dll文件覆盖了解释printer映射的msw3sprt.dll文件,在目录C:\winnt\system32下面。但是任何人都可以修改名字,查找起来很麻烦,而且,不知道是后门还是正常的msw3sprt.dll,只有比较文件大小和修改日期了。我想了下,先把除了asp,asa以及一些确实有用的映射外,其余所有的全部删除。这样以后只要定期使用cscript adsutil.vbs set /w3svc/scriptmaps和cscript adsutil.vbs get /W3SVC/InProcessIsapiApps来分别检查scriptmaps和InProcessIsapiApps下面是否有特殊的映射就一清二楚了。这也许是最好的办法吧?当然我没有测试过,因为这是违法行为,我怕……其实最好的方法应该是平时作好系统的安全防范工作,让别人没有机会装后门吧~可惜有几人能够如此?