Abstract: HTTP 内容总结,及 burpsuite 软件的使用

Table of Contents

  1. HTTP简介
    1. 特点
    2. HTTP之URL
    3. HTTP请求和响应
    4. HTTP之状态码
    5. HTTP请求方法
    6. GET和POST区别
  2. burpsuite
    1. burpsuite使用
    2. 用burpsuite的宏绕过CSRF TOKEN验证

HTTP简介

特点

  • 无连接:限制每次连接只处理一个请求。服务器处理完客户的请求,并受到客户的应答后,即断开连接。以节省时间。
  • 无状态:协议对于事物处理没有记忆能力,若后续处理前面的信息,则它必须重传。

HTTP之URL

URI 是统一资源标识符,用来传输数据和建立连接。 URL 是一种特殊类型的 URI ,包含用于查找某个资源足够的信息。

URL 是统一资源定位符,是互联网上用来标识某处资源的地址。

URL 协议部分 域名部分 端口部分 虚拟目录部分 文件名部分 锚部分 参数部分

HTTP请求和响应

请求消息:请求行、请求头部、空行和请求数据四部分组成。

1
2
3
4
5
6
7
GET /562f25980001b1b106000338.jpg HTTP/1.1
Host img.mukewang.com
User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Accept image/webp,image/*,*/*;q=0.8
Referer http://www.imooc.com/
Accept-Encoding gzip, deflate, sdch
Accept-Language zh-CN,zh;q=0.8

POST 请求例子

1
2
3
4
5
6
7
8
POST / HTTP1.1
Host:www.wrox.com
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Content-Type:application/x-www-form-urlencoded
Content-Length:40
Connection: Keep-Alive

name=Professional%20Ajax&publisher=Wiley

响应消息:状态行、消息包头、空行和响应正文。

1
2
3
4
5
6
7
8
9
10
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8

<html>
<head></head>
<body>
<!--body goes here-->
</body>
</html>

HTTP之状态码

状态码 作用
1xx 请求已接受,继续处理
2xx 请求已被成功接收、理解、接收
3xx 重定向
4xx 请求有语法错误或请求无法实现
5xx 服务器为能实现合法请求

HTTP请求方法

方法 作用
GET 请求指定的页面信息,并返回实体主体
HEAD 返回响应中没有具体内容,用于获取报头
POST 向指定资源提交数据进行处理请求
PUT 从客户端向服务器传送的数据取代指定的文档内容
DELETE 请求服务器删除指定的页面
OPTION 允许客户端查看服务器的性能
TRACE 回显服务器收到的请求,主要用于测试或诊断

浏览器地址输入 URL 后,经历流程:

  1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
  2. 解析出 IP 地址后,根据 IP 地址和默认端口 80 ,和服务器建立 TCP 连接;
  3. 浏览器发出读取文件的 HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文数据发送给服务器。
  4. 服务器对浏览器请求作出响应,并把对应 HTML 文本发送给浏览器;
  5. 释放 TCP 连接;
  6. 浏览器将该 HTML 文本并显示内容。

GET和POST区别

GET 请求

1
2
3
4
5
GET /books/?sex=man&name=Professional HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive

POST 请求

1
2
3
4
5
6
7
8
9
POST / HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive

name=Professional%20Ajax&publisher=Wiley

第一点:GET 提交,请求数据会附在 URL 之后,以 ? 分割 URL 和传输数据,多个参数用 & 连接。

POST 提交,把提交数据放置在 HTTP 包的包体中;

第二点:GET 传输数据收到 URL 长度限制,POST 理论上不受限制;

参考文献

HTTP协议

burpsuite

burpsuite使用

关于软件的使用可以参考 burpsuite实战指南 一书。

用burpsuite的宏绕过CSRF TOKEN验证

先打开 firefox 浏览器,登录账号,修改 DVWA Security 级别为 High

然后进入到 CSRF页面

修改密码

HTTP history中找到修改密码的请求包,发送到 Repeater 中,由于 user_token 已失效,密码修改失败, HTTP 状态码为 302,重定向到 index.php 页面。

接下来,开始使用宏绕过 CSRF 验证:

第一步:录制宏

Project Option 下 找到 Sessions ,然后找到底部的 Macros ,点击 Add 即创建一个新的宏。

点击 Add 后会弹出一个新窗口

HTTP 历史记录中选择 /dvwa/vulnerabilities/csrf/ 在向应报文中找到 user_token 的值

点击右下角 OK 后,进入 Macro Editor 界面

修改 Macro descriptionGET_CSRF_TOKEN 点击右边 Configure item

Parameter name 改为 user_token 参数名与修改密码请求中的一致。用鼠标拖动选择 user_token 值,其余值会自动填充。点击 OK

完成后可以在宏列表中看到刚才录制的宏

第二步:添加会话处理规则

完成后,在同一界面的 Session Handling Rules 点击 Add 弹出新界面

在新界面修改 Rule DescriptionUpdate_CSRF_Token

点击 Rule Actions 选择 GET_CSRF_TOKEN ,然后选择 Update only the following parameters 选择 user_token

选择好后,进入 Session Handling 选择 Scope界面,把修改密码的 URL 粘贴到 URL Scope

第三步:验证规则是否生效

配置好后,返回到 Repeater 点击 Go 发现状态码 200 OK

每点击一次,user_tocken 均不一样,密码可以修改成功。

后续进行宏维持会话有效

参考文献

经验分享|Burpsuite中宏的使用