IIS配置文件隐患_服务器

本文的内容是如何利用IIS本身的一些特性建立后门。当然,这主要是一份供网络管理员和网络安全工作人员参考的“Know Your Enemy”类文档,作者希望这篇文章能够对检查和清除后门有所帮助,而并不鼓励或赞同利用本文的技巧进行违法活动。

首先简单介绍一下IIS的配置文件MetaBase.bin。这个文件位于%SystemRoot%\system32\inetsrv\MetaBase.bin,包含了几乎所有IIS的配置信息,是非常重要的系统文件。简单的说,我们在“intenet服务管理器”中所作的一切设置最终都会被保存在MetaBase.bin中。在日常的系统管理中除了通过“intenet服务管理器”来对MetaBase.bin进行操作外,Windows还提供了一个脚本adsutil.vbs可以对MetaBase.bin进行操作。

MetaBase的结构类似于注册表,也是树形结构,有类似键、值、项的概念。事实上在IIS3和PWS中,MetaBase的内容就是存储在注册表中的。MetaBase有两个主键:LM和Schema。其中,Schema保存了系统默认的一些配置,通常不需要修改,一旦改错也非常危险,所以无论是“intenet服务管理器”还是adsutil.vbs都没有提供修改Schema的机制。LM中包含了IIS的HTTP服务,FTP服务,SMTP服务等的配置信息。其中,LM/W3SVC/下是我们要用到的HTTP服务的配置信息。

几个下面会提到的值:

LM/W3SVC/InProcessIsapiApps,进程内启动ISAPI。这是一个数组,里面包含的是一组指向一些ISAPI的路径。在这个数组里面的ISAPI运行的时候都是由inetinfo.exe直接启动的,继承inetinfo.exe的local system权限;而不在其中的ISAPI则是由svchost.exe派生的dllhost.exe进程启动的,运行的身份是IWAM_NAME,当然,这是IIS默认的安全级别“中”的情况下,如果设为低,那么所有ISAPI都会由inetinfo.exe直接派生。另外,如果设定的时候不指定路径,而是仅指定一个扩展名,那么任何路径下的同名ISAPI在被调用的时候都会以system权限执行。

ScriptMaps,脚本映射。在某个目录下设定该值后,则向该目录请求的特定扩展名的文件会交给指定的ISAPI执行。需要强调的是,设定ScriptMaps的目录并不一定要真实存在的,只要在MetaBase中某个HTTP实例的root键下建了一个子键,对该字键同名目录的HTTP请求IIS会认为是合法的,并会交由映射的ISAPI处理。这也算是IIS的一个问题吧。

CreateProcessAsUser,在某个目录下指定改值为0,则该目录下的应用程序会继承inetinfo.exe的local system权限。

AccessWrite,决定某个目录是否允许写入,也就是WEBDAV的PUT方法。

AccessExecute,决定某个目录是否允许执行应用程序。

后门思路:

创建一个特定扩展名的脚本映射,指向我们的ISAPI,并把该ISAPI添加到InProcessIsapiApps列表中。那么我们向服务器请求该扩展名类型文件时就会在服务器上以local system权限执行该ISAPI,且所请求的文件并不需要是真实存在的。

技巧:

1、既然并不需要真的建一个目录来设定ScriptMaps,那么就可以只写一个键,并给这个键加上ScriptMaps。这样,从“intenet服务管理器”里是看不出这个目录的,更看不到这个ScriptMaps。

2、虽然“intenet服务管理器”里面看不出来,但是有经验的管理员可能习惯于偶尔用adsutil.vbs enum /p来看一下:

# adsutil.vbs enum /p /w3svc/1/root
Microsoft (R) Windows Script Host Version 5.6
版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。

[/w3svc/1/root/_vti_bin]
[/w3svc/1/root/evildir]

这样就暴露了。

因为我们设的那个键并不是真实存在的虚拟目录,只是配置文件中的一个字符串,所以可以使用0x08这样的字符来做键值。0x08是Backspace键对应的16进制值,控制台上显示的效果是向左边删除一个字符,其实就是把“/”给删了:

# adsutil.vbs enum /p /w3svc/1/root
Microsoft (R) Windows Script Host Version 5.6
版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。

[/w3svc/1/root/_vti_bin]
[/w3svc/1/root]

面对这种输出,一般人是不会留意的。

当然也可以设为类似_vti_script,_vti_bin这样的名字,只要不设KeyType,在“intenet服务管理器”中是看不见的。

因为系统中本身InProcessIsapiApps中有一个\WINNT\System32\msw3prt.dll,是.printer的映射,一般用不上。我们可以删掉D:\WINNT\System32\msw3prt.dll的值,换上\WINNT\System32\inetsrv\msw3prt.dll。

3、美中不足的是HTTP请求会留下痕迹,但是HTTP也有好处,那就是可以随便用一个代理服务器做跳板。另外,也可以用插入0x0D 0x0A来伪造日志的方法,(详见《Apache,IIS等多种http服务器允许通过发送回车符伪造日志》一文)这就是构造目录的技巧了。

具体实现:

当然可以用adsutil.vbs手工来加。不过需要注意,adsutil.vbs只能设,不能改,所以用adsutil.vbs的时候一定要把原先的也加上,否则原先的就会丢失。不同条目之间用空格分开。

先用下面命令取得当前的InProcessIsapiApps列表:
adsutil.vbs get /W3SVC/InProcessIsapiApps

取到之后把自己的ISAPI路径也加进去。
adsutil.vbs set /W3SVC/InProcessIsapiApps "C:\WINNT\System32\idq.dll" "C:\WINNT\System32\inetsrv\httpext.dll" ………………

ScriptMaps的设定同InProcessIsapiApps。

当然这样比较麻烦,也无法写入0x08这样的键值,所以我干脆自己写个VBS一次性搞定。至于那个做后门的ISAPI,能实现的功能就完全取决于想象力了。这里是一个简单例子的屏幕拷贝:

# nc 10.11.0.26 80
POST /%08/anything.tom

Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-1998 Microsoft Corp.

C:\WINNT\system32>whoami
NT AUTHORITY\SYSTEM

C:\WINNT\system32>exit
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Wed, 08 Jan 2003 06:49:37 GMT

更隐蔽的方法是写一个特殊的ISAPI,并注册为解析asp的。通常情况下,该程序把收到的请求转给系统原来的asp.dll,并把结果返回,当收到一个特殊POST请求时就启动自己的后门代码,这样日志里面也不会有什么显示。审核时也很难发现。

除了上面所述利用脚本映射的方法外,还可以赋予某个虚拟目录AccessWrite和AccessExecute权限。需要运行后门的时候利用WEBDAV上载ISAPI,然后运行,使用完了再删除。(是否能删除?还是需要restart W3SVC ?我没有试验。)如果上载的不是DLL而是EXE文件,那么把该目录下的CreateProcessAsUser设为0也可以获得local system权限,这个方法早有人撰文论述。但AccessWrite和AccessExecute的改变都可以在“intenet服务管理器”中看出来,隐蔽性就差了。

时间: 2024-09-11 19:08:13

IIS配置文件隐患_服务器的相关文章

TOMCAT+IIS配置方法_服务器

一.说明:  配置如下:Win2000  Server  +  IIS  5.0(Win2000自带)+  Tomcat  3.1  binary  release.  我使用的Tomcat  3.1是编译过的版本,在这个版本里面没有配置IIS和NT  Service  的说明,但是在Tocmcat  3.2  source版里面有比较详细的帮助文件.根据这些帮助文件  可以顺利的把Tomcat作为插件插入IIS.   二.启动tomcat  安装完tomcat之后(具体安装过程略),要启动To

完美解决IIS和APACHE的301重定向(带参数)_服务器其它

在5月份的时候,因为对一个网站改版,导致大量链接失效,正好5月底GOOGLE PR大更新,这个网站的PR直接从3降低到2,并且收录也急剧下滑,可以说网站的大幅度改版是导致本次PR降低的主要因素,后在GOOGLE的网站管理后台也验证了这个结论,于是赶紧使用JAVASCRIPT进行了404跳转定向,从实际的测试效果来看,GOOGLE对404跳转也是支持的,不会惩罚该网站的权值,可是根据IIS日志分析,感觉BAIDU spider对404的重定向似乎无动于衷,于是近日干脆对原失效的链接重新设置301重

微软的IIS中的FTP服务器FTP7 提供下载_常用工具

微软的IIS中的FTP服务器可能是最安全的服务器--因为它太简单了,它从诞生以来没出现过什么漏洞.最新的Windows Server 2008的IIS7中的FTP服务器版本名为FTP 7,它是一个与IIS7整合的服务器端,除了一贯简单的外表之外还添加了不少功能.例如新的Internet标准,绑定Web站点.扩展验证和SSL加密等. FTP 7 (x86) Installation Package http://go.microsoft.com/fwlink/?LinkId=87847FTP 7

Exchange2000系统建设及规划_服务器

第一章第二章 Exchange 2000 安装和设置第一节 安装前的准备工作1. 检查服务器硬件配置2. 检查服务器是否是已经安装了AD的域控制器(DC)3. 检查服务器的网卡及网络设置4. 检查DNS对应是否设置完成5. 检查服务器的IIS中是否安装好了SMTP service 和NNTP service6. 检查是否安装Windows2000 service pack 17. 服务器页面文件设置为较大值第二节 安装Exchange 20001. 注意,将Exchange 2000安装在空间较

提高IIS 5.0网站服务器的执行效率的八种方法

iis|服务器|执行 以下是提高IIS 5.0网站服务器的执行效率的八种方法: 1. 启用HTTP的持续作用可以改善15~20%的执行效率. 2. 不启用记录可以改善5~8%的执行效率. 3. 使用 [独立] 的处理程序会损失20%的执行效率. 4. 增加快取记忆体的保存文档数量,可提高Active Server Pages之效能. 5. 勿使用CGI程式. 6. 增加IIS 5.0电脑CPU数量. 7. 勿启用ASP侦错功能. 8. 静态网页采用HTTP 压缩,大约可以减少20%的传输量. 简

IIS下搭建FTP服务器

环境:Windows Server 2008 R2 首先是启动安装IIS(具体百度搜索吧).在安装IIS时顺便就把FTP的全部勾选上! 安装IIS/FTP角色 打开服务器管理器,找到添加角色,然后点击,弹出添加角色对话框,选择下一步: 在IIS中查看,如果能够右键创建FTP站点,则表明FTP服务安装成功. 完成后启动IIS:分两步进行(全局设置,FTP服务开启): 一,全局设置: 1.点击IIS左边主页: 需要设置的有:服务器证书(SSL),FTP SSL设置,FTP身份验证,FTP授权规则 2

Win2008下搭建php开发环境(IIS FastCGI版)_win服务器

注意所用到软件的版本,不同的版本会有不少差别,有可能最后会搭建不成功,而且各位童鞋也不用担心小狼所用版本会不会太老,因为这里所用的软件不是比较新的就是比较稳定的版本,完全可以满足大家的需要了,那就先看看要用到什么软件吧: 操作系统:Windows Server 2008(下文为了方便,用WS2008代替,经测试,此方法在win7下也有效) 服务器:IIS7.0或更新版本 1.mysql-essential-5.1.56-win32.msi:http://dev.mysql.com/downloa

WIN2000 Apache php mysql 安装及安全手册_服务器

look: 本文写给想在win2k平台上架设一个安全web站台的朋友们. 所需要的程序: apache http://www.apache.org/dist/httpd/binaries/win32/ 我们选用apache_1.3.28-win32-x86-no_src.msi,或者apache_2.0.47-win32-x86-no_ssl.msi 都可以,勿使用低版本的程序,它们有缺陷,很容易遭到internet上的攻击 php http://cn2.php.net/get/php-4.3.

分享几种常见WEB服务器配置方案_服务器其它

在众多专用服务器中,WEB服务器应该是我们最为熟知和常用到的了,根据不同的建站及WEB需求,WEB服务器有着好几种常见的环境配置方案,这里就总结分享一下: 当前比较流行的配置就是跑php一般就是,php运行的肯定是linux好点,但前提是你对linux服务器配置熟悉,如果不行学习windows也是不错的,起码百万ip跑起来没问题.win2003也可以,现在win2008 r2 也是不错的. 1.Microsoft IIS:即Internet Information Server(IIS),是允许