笔记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
均不一样,密码可以修改成功。
后续进行宏维持会话有效
参考文献