本文的内容是如何利用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服务管理器”中看出来,隐蔽性就差了。
分享到:
相关推荐
如果是手动安装,需要将必要的DLL文件和配置文件复制到系统目录,如System32和Inf目录。 4. 安装完成后,需要配置IIS,包括设置默认网站、绑定IP地址和端口、创建虚拟目录等。 5. 最后,启动IIS服务,并测试是否能...
【IIS安全配置方案】 IIS(Internet Information Services)是微软公司推出的用于Windows操作系统的Web服务器,用于托管网站、应用程序和服务。确保IIS的安全性至关重要,因为它直接关系到服务器上托管资源的安全。...
- 对于需要写入的配置文件,通过NTFS权限单独设置Internet来宾账户(ASP.NET为IIS_WPG组)的写权限,而不是使用IIS的"写入"权限。 2. **上传目录**: - 将执行权限设为"无",防止上传的脚本或程序被执行。 - 若...
安装完IIS后,用户可以通过“控制面板”中的“管理工具”访问IIS管理器,进行网站配置、虚拟目录设置、权限管理等工作。此外,为了确保系统安全,应定期更新IIS的安全设置,如安装最新的安全补丁,限制不必要的服务...
1. **删除不必要的虚拟目录**: 删除默认安装的一些虚拟目录,如 `IISHelp`、`IISAdmin` 等,这些目录通常包含示例页面和脚本,对于实际应用来说并无太大价值,反而可能成为安全隐患。 2. **移除潜在危险的 IIS 组件*...
### IIS证书配置SSL知识点详解 #### 一、IIS与HTTP协议的安全性问题 - **IIS简介**:IIS(Internet Information Services)是微软提供的一个集成在Windows操作系统中的Web服务器解决方案,常用于搭建网站服务器。 ...
然而,某些不安全的IIS配置可能导致恶意用户利用PUT方法在未经授权的情况下上传恶意文件,从而对服务器安全构成威胁。 IISPutScanner1.3的出现是为了帮助管理员发现并修复这些潜在的安全漏洞。这款工具通过模拟PUT...
3. ** metabase管理**:元数据库(Metabase)是IIS6.0的核心配置存储,它存储了所有的IIS配置信息。用户可以通过IIS管理控制台或脚本对元数据库进行修改,实现服务器配置的自动化管理。 4. **应用程序池**:IIS6.0...
但是,如果IIS配置不当或者存在漏洞,攻击者可能利用这个功能进行恶意活动,如上传恶意脚本、篡改网页内容或执行系统命令。IISWrite可能是一个工具,用于模拟这种攻击行为,也可能表示一种攻击技术。 为了防止IIS ...
- 在某些情况下,可能需要为IIS配置特定的执行权限。 #### 三、综合解决方案 1. **检查安装顺序**:确保按照正确的顺序安装IIS和.NET Framework。 2. **调整权限设置**:为网站目录设置正确的账户权限。 3. **确认...
总的来说,这个压缩包可能包含了针对Windows 7和Windows XP系统IIS的不同配置、教程或者补丁文件。对于想要在这些平台上部署和管理Web服务的用户来说,这些资源可能是非常有用的。然而,由于Windows XP已经不再受...
4. **配置PHP**:修改php.ini配置文件,设置相关参数,如date.timezone以适应时区,以及启用必要的扩展。 5. **注册PHP**:将PHP的目录添加到系统环境变量PATH中,然后使用命令行注册PHP ISAPI扩展,如`cscript %...
1. **信息泄露**:攻击者可以获取系统中隐藏的文件名,包括配置文件、数据库连接字符串等敏感信息。 2. **权限提升**:通过短文件名,攻击者可能找到具有特殊权限的文件,从而提升在服务器上的权限。 3. **恶意代码...
5. **定期备份**:由于IIS存储着网站的配置和内容,定期备份IIS的配置文件和网站数据是必不可少的,以防数据丢失。 6. **扩展性**:IIS支持多种扩展,如URL重写模块、FastCGI(用于运行PHP等脚本语言)、WebDAV...
2. **FTP服务**:IIS 5.1内建FTP服务器,允许用户上传和下载文件,方便网站内容管理和远程协作。 3. **安全管理**:支持基本认证、集成Windows身份验证,以及SSL(Secure Sockets Layer)加密,确保数据传输的安全性...
而"iis.inf"则是一个安装信息文件,通常用于指导Windows的添加/删除程序功能来安装或配置IIS组件。 在Windows XP系统中,如果要安装IIS,正常情况下需要通过控制面板的“添加或删除程序”功能,选择“添加/删除...