笔记27
Abstract: HTTP 内容总结,及 burpsuite 软件的使用
Table of Contents
HTTP简介
特点
- 无连接:限制每次连接只处理一个请求。服务器处理完客户的请求,并受到客户的应答后,即断开连接。以节省时间。
 - 无状态:协议对于事物处理没有记忆能力,若后续处理前面的信息,则它必须重传。
 
HTTP之URL
URI 是统一资源标识符,用来传输数据和建立连接。 URL 是一种特殊类型的 URI ,包含用于查找某个资源足够的信息。
URL 是统一资源定位符,是互联网上用来标识某处资源的地址。
URL 协议部分 域名部分 端口部分 虚拟目录部分 文件名部分 锚部分 参数部分
HTTP请求和响应
请求消息:请求行、请求头部、空行和请求数据四部分组成。
1  | GET /562f25980001b1b106000338.jpg HTTP/1.1  | 
POST 请求例子
1  | POST / HTTP1.1  | 
响应消息:状态行、消息包头、空行和响应正文。
1  | HTTP/1.1 200 OK  | 
HTTP之状态码
| 状态码 | 作用 | 
|---|---|
| 1xx | 请求已接受,继续处理 | 
| 2xx | 请求已被成功接收、理解、接收 | 
| 3xx | 重定向 | 
| 4xx | 请求有语法错误或请求无法实现 | 
| 5xx | 服务器为能实现合法请求 | 
HTTP请求方法
| 方法 | 作用 | 
|---|---|
| GET | 请求指定的页面信息,并返回实体主体 | 
| HEAD | 返回响应中没有具体内容,用于获取报头 | 
| POST | 向指定资源提交数据进行处理请求 | 
| PUT | 从客户端向服务器传送的数据取代指定的文档内容 | 
| DELETE | 请求服务器删除指定的页面 | 
| OPTION | 允许客户端查看服务器的性能 | 
| TRACE | 回显服务器收到的请求,主要用于测试或诊断 | 
浏览器地址输入 URL 后,经历流程:
- 浏览器向 
DNS服务器请求解析该URL中的域名所对应的IP地址; - 解析出 
IP地址后,根据IP地址和默认端口80,和服务器建立TCP连接; - 浏览器发出读取文件的 
HTTP请求,该请求报文作为TCP三次握手的第三个报文数据发送给服务器。 - 服务器对浏览器请求作出响应,并把对应 
HTML文本发送给浏览器; - 释放 
TCP连接; - 浏览器将该 
HTML文本并显示内容。 
GET和POST区别
GET 请求
1  | GET /books/?sex=man&name=Professional HTTP/1.1  | 
POST 请求
1  | POST / HTTP/1.1  | 
第一点:GET 提交,请求数据会附在 URL 之后,以 ? 分割 URL 和传输数据,多个参数用 & 连接。
POST 提交,把提交数据放置在 HTTP 包的包体中;
第二点:GET 传输数据收到 URL 长度限制,POST 理论上不受限制;
参考文献
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 description 为 GET_CSRF_TOKEN 点击右边 Configure item

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

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

第二步:添加会话处理规则
完成后,在同一界面的 Session Handling Rules 点击 Add 弹出新界面

在新界面修改 Rule Description 为 Update_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 均不一样,密码可以修改成功。

后续进行宏维持会话有效
参考文献