IIS远程代码执行漏洞——CVE(IIS远程代码执行漏洞)

IIS远程代码执行漏洞——CVE 纪年科技aming网络安全 ,深度学习,嵌入式,机器强化,生物智能,生命科学。 叮叮叮:产品已上线 —>关注 官方-微信公众号——济南纪年信息科技有限公司民生项目:商城加盟/娱乐

编年史技术阿明

网络安全、深度学习、嵌入式、机器增强、生物智能、生命科学。

叮叮叮:产品已上线- 关注官方- 微信公众号—— 济南吉年信息技术有限公司

民用项目:商场加盟/娱乐交友/创业商圈/外包兼职开发项目发布/

安防项目:态势感知防御系统/内网巡检系统

云服务项目:云主机/域名/弹性存储-数据库-云盘/API-AIeverthing动态伸缩

产品咨询/售后服务(同)

我们在纸上得到的最终是肤浅的,但我们知道我们必须这样做。

我们正在寻找志同道合的合作伙伴来开展我们的业务。抱团滴滴阿明联系方式!

#本文为广告系统自动投放广告

# 如有侵权 删改 请速速联系我们

IIS 中默认启用内核缓存,并在请求处理管道中执行与缓存相关的任务。

当HTTP 协议栈(HTTP.sys) 无法正确解析HTTP 请求时,就会出现IIS 远程执行代码漏洞。

通过实验学习

IIS架构、HTTP协议栈及其工作原理、HTTP协议栈漏洞、

掌握MS15-034漏洞利用技术和漏洞原理。

网络安全

信息安全从业者

计算机基础、计算机网络

先验知识

漏洞信息

漏洞编号:CVE-2015-1635

漏洞描述:

HTTP协议栈(HTTP.sys)中存在IIS远程执行代码漏洞。

当HTTP.sys 无法正确解析HTTP 请求时,就会出现该漏洞。

Microsoft 针对此漏洞的公告:https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2015/ms15-034

受影响的版本:

微软已安装

IIS 6.0 或更高版本

Windows Server 2008 R2/Server 2012/Server 2012 R2 和Windows 7/8/8.1 受此漏洞影响。

IIS体系结构

在系统上安装IIS(Internet 信息服务)后,

有一种服务称为万维网发布服务(WWW 服务)。

当客户端向系统发送HTTP请求时,

WWW服务根据负载均衡策略启动或选择工作进程w3wp.exe。

处理HTTP 请求并发送适当的HTTP 响应。

w3wp.exe进程使用HTTP.sys来完成许多与HTTP协议处理相关的任务。

包括HTTP协议解析、响应内容组装、内容缓存。

HTTP.sys 接收HTTP 请求并通过TCPIP.sys 发送HTTP 响应。

HTTP协议栈及其工作方式

IIS Web 服务器有一个HTTP 侦听器作为Windows 网络子系统的一部分。

这是由HTTP 协议栈(HTTP.sys) 内核模式设备驱动程序实现的。

HTTP 协议栈解析HTTP 请求并向客户端提供响应。

HTTP.sys 在IIS 6.0 中提供以下服务:将HTTP 请求路由到适当的请求队列并在内核模式下缓存响应。执行所有基于文本的服务功能,例如连接限制、连接超时和队列。长度和宽度限制。

创建网站时,IIS 会向HTTP.sys 注册该网站,HTTP.sys 接收对该网站的所有HTTP 请求。 HTTP.sys 充当转发器,将传入的Web 请求发送到运行网站或Web 应用程序的用户模式进程的请求队列,并将响应发送回客户端。

除了从内部缓存检索保存的响应之外,HTTP.sys 不处理传入请求。因此,特定于应用程序的代码不会加载到内核模式,因此特定于应用程序的代码中的错误不会影响内核或导致系统故障。

HTTP协议栈漏洞

IIS 中默认启用内核缓存,并在请求处理管道中执行与缓存相关的任务。

缓存通过将处理过的信息(例如网页)存储在服务器的内存中来提高性能。

使用Range HTTP 标头利用此漏洞允许

此HTTP 标头允许客户端按需从服务器请求特定内容。

范围标头通常包含以下值:

范围:bytes=124 到5656,还可能包括:范围:bytes=0-

如果Range头的上限不存在,

假设客户端正在请求完整的数据。

相反,如果攻击者指定非常高的限制并发送带有特殊Range 值的HTTP 请求,

这会导致Range 变量在服务器上溢出。

Range 标头的上限为0xFFFFFFFFFFFFFFFFFF。

这是64 位无符号整数的最大值。

如果攻击者使用该值发送HTTP请求,就会发生整数溢出。

服务器回显消息“无法满足请求的范围”。这意味着客户端请求的文件部分超出了服务器上的文件末尾。

成功利用该漏洞还可能导致拒绝服务。

IIS服务器安全相关实验

IIS6.0写权限漏洞利用:https://www.hetianlab.com/expc.do?ec=ECID172.19.104.182015102217203100001

IIS6.0远程代码执行零日漏洞分析与利用:https://www.hetianlab.com/expc.do?ec=ECID9d6c0ca797abec2017032915142000001(CVE-2017-7269)

fckEditor上传攻击利用IIS解析漏洞:https://www.hetianlab.com/expc.do?ec=ECID172.19.104.182015102217243800001

目的

通过实验了解IIS架构,

HTTP 协议栈、其工作原理以及HTTP 协议栈中的漏洞;

掌握MS15-034漏洞利用技术和漏洞原理。

实验室环境

客户端:Windows Server 2008 R2,IP:10.1.1.134

攻击:Kali,IP:10.1.1.100

漏洞利用工具下载地址:http://tools.hetianlab.com/tools/CVE-2015-1635.zip

任务描述:漏洞检测。

这是HTTP.sys 中已知的整数溢出漏洞。

通过向IIS 服务器发送以下格式的HTTP 请求来触发漏洞检测:

Kali机器运行命令curl url -H“Host:ip”-H“Range:bytes=0-18446744073709551615”。

此时,18446744073709551615转为十六进制就变成了0xFFFFFFFFFFFFFFFF(16F),

这是可以表示为64 位无符号整数的最大整数。

所以整数溢出一定与这个异常整数有关。

如上图所示,

如果您的IIS 服务器返回“未满足请求的范围”,则您很容易受到攻击。

如果返回“请求头名称无效”,说明漏洞已修复。

下载脚本:

登录后复制

wget http://tools.hetianlab.com/tools/CVE-2015-1635.zip

解压缩CVE-2015-1635.zip。

1.2.

注意实验机IP的变化。

使用POC进行漏洞检测。

表明目标机器存在漏洞。

实验步骤2

任务描述:MS15-034利用攻击:获取内存数据。

在Kali机器上打开msfconsole并搜索与漏洞相关的漏洞利用模块。

使用第二个模块

ms15_034_http_sys_memory_dump 读取服务器内存数据。

HTTP 协议栈请求处理HTTP.SYS 内存信息的泄露。

执行攻击。

成功读取服务器内存数据。

实验步骤3

任务描述:MS15-034利用攻击:拒绝服务攻击。

利用第一个模块

ms15_034_ulonglongadd执行DDOS攻击:通过HTTP协议栈请求处理拒绝服务

设置参数并执行攻击。

注意:在执行攻击之前,可以先切换到客户端,查看攻击前后的执行情况。

在实验机器上成功攻击客户端计算机的表现:

实验步骤4

漏洞分析:拒绝服务攻击。

将请求发送到HTTP服务器后,

w3wp.exe 处理HTTP 请求。

TCPIP.sys 将任何HTTP 协议内容转发到HTTP.sys。

如果请求是HTTP 范围的请求,

调用函数UlpParseRange() 解析请求并获取请求范围的起始和结束位置。

并计算范围的长度。

如果起始位置为0,结束位置为0xFFFFFFFFFFFFFFFFFF,

该范围的长度等于0,并且代码不检查溢出或采取任何错误处理步骤。

如果起始位置为284,结束位置为0xFFFFFFFFFFFFFFFFFF,

范围的长度等于-284,十六进制值为0xFFFFFFFFFFFFFFFFEE4。

如果解释为无符号整数,该值可能会非常大。

解析HTTP 请求后,调用函数UlAdjustRangesToContentSize()。

如果起始位置和长度“无效”

(范围的起始位置为0xFFFFFFFFFFFFFFFFFF,范围的长度为0xFFFFFFFFFFFFFFFFFF,并且

起始位置=请求的网页长度,结束位置=请求的网页长度),

然后该函数调整范围的起始位置和长度。

如果连续接收到相同的请求,则对该请求的响应被缓存并从缓存中检索并发送给请求者。

该过程调用函数UxpTpDirectTransmit()来计算HTTP响应包的长度。

组装好HTTP响应包后,

HTTP.sys将数据包信息转发给协议栈驱动程序进行传输。

TCPIP.sys中的TcpSegmentTcbSend()函数遍历数据包各部分内容,但函数内部出现整数溢出。

当HTTP 范围请求以284 开头时,

如果结束位置是18446744073709551615(十六进制值为0xFFFFFFFFFFFFFFFFFFFF),

该范围超出了请求的网页文件的大小。

如果HTTP响应长度过长,导致循环执行多次,出现整数溢出,

虚拟地址用于构造部分内存描述符列表。出现蓝屏是因为该范围不是源范围的子范围。

实验步骤五

漏洞分析:获取内存数据。

假设3-18446744073709551615 设置为range1。

将1 到600 设置为范围2,

函数UlpParseRange() 解析HTTP 请求后,

调用函数UlAdjustRangesToContentSize()。

此时range1触发整数溢出(3+0xFFFFFFFFFFFFFFFD=0)。

如果连续接收到相同的操作,则对该请求的响应被缓存并从缓存中检索并发送给请求者。

通过使用多范围请求,

每个范围的内容前面都有范围绑定标记和范围信息。

HTTP.sys组装HTTP响应包后,将数据包信息在协议栈驱动下转发出去。

TCPIP.sys 中的函数TcpSegmentTcbSend() 扫描数据包的每个部分。

使用多个范围请求会增加HTTP 响应的长度,从而可能会暴露更多信息。

仅使用单个范围会导致HTTP 响应长度太长或太短。

如果HTTP响应长度太长,系统会蓝屏。

如果HTTP响应的长度太小,目标网页内容信息泄露后,缓冲区将不会被覆盖。

因此,攻击者使用多范围请求来泄露更多信息。

Bug修复

禁用输出缓存上的内核缓存(禁用IIS 内核缓存)。

分析与思考

详细分析请访问https://blogs.360.cn/post/cve_2015_6135_http_rce_analysis.html。

参考

1. https://technet.microsoft.com/en-us/library/cc739400(v=ws.10).aspx

2. https://www.trendmicro.com/en_us/research/15/d/iis-at-risk-the-http-protocol-stack-vulnerability.html?_ga=2.58551274.1902911539.1609211638-1589647619.1609211638

以上#IIS远程代码执行漏洞——CVE相关内容来源网络,仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92692.html

(0)
CSDN's avatarCSDN
上一篇 2024年6月28日 上午9:28
下一篇 2024年6月28日 上午9:46

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注