Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件。
IIS支持短文件名猜测的HTTP方法主要包括:debug、oprions、get、post、head、trace六种。 IIS 8.0之后的版本只能通过options和trace方法被猜测成功。
复现:
//返回状态码为400文件不存在
//返回状态码404文件存在
注:IIS 8.0以下版本需要开启ASP.NET
危害: 攻击者可以利用“~”字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击。
解决方案:修改注册列表HKLM\SYSTEM\CurrentControlSet\Control\FileSystem \NtfsDisable8dot3NameCreation的值为1,或者,可以直接点此下载,然后运行,再重启下机器。(此修改只能禁止 NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除),
如果你的web环境不需要asp.net的支持你可以进入Internet 信息服务(IIS)管理器 — Web 服务扩展 - ASP.NET 选择禁止此功能。
升级net framework 至4.0以上版本.
攻击者可以利用“~”字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击。 参考资料1 参考资料2
IIS漏洞过滤
IIS漏洞报告会提示网站HEAD包含Server版本信息导致版本泄漏,看起来不是大问题的漏洞却被分到中危或高危的行列中, 因为攻击者可能使用被披露信息获取特定版本发现的安全漏洞以及利用程序. 下面提供三种方法进行安全补救,方法一测试结果很满意 一: 安装UrlScan - 安装微软推出的UrlScan这套工具,下载地址下载地址:
http://www.microsoft.com/en-us/search/DownloadResults.aspx?q=URLScan - 默认安装成功后用记事本打开C:\Windows\System32\inetsrv\urlscan下的UrlScan.ini文件
- 重启IIS服务(重新后才能生效,后期修改.ini配置文件参数实时生效无需重启)
- 里面有很多参数配置,将其中RemoveServerHeader这一项的值改为0则取消IIS里的Server的版本信息(里面参数比对参考下一篇《URLScan参数说明》)
注:本方法本地已测试确实很好用,URL下载文件默认禁用中文命名文件修改对应参数即可恢复 二:IIS删除X-Powered-By - 打开IIS,右键所属网站属性
- 选择“HTTP头”,选中自定义HTTP头中的“X-Powered-By:ASP.NET”点击删除即可
三:添加web.config配置(不建议使用) 在<system.web>节点下添加<httpRuntime enableVersionHeader="false" /> 测试了很多方法,最后选用了文章中的第一种(不必担心安全性)
|