【渗透测试小白系列】之简单使用BurpSuite进行拦包及请求包、响应包的格式和含义
(本文仅为平时学习记录,若有错误请大佬指出,如果本文能帮到你那我也是很开心啦)
一、HTTP协议基础
HTTP:HyperText Transfer Protocol,超文本传输协议
1.协议特点:
- 简单快速,请求方式get post head等8中请求方式
- 无连接(一次请求就断开)无状态(没有记忆功能,不会记录任何信息)
2.支持的模式:B/S、C/S(websocket进行通信)
二、HTTP的请求包
1.请求包格式:request=请求行(请求方式 URL 协议/版本)+请求头(形势都为ket:value)+空行+请求数据(若此处为空,请求包的请求方式为get,数据存放在URL中,若有数据,则说明该请求方式为post)
2.请求方式:
- http1.0版本: GET POST HEAD
- http1.1版本: GET POST HEAD OPTIONS DELETE TRACE CONNECT PUT PATCH
方法 | 描述 |
GET | 请求指定的页面信息,并返回实体主体 |
POST |
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。 数据被包含在请求体中。POST 请求可能会导致新的资源的建立和或已有资源的修改 |
HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
OPTIONS | 允许客户端查看服务器的性能 |
DELETE | 请求服务器删除指定的页面 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容 |
PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 |
(表格来源:https://www.runoob.com/http/http-methods.html,感谢!)
- GET和POST请求方式的比较:
相同点:
- 都可以创建数组array,数组包含键值对(key=value),其中的键为表单控件的名称,值为用户输入的数据
- 分别被视为$_GET和$_POST,是超全局变量
不同点:
- GET型方式:将用户发送的数据拼接到URL中,并且发送的数据量较小,不安全
- POST型方式:参数放在请求包中的请求数据中,查看必须使用工具查看,发送的数据量较大,安全性较高
三、HTTP的响应包
响应包:用户发送的请求包达到服务器后,要去处理该请求,把处理之后的结果发送给用户浏览器,我们将该结果称为响应包,用response表示
1.响应包格式:response=状态行(协议/版本 状态码)+消息报头+空行+响应正文(也叫做响应内容,是由HTML+CSS+JS组成的响应正文)
2.状态码
- 状态码由三位数字组成,第一位数字表示响应的类型,共有5种类型:
1xx:表示服务器已经接受到请求并且需要继续处理
2xx:表示服务器已经成功接受到请求,并处理了该请求
3xx:表示重定向,URL要跳转到其他页面去请求
4xx:表示用户请求由问题
5xx:表示服务器内部出错
3.常见状态码:
- 200 OK
表示请求被服务器正常处理
- 302 Found
临时重定向,表示请求的资源临时搬到了其他位置
- 304 Not Modified
表示客户端发送附带条件的请求时,条件不满足
- 400 Bad Request
表示请求报文存在语法错误或参数错误,服务器不理解
- 403 Forbidden
表示对请求资源的访问被服务器拒绝了
- 404 Not Found
表示服务器找不到你请求的资源
- 500 Internal Server Error
表示服务器执行请求的时候出错了
四、URL
URL:uniform resource locator,统一资源定位系统,在网络中用来表示某处的资源
- URL格式:
http(协议)://www.baidu.com(域名):8080(端口)/news(虚拟目录)/index.php(文件名部分)?parameter=deal&id=35(参数)#name(锚部分)
- parameter=deal&id=35两个参数
- 参数从?后面开始的,第一个参数和第二个参数之间用&连接
五、JDK
JDK:Java的软件开发工具包,方便我们在本地运行Java开发的工具
1.下载JDK时要复制安装JDK的路径
2.配置环境变量
- win7 配置环境变量:
右击计算机-->属性-->高级系统设置-->高级-->环境变量-->系统变量-->path,双击进入,在变量值中最后添加;加上安装JDK的路径-->确定
- win10 配置环境变量:
右击计算机-->属性-->高级系统设置-->高级-->环境变量-->系统变量-->path,双击进入,在最后的空白行中直接输入JDK的安装路径
验证:在doc命令窗口中输入 java -version 回显下图信息,表示配置环境变量成功
六、BurpSuite
BurpSuite:多功能渗透测试工具,渗透测试神器,使用JAVA开发,功能齐全,方便渗透测试人员去测试WEB站点
- 功能:爬虫(Spider)、扫描(Dashboard)、拦包(Proxy)、目标(Taget)、重发或中继(Repeater:修改数据包发出去,看回来的数据效果)、爆破(Intrudr)、解码和编码(Decoder)、比较(Comparer)、漏扫(Scanner)、定序器(Sequencer:分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具)、扩展(Extender:使用Python、Java等语言编写其他扩展功能)
七、使用BP(BurpSuite的简称)拦截数据包
1.下载JDK,配置环境变量(上面有详细步骤)
2.下载一个火狐浏览器,并打开,找到foxyproxy,右击,设置代理服务器,设置过程如下图所示
- 代理服务器:代理网络用户去取得网络信息。形象地说,它是网络信息的中转站,是个人网络和Internet服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记
- 过程如图所示:
3.打开BP,点击Proxy --> Options配置,进入一下界面,可以看到BP默认监听8080端口
- Proxy是BurpSuite最核心的部分,通过拦截,查看和修改所有的请求和响应您的浏览器与目标Web服务器之间传递
4.点击Intercept截断 --> 关闭拦截状态Intercept is off(默认开启拦截状态)
- 这里若开启拦截,浏览网页时将请求包拦截,就无法得到服务器的响应,从而浏览不到界面
5.打开phpStudy,启动Apache2、FTP、MySQL
6.在phpstudy_pro/www/中,删掉文件info.php,新建index.html
7.打开火狐浏览器,右键foxyproxy开启代理服务器(或点击foxyproxy,在选择工作模式中修改),狐狸头变蓝,在地址栏中输入127.0.0.1
8.打开BP,开启拦截状态Intercept is on,等待或者刷新火狐浏览器界面,可以看到如图所示界面
- 这里可以看到,请求方式为GET
9.打开BP,关闭拦截状态,打开火狐浏览器,浏览任意网站
- 关闭BP,抓取其他请求包,但是在浏览网站时会出现以下界面
- 点击高级,发现下面没有添加例外,换个网站
- 添加例外后,就能访问了
10.抓取POST包,就要向指定资源提交表单或者上传文件,在发起请求之前,打开BP,开启拦截状态后,发起请求,BP就可以拦截到POST包
11.拦截响应包时,要将截断服务器响应的选项勾选,如下图所示
12.在拦截到POST请求包时,点击Forward发送,就可以查看到响应包
八、数据头中每个参数的含义
1.请求头中每个参数的含义:
参数 | 含义 |
Host |
表示请求服务器的IP |
User_Agent |
表示用户本地环境(工具环境) |
Accept |
浏览器可解析的应用环境 |
Accept-Language |
浏览器可解析的语言类型 |
Accept-Encoding |
浏览器可解析的编码方式 |
Referer |
表示请求页面是从哪里来的(当前所处位置) |
Cookie |
表示服务器和浏览器之间的会话状态, 该会话状态可以表示用户是否登陆过, 一般都是服务器给配置的,具有时效性。 cookie失效,就需要用户重新登录, 只有登录成功之后,浏览器就会保存cookie, 每次去服务器去请求都会带上cookie, 并且该cookie是需要在服务器中验证的 |
X-Forwarded-For |
表示用户真实的IP |
Content-Type |
内容类型,表示该请求数据的类型 |
2.响应头中每个参数的含义:
参数 | 含义 |
Data |
服务器发出响应的时间 |
Server |
服务器的环境(如:fcgid表示Apache版本) |
Content-Length |
返回来数据包的长度 |
Connection |
连接状态 |
Content-Type |
返回响应数据的类型,告诉浏览器该使用哪种 方式去解析或打开该响应数据的内容 |
Location |
表示要跳转到哪个页面中 |
Set-Cookie |
表示服务器给浏览器设置cookie的值 |