浅析HTTP协议

来源:互联网 发布:云计算峰会的会议定位 编辑:程序博客网 时间:2024/05/21 05:59

1.HTTP工作方式:

  1. 建立连接
  2. 客户端发送请求信息
  3. 服务器发送响应信息
  4. 关闭连接

2.HTTP规范:

  • HTTP协议采用了请求/响应模型。
  • HTTP请求由三部分组成,分别是请求行,消息报头,请求正文。
    请求行主要由三部分组成,分别是请求方法,请求路径(URL),请求协议。
  • HTTP响应也是由三部分组成,分别是状态行,消息报头,响应正文。

3.HTTP协议之消息报头:

  1. 普通报头
  2. 请求报头
  3. 响应报头
  4. 实体报头

具体参考链接http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html

4.伪造HTTP请求头和响应头一些规范事项

  • Request(一个Request包括:请求行,多个普通报头,请求报头,实体报头和消息实体)

    • Request编写规范如下:(注意换行符CRLF和空格SP)
      这里写图片描述
    • 请求行编写规范如下:
      这里写图片描述
    • 以下为普通报头:
      这里写图片描述
    • 以下为请求报头:
      这里写图片描述
    • 以下为实体报头:
      这里写图片描述
  • Response(一个Response包括:状态行,多个普通报头,响应报头,实体报头和消息实体)

    • Response编写规范如下:(注意换行符CRLF和空格SP)
      这里写图片描述
    • 状态行编写规范如下:
      这里写图片描述
    • 以下为普通报头:
      这里写图片描述
    • 以下为响应报头:
      这里写图片描述
    • 以下为实体报头:
      这里写图片描述

5.例子

  • http response splitting的基本实现步骤
    • 假如有如下URL
      这里写图片描述
    • 我们可以在language参数上面做些手脚,我们可以在该参数后面拼接自己精心设计的request,构造特殊字符形成截断。
    • 伪造一个request请求
    • 进行URL转码
    • 当客户端接收到第一个响应之后会向相应的目标进行跳转,而这个时候客户端会认为第二个响应正是针对第二个请求的响应,也就是我们自己伪造的第二个响应,从而达到欺骗的目的。

ps:伪造一个request请求样例

enContent-Length: 0HTTP/1.1 200 OKContent-Type: text/htmlContent-Length: 26<html>Hacked by zhx</html>

总结:

造成http响应头截断漏洞的主要原因是对用户提交的非法字符没有进行严格的过滤,尤其是CR,LF字符的输入。攻击者通过发送一经过精心构造的request,迫使服务器认为其返回的数据是两个响应,而不是常规的一个响应。当可以通过精心制作的request完全 控制第二个响应时,可以通过这样来实现攻击。

0 0