请选择 进入手机版 | 继续访问电脑版
查看: 947|回复: 3

HTTP逃逸原理解析:使用HTTP 0.9进行绕过

[复制链接]
  • TA的每日心情

    2020-9-23 11:29
  • 签到天数: 903 天

    [LV.10]以坛为家III

    发表于 2016-1-22 10:06:29 | 显示全部楼层 |阅读模式

      [color=rgb(0,]本文是HTTP逃逸系列的第一篇文章。主要是说大多数防火墙只是通过规则判断出错误的包进行阻塞,因此其实可以轻易的让防火墙无法理解的数据包绕过防火墙。本文中用到的协议是比较老但是依然在用的HTTP 0.9协议。
      什么是HTTP 0.9
      HTTP 0.9是第一个版本的HTTP协议,在1991年的时候被正式提出,实际上在更早的时候就已经一直在使用这个版本了。简单来说,它是由客户端上的GET请求和服务端的响应组成,其中,GET请求和现在用的GET请求有点类似。与HTTP 1.0中的响应包不同的是0.9版本的并不是由响应头和响应内容组成,而是只有一个响应体构成。这就意味着不可以构造特殊的数据类型(Content-type),所以响应包只是简单的以与服务器的TCP连接的断开为结束。
    在现在的HTTP 1.1中包含了请求头和请求体,如下:
    [HTML] 纯文本查看 复制代码
    HTTP/1.1 200 ok 
    Content-type: application/octet-stream
    Content-length: 68
    
    some-malware-here
    


      同样的内容,在HTTP 0.9中就没有头部,就像下面一样:
    [HTML] 纯文本查看 复制代码
    some-malware-here

      有趣的是,HTTP 1.1的请求得到的HTTP 0.9响应包会被大多数浏览器接收(除了Safari)即使有些并没有在现在的协议中被定义出来。
      HTTP 0.9如何被用于逃逸的分析
      HTTP 0.9的响应并不像HTTP 1.x的响应包,因为它没有响应头。按我们的想象,防火墙应该要过滤掉这样的响应包,因为它看起来并不符合HTTP协议。谁也不能肯定在如今的网络中不存在依然在使用HTTP 0.9的产品。所以,防火墙能做的只是检测HTTP 0.9响应包并对其做做恶意软件分析。
      但是出乎意料的是,大多数防火墙都是简单的让HTTP/0.9的响应包直接通过,而没有做进一步的检测。从排名前10的防火墙测试报告中,我们发现,仅仅只有一小部分的HTTP Evader被拦截,更多的(大概有80%)用这种方式直接通过了防火墙。由于这些防火墙并没有对HTTP 0.9的响应包做恶意软件分析,我们可以这么认为:防火墙只是简单的让所有它无法分析的数据包直接通过。
      在HTTP 0.9刚刚被提出来的时候,它仅仅只是用来显示静态页面(不需要其他字段进行说明),这种情况下,这些并不是什么问题,因为他只是用来把页面显示在浏览器中。但是,如果结合使用老版本的HTTP 0.9和HTML 5,如果遇到一个下载页面,执行下载的时候:HTTP 0.9响应可以被当成脚本、图片或缺html页面来使用,只要把它嵌入到适当的页面中就行,例如:
    [HTML] 纯文本查看 复制代码
    HTTP/1.1 200 ok 
    Content-type: application/octet-stream
    Content-length: 68
     
    some-malware-here

    同样的内容,在HTTP 0.9中就没有头部,就像下面一样:
    [HTML] 纯文本查看 复制代码
    some-malware-here
    有趣的是,HTTP 1.1的请求得到的HTTP 0.9响应包会被大多数浏览器接收(除了Safari)即使有些并没有在现在的协议中被定义出来。
    HTTP 0.9的响应并不像HTTP 1.x的响应包,因为它没有响应头。按我们的想象,防火墙应该要过滤掉这样的响应包,因为它看起来并不符合HTTP协议。谁也不能肯定在如今的网络中不存在依然在使用HTTP 0.9的产品。所以,防火墙能做的只是检测HTTP 0.9响应包并对其做做恶意软件分析。
    但是出乎意料的是,大多数防火墙都是简单的让HTTP/0.9的响应包直接通过,而没有做进一步的检测。从排名前10的防火墙测试报告中,我们发现,仅仅只有一小部分的HTTP Evader被拦截,更多的(大概有80%)用这种方式直接通过了防火墙。由于这些防火墙并没有对HTTP 0.9的响应包做恶意软件分析,我们可以这么认为:防火墙只是简单的让所有它无法分析的数据包直接通过。
    在HTTP 0.9刚刚被提出来的时候,它仅仅只是用来显示静态页面(不需要其他字段进行说明),这种情况下,这些并不是什么问题,因为他只是用来把页面显示在浏览器中。但是,如果结合使用老版本的HTTP 0.9和HTML 5,如果遇到一个下载页面,执行下载的时候:
    [HTML] 纯文本查看 复制代码
    <a href="http://attacker.test/http09-response" download="malware.exe">
    HTTP 0.9响应可以被当成脚本、图片或缺html页面来使用,只要把它嵌入到适当的页面中就行,例如:
    [HTML] 纯文本查看 复制代码
    <script src="http://attacker.test/http09-response.js">
     <img src="http://attacker.test/http09-response.gif">
     <a href="http://attacker.test/http09-response.html">
    通过这样的方式,任何文件只要以这个结构来传输,都可以直接绕过防火墙。
    原文地址:noxxi.de
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-2-28 17:24
  • 签到天数: 72 天

    [LV.6]常住居民II

    发表于 2016-1-22 12:34:35 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-7-31 22:26
  • 签到天数: 88 天

    [LV.6]常住居民II

    发表于 2016-1-22 12:49:01 | 显示全部楼层

    支持红客联盟 学习学习技术   
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-1-23 10:07
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2016-1-23 11:39:06 | 显示全部楼层
    看不明白。。。。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表