A-A+

stm与shtml映射

2013年02月16日 电脑知识 暂无评论

在 IIS 服务器的映射列表中,除了默认的几个 asp.dll 库的映射外,还有 3 个不为许多管理员所注意的 stm、 shtm、shtml 映射。这 3 个映射依然不是9Cool九酷网络个人主页空间管理系统 v4.1免费版程序的禁止列表中,但同样有着极为可怕的攻击性。

1,上传另类暴库

这里由于“9Cool九酷网络个人主页空间管理系统 v4.1 免费版”程序的漏洞,产生了另一种另类的暴库攻击手段。

打开记事本,在其中撰写如下代码内容:

<!--#include file="..\config.asp"-->

将文件保存为“test.shtml”网页文件,在上传框中上传“test.shtml网页”文件,。单击“开始上传”按钮后,将发现“test.html”网而文件上传成功。

在浏览器中访问上传的 shtml 文件,链接为“http://www.abc.com/1/test.html”,打开后看到页面中显示为一片空白。单击菜单-查看-源文件命令,打开网页源文件可看到其中的代码。

可以发现网页的源代码与刚才所写的代码的不同,里面有几句非常重要的代码:

dim conn,connstr,db

db="data/#ce753c9d8d5f120a.asp" '数据库文件位置

on error resume next

很显然,这就是数据库连接文件的代码,其中的“data/#ce753c9d8d5f120a.asp”,就是数据库路径。

数据库链接地址“http://www.abc.com/data/#ce753c9d8d5f120a.asp”,由于数据库文件铝有一个“#”号,直接访问是不行的,需要转换为 Unicode 编码“%23”。因此在浏览器中访问“http://www.abc.com/data/%23ce753c9d8d5f120a.asp”,正常地显示了 ASP 数据库中的内容。

使用迅雷或FlashGet等下载工具,即可将数据库下载到本地了。获得数据库后,可破解其中的超级管理员密码,登录控制整个网站服务器。

2,shtml 映射暴库的原理

shtml 是一种特殊的文件后缀名,它是“Server parse HTML”的首字母缩略词。Shtml 与 ASP 网页程序有些相似,可在 shtml 文件中写入 SSI 指令,当客户端访问这些 Shtml 文件时,即可执行文件中包含的 SSI 指定。

Shtml 程序文件的作用非常大,通过 SSI 指令主要可以实现以下几种用途:

a,显示服务器端环境变量<#echo>;

b,将文本内容直接插入到文档中<#include>;

c,显示 web 文档相关信息<#flastmod #fasize>;

d,直接执行服务器上的各种程序<#exec>,如CGI或其他可执行程序;

e,设置 SSI 信息显示格式 <#config>等

其中的 b、d 两个功能与网站的安全关系非常紧密,分别通过<#include>和<#exec>两条 SSI 指令实现。

SSI 指令基本格式为:

<!-- 指令名称="指令参数">

这里重点讲<#include>和<#exec>这两条 SSI 指令。

(1)<#include>指令

<#include>指令的作用是,将文本文件的内容直接插入到文档页面中,通常有两种用法:

<!--#include file="文件名称"-->

<!--#include file virtual="文件名称"-->

其参数“file”指定包含文件相对于本文档的位置;“virtual”指定相对于服务器文档根目录的位置。在上面的示例中,我们以“<!--include file="..\config.asp"-->”命令,插入了网站程序的数据库配置文件“config.asp”。由于上传的文件是位于“用户名”文件夹中,而数据库配置文件“config.asp”位于网站根目录下。因此使用相对路径“..\config.asp”。这也就是访问了 shtml 文件,却显示了数据库连接配置代码的原因。

利用同样的原理,攻击者可以用“<!--include file="文件名称"-->”命令,插入网站中任意重要机密程序文件,获得其源代码,进行渗透攻击。

(2)<#exec>指令

<#exec>指令的作用,是将某一外部程序的输出插入到页面中,其用法也有两种:

<!--#exec cmd="文件名称"->

<!--#exec cgi="文件名称"->

在<#exec>指令中可插入 CGI 程序,或者是常规应用程序的输入,这取决于使用的命令。其中,参数 CMD 表示插入常规应用程序,“cgi”参数表示插入 CGI 脚本程序。

例如,执行 SSI 命令“<!--#exec cmd="cat/etc/passwd"-->”,将会显示密码文件;

执行“<--#exec cmd="dir/b"-->”,将会显示当前目录下文件列表;

执行“<!--#exec cgi="/cgi-bin/gb.cgi"-->”,将会执行 CGI 程序文件“gb.cgi”。

在默认配置的 IIS 服务器中,是禁用<#exec>指令的,在执行<#exec>指令时,会返回错误信息“#EXEC呼叫的CMD选项未启动”。但是攻击者可能会通过其他方法,来修改 SSIExecDisable 元数据库,启用 <#exec>指令。

通常启用<#exec>指令的方法是修改注册表。

单击[开始]-[运行]命令,输入“regedit”命令,回车后执行便打开注册表编辑器。依次展开[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters],在该项目下选择新建一个 DWord 值,名称为“SSIEnableCmdDirective”,其数为“1”.

“SSIEnableCmdDirective”是 IIS 服务器端的<#exec>指令,执行 CMD 命令与外壳的控制键。在默认状态下,注册表中不存在此值,可通过将此值设置为“0”来关闭<#exec>命令;如果要允许<#exec>指令执行 CMD 与外壳命令,必须先创建此值并将值设置为“1”。

修改完毕后,关闭注册表编辑器,并重新启动 IIS,即可在 SSI<#exec>指令中执行 CMD 命令与外壳命令了。

3,其他危险的 SSI 映射

在 IIS 服务器的映射列表中,可以发现 IIS 解析 shtml 后缀名的文件是“c:\windows\system32\inetsrv\ssinc.dll”。此外,在默认情况下,IIS 服务器中扩展名为 .stm 和 .shtml的网页程序,也被映射到解释程序“Ssinc.dll”,这几种类型的文件,也可以像 shtml 文件一样,直接包含调用数据库配置文件,报出数据库路径信息,或者直接执行 CMD 等命令。

其实,在各种网站程序中,危险的映射绝不仅止这几种。有许多功能全面的网站中,通常是支持多种网站程序语文的,比如支持 ASP 的同时,支持 PHP及 CGI、JSP 等。因此,在网站程序的上传功能文件中,一定不能仅是禁止有限的文件上传类型,而应该实现的是限制许可上传的类型。因此,限制不许可永远有遗漏的可能,但是限制许可上传的类型则可靠得多,需要考虑的因素少了很多,除了许可之外,一概不能上传。

同时,在进行网站安全设置时一定要注意一点,不要留下无用的映射。如对于上面的程序,完全可以将 asa、cdx、shtm 等映射删除掉。

标签:

给我留言