常见 Web 中间件及其漏洞概述(一):IIS

2023-11-18

目录

PUT漏洞

漏洞原理

复现

修复

短文件名猜解

漏洞原理

IIS短文件名产生 

复现

短文件漏洞的局限性

IIS短文件名扫描工具

修复

远程代码执行

解析漏洞

IIS 6.0

基于文件名

基于目录名

IIS 7.0/7.5

IIS PHP文件解析配置

复现

 漏洞修复


PUT漏洞

漏洞原理

 IIS Server 在 Web 服务扩展中开启了 WebDAV之后,支持多种请求,配合写入权限,可造成任意文件写入。

 WebDav(Web-based Distributed Authoring and Versioning)是一种基于HTTP 1.1协议的通信协议,它扩展了HTTP协议,在GET、POST、HEAD等几个HTTP标准方法外添加了一些新的方法。

复现

Win 2003 + IIS 6.0

修复

关闭WebDAV 写权限

短文件名猜解

Windows 8.3 格式生成与 MS-DOS 兼容的(短)文件名,以允许基于 MS-DOS 16 Windows的程序访问这些文件。在cmd下输入"dir /x"即可看到短文件名的效果。

漏洞原理

IIS的短文件名机制,可以暴力猜解短文件名,访问构造的某个存在的短文件名,会返回404,访问构造的某个不存在的短文件名,返回400。

IIS短文件名产生 

        1.当后缀小于4时,短文件名产生需要文件()名前缀字符长度大于等于9位。

        2.当后缀大于等于4时,文件名前缀字符长度即使为1,也会产生短文件名。

目前IIS支持短文件名猜测的HTTP方法主要包括:DEBUGOPTIONSGETPOSTHEADTRACE六种。 IIS 8.0之后的版本只能通过OPTIONSTRACE方法被猜测成功。

复现

IIS8.0以下版本需要开启ASP.NET支持,IIS大于等于8.0版本,即使没有安装ASP.NET,通过OPTIONSTRACE方法也可以猜解成功。 以下通过开启IIS6.0 ASP.NET后进行复现。

猜解格式:

http://192.168.11.148/短文件名/.aspx   ->  短文件名格式:*~*

 当访问构造的某个存在的短文件名,会返回404

当访问构造的某个不存在的短文件名,会返回400 

短文件漏洞的局限性

        1.如果文件名本身太短也是无法猜解的。

        2.此漏洞只能确定前6个字符,如果后面的字符太长、包含特殊字符,很难猜解。

        3.如果文件名前6位带空格,8.3格式的短文件名会补进,和真实文件名不匹配。

        4.如果文件夹名前6位字符带点".",扫描程序会认为是文件而不是文件夹,最终出现误报。

        5.不支持中文文件名,包括中文文件和中文文件夹。一个中文相当于两个英文字符,故超过4个中文字会产生短文件名,但是IIS不支持中文猜测。

IIS短文件名扫描工具

        https://github.com/irsdl/IIS-ShortName-Scanner

修复

        1.CMD命令关闭NTFS 8.3文件格式的支持

                Windows Server 2003: (1代表关闭,0代表开启)

                关闭该功能:fsutil behavior set disable8dot3 1

                Windows Server 2008 R2:

                查询是否开启短文件名功能:fsutil 8dot3name query

                关闭该功能:fsutil 8dot3name set 1

                不同系统关闭命令稍有区别,该功能默认是开启的.

        2.从修改注册表关闭NTFS 8.3文件格式的支持

        快捷键Win+R打开命令窗口,输入regedit打开注册表窗口
        找到路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,将其中的 NtfsDisable8dot3NameCreation这一项的值设为 11代表不创建短文件名格式。

        注:

        以上两种方式修改完成后,均需要重启系统生效。
        Note:此方法只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除,需要重新复制才会消失。 :web文件夹的内容拷贝到另一个位置,如c:\wwwc:\ww,然后删除原文件夹,再重命名c:\wwc:\www

远程代码执行

HTTP.SYS远程代码执行漏洞(MS15-034)

解析漏洞

IIS 6.0

测试代码:

<%
response.write(now())
%>

基于文件名

只要文件名中包含有 .asp .asa .cer .cdx 会优先按照 asp 格式来解析。 eg:Test.asp;.jpg

原理:IIS服务器默认不解析; 号及其后面的内容,相当于截断。

 

基于目录名

如果目录名以 .asp .asa .cer .cdx 字符串结尾,那么这个目录下的所有文件都会按照 asp 格式去解析。 eg:Test.asp/Test.jpg

 

IIS 7.0/7.5


IIS7.0/7.5 是对 php 解析时有一个类似 Nginx 的解析漏洞,对任意文件名只要在 URL 后追加上字符串 /任意文件名.php 就会按照 php 的方式去解析。

该漏洞适用于 IIS7.x版本 在Fast-CGI运行模式下。

 eg:http://www.test.com/Test/test.txt/xx.php

IIS PHP文件解析配置

IIS 如何解析 PHP 文件

复现

 漏洞修复

配置 cgi.fix_pathinfo(php.ini为 并重启 php-cgi 程序

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常见 Web 中间件及其漏洞概述(一):IIS 的相关文章

随机推荐

  • kafka消费者客户端线程安全以及多线程实现并发读取消息

    kafka的生产者客户端Producer是线程安全的 但是消费者客户端是非线程安全的 每次操作时都会调用accqure方法用来确定当前只有一个线程操作 如果有多个线程在操作 会抛出CME异常 针对这种情况 为了能够多线程更快速的读取消息 可
  • 【Python 1-17】Python手把手教程之——文件的读写以及I/O操作

    作者 弗拉德 来源 弗拉德 公众号 fulade me 从文件中读取数据 文本文件可存储的数据量很多 每当需要分析或修改存储在文件中的信息时 读取文件都很有用 对数据分析应用程序来说尤其 如此 例如 你可以编写一个这样的程序 读取一个文本文
  • 研发人员欠缺的“不要脸”文化

    一直感觉研发人员相对市场人员确实缺少点什么 今天听到一个原华为的人说华为的文化中有一个 不要脸 文化 讲的就是研发人员要特别注意的事项 特别说明 不要脸 三个字 据说是任正非认为这样好记 才取得名字 这三点是 抬头看路 找人问路 请人带路
  • 由先序中序,或后序中序,可以唯一确定二叉树;完全二叉树的顺序存储,c/c++描述

    这是课本里的 两个定理 由先序 根左右 后序 左右根 可以确定根节点是哪个 由中序 左根右 可以确定左子树和右子树的范围 所以我们也找到了二叉树的左子树和右子树的先序 或后序 和中序排列 由归纳法 可得出这个构造二叉树链表的方法 对于完全二
  • loadrunner负载生成器;

    负载生成器 Load Generators 是脚本生成的负载引擎 相当于加压机 主要功能是生成虚拟用户进行负载 在默认的情况下使用本地的负载生成器来运行脚本 但是每生成一个虚拟用户 需要话费负载生成器大约2M 3M的内存空间 通常运行CON
  • java8有哪些jvm参数

    Java8中的JVM参数有很多种 这里列出一些常用的 server 指定JVM运行在服务器模式 在服务器环境下性能会更好 Xmx 设置JVM最大可用内存 Xms 设置JVM初始内存 XX PermSize 设置持久代 Perm Gen 的初
  • Python常用库大全

    作者 史豹 链接 https www zhihu com question 20501628 answer 223340838 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 环境管理 管理 Python 版
  • Visual Studio 2017 远程调试器(MSVSMON.EXE) 找不到连接

    Visual Studio 2017 远程调试器 MSVSMON EXE 找不到连接 用的是wifi上网 而远程主机是有线连接 经过几个小时的排查 终于发现不在一个网段内 把wifi改成有线 确保和远程主机在一个网段内 就可以联上了
  • 【node】12、Koa实现简单爬虫案例

    效果图如下 首先我们新建文件夹 进入终端 初始化node项目 npm init y 安装koa搭建服务模块 npm install koa 安装superagent发送请求模块 npm install superagent 安装cheeri
  • 有关Proteus安装时的一些报错

    在安装Proteus的之后 使用的时候经常会出现 已使用符号sMKRORIGIN但未在库中找到 或者许多找不到文件在哪里的一些许多错误 我也是经常遇到 然后也是一点一点找资料解决 有时候这种方法能够解决 有时候又不能解决 确实很让人头疼 所
  • java: MySQL Metadata

    https www baeldung com jdbc database metadata https docs oracle com en java javase 11 docs api java sql java sql Databas
  • ant design pro v5 配置拦截器,header

    ant design pro v5 配置拦截器 header 1 资料文档 https umijs org zh CN plugins plugin request requestinterceptors 2 编写app tsx 我这里是自
  • 创建一个空的Git仓库,然后本地代码推上去

    这篇文章说的是如何将本地代码库推送到远端空的代码仓库 如需了解如何从远端代码仓库克隆代码到本地 看这里 1 创建代码仓库 2 终端进入本地代码库文件夹内 3 将本地和远端联系起来 并给远端起个名字 git remote add myOwnC
  • Hudi和Kudu的比较

    与Kudu相比 Kudu是一个支持OLTP workload的数据存储系统 而Hudi的设计目标是基于Hadoop兼容的文件系统 如HDFS S3等 重度依赖Spark的数据处理能力来实现增量处理和丰富的查询能力 Hudi支持Increme
  • 微信小程序WE分析----事件分析

    目录 web分析 小程序 事件分析概述 1 新增事件管理 事件参数说明 1 填写事件配置 2 小程序添加上报代码 将上报代码添加到小程序中 3 测试事件数据上报 测试事件上报的数据是否正确 属性管理 字典管理 新增事件分析 创建事件分析 添
  • Web自动化之Selenium常用操作

    本文总结使用selenium进行web UI自动化时 会用到的一些常用操作 定位元素 driver find element by xpath 1 绝对路径 2 元素属性 3 层级和属性结合 4 使用逻辑运算符 driver find el
  • 磁盘类型和相关术语学习笔记

    磁盘类型和相关术语 在 Linux 中一切皆文件 但是类型不同 例如使用 ls l 对于设备文件和普通文件有一部分内容是不同的 即普通文件有大小 而设备文件有主设备号和次设备号 没有大小 ll 1 txt dev sda dev sda1
  • TCP/IP、UDP协议

    TCP IP协议是Internet最基本的协议 Internet国际互联网络的基础 由网络层的IP协议和传输层的TCP协议组成 通俗而言 TCP负责发现传输的问题 一有问题就发出信号 要求重新传输 直到所有数据安全正确地传输到目的地 而IP
  • module ‘keras.api._v1.keras.datasets.mnist‘ has no attribute ‘train‘AttributeError: module ‘numpy‘ h

    AttributeError module numpy has no attribute no nep50 warning 尝试过更新numpy但是更新不了 module keras api v1 keras datasets mnist
  • 常见 Web 中间件及其漏洞概述(一):IIS

    目录 PUT漏洞 漏洞原理 复现 修复 短文件名猜解 漏洞原理 IIS短文件名产生 复现 短文件漏洞的局限性 IIS短文件名扫描工具 修复 远程代码执行 解析漏洞 IIS 6 0 基于文件名 基于目录名 IIS 7 0 7 5 IIS PH