一、什么是http.sys远程代码执行漏洞
http.sys 是 Windows 操作系统的一个核心网络组件,它是 IIS、HTTPAPI、Windows 服务等许多 Windows 组件的基础,并且是前端 Web 服务器与后端应用程序之间的重要桥梁。http.sys 在接受HTTP请求时处理URL,映射对应的处理程序,并提供了高性能的基础设施。
而 http.sys 远程代码执行漏洞是指,攻击者可以构造特殊的 HTTP 请求,利用 http.sys 漏洞执行任意代码,进而获取系统权限,控制受害者服务器和窃取敏感信息,这是一种十分严重的漏洞。
下面来看一下可以用来利用http.sys漏洞的代码示例:
<!DOCTYPE html>
<html>
<head>
<title>http.sys remote code execution vulnerability demo</title>
</head>
<body>
<form action="http://localhost/" method="POST" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="Content-Type" value="a" />
<input type="hidden" name="Translate" value="f" />
<input type="hidden" name="Host" value="localhost" />
<input type="submit" value="Submit" />
</form>
</body>
<script>
document.forms[0].submit();
</script>
</html>
二、http.sys远程代码执行漏洞的原理
http.sys 可以处理大多数 HTTP 请求,比如 GET、POST、HEAD、DELETE 等等,这些请求都会最终落到 http.sys 上,然后由其做出相应的响应,名字中的“sys”是 system 的简称,表明了它高度集成在操作系统中。http.sys 的一个重要特性是它提供了 URL 监听和处理功能。例如,当请求 http://example.com/index.html 时,http.sys 可能会将请求映射到文件系统上的某个位置,也可能将请求转发到另一个处理程序上处理。然而,这个映射和转发是按照 URL 来决定的,在这里也就出现了一个名为“Unicode缺陷”的漏洞。
这个漏洞是因为 http.sys 将 URL 转换为 Unicode 字符集,例如 http://example.com/abc 会被转换为 \u0061\u0062\u0063,这是由于 HTTP 协议是不支持 Unicode 编码的,所以需要进行转换。而攻击者可以构造一串恶意编码,绕过一些过滤机制,例如使用 %u0025%u30 制作 %/%00 直接绕过IIS检查,该漏洞允许攻击者通过 unicode 编码方式发起 HTTP 请求,伪造一个虚假的字符集,最终导致 http.sys 错误地处理恶意 URL 的路径部分,并传递给应用程序处理,这就提供了远程代码执行的机会。
执行代码的漏洞主要存在于 TCP/IP 栈,通过传递不正确的HTTP请求,攻击者可以向内核模式传递恶意代码从而导致代码执行,从而进一步造成服务器被攻陷。
三、http.sys 远程代码执行漏洞的危害
http.sys 漏洞的危害非常大,攻击者可以通过 http 请求执行任意代码,进而获取系统权限,控制受害者服务器和窃取敏感信息,甚至可能使整个系统瘫痪。如果黑客成功入侵,它们可以轻松地窃取与骇客相连的设备。如果不能及时发现漏洞并进行修复,这将对网络的安全和稳定性构成极大的威胁。需要注意的是,攻击者可以使用已知的漏洞来攻击网络设备,这是因为它们通常被放置在前端,成为第一道防线,为其他应用程序提供服务。
四、如何防范http.sys远程代码执行漏洞
为了防范 http.sys 远程代码执行漏洞,我们可以参考以下几点来做出防御:
1. 参考微软开发的“字符串查询解释” 修复程序,将其应用于受影响的 Web 服务器。
2. 禁用网络上的远程管理和对外开放的端口,对关键系统进行管控。
3. 检查与 http 协议相关的软件是否有新的安全补丁或通告。需及时查看其官方网站,收到漏洞公告时及时升级软件、修改参数。
4. 对 Web 服务器的访问进行限制,避免远程攻击者通过交互式终端服务器进行未经授权的访问。
需要注意的是,及时升级系统和软件补丁是防范任何漏洞的重要手段。
五、总结
http.sys 远程代码执行漏洞是一种非常危险的安全漏洞,攻击者可以通过构造特殊的 HTTP 请求,执行任意代码,控制受害者服务器和窃取敏感信息。为了防范该漏洞,我们可以参考微软发布的修复程序、禁用网络上的远程管理和对外开放的端口、检查相关软件的安全补丁或通告、限制 Web 服务器的访问等措施。总之,我们应该保持着对各种安全漏洞的高度警惕,挖掘潜在漏洞的同时也要不断地寻找应对之道。