一个计算机技术爱好者与学习者

0%

Web安全之HTTP请求抓包

1. 前言

最近在研读《Web安全深度剖析》和《Web安全深度剖析》,其中的一些实践很有意思,做下记录。

2. 发送HTTP请求

2.1. 浏览器

使用浏览器,输入网址访问网站,就发起了HTTP请求。

2.2. curl

如果不借助浏览器,使用一些命令,也可以发起HTTP请求,比如curl命令。
在Windows下,需要单独安装。下载地址:https://curl.haxx.se/download.html

安装成功后,我们发起一个HTTP请求:

1
curl www.baidu.com

返回的内容是乱码。
乱码
是Windows的问题?换成Linux,依然是乱码。
后来查到,从百度获取到的文件,实际上是经过压缩的,需要解压缩,换成命令:

1
curl www.baidu.com | gunzip

乱码问题解决,但是中文依然是乱码,先不管它。
中文乱码

2.3. telnet

使用telnet命令也可以发起HTTP请求。

1、win+R,输入appwiz.cpl,回车,打开或关闭Windows功能,勾选Telnet客户端,确定。
2、打开CMD运行框,输入telnet www.baidu.com 80,然后利用快捷键“ctrl+]”来打开telnet回显。
3、按回车键,进入编辑状态。
4、输入GET /index.html HTTP/1.1,按回车键,接着输入HOST:www.baidu.com,再连续两次按回车键。
telnetbaidu
telnetbaidu2
没错,Windows下中文依然是乱码,在CentOS7下试试:
telnetbaidu3

3. HTTP抓包

3.1. WireShark

参考文档:《Wireshark入门篇》

3.2. Fiddler

Fiddler是一款优秀的Web调试工具,它可以记录所有的浏览器与服务器之间的通信信息(HTTP和HTTPS),并且允许你设置断点,修改输入/输出数据。官方下载地址:http://www.telerik.com/fiddler

1、监听HTTP请求
安装完成后,无需任何设置,Fiddler就可以监听所有浏览器和其他应用(比如360、QQ)发出的HTTP请求和响应。
监听请求和响应

2、监听HTTPS请求
Fiddler默认不记录HTTPS请求,选择Tools,Fiddler Options,HTTPS,勾选Decrypt HTTPS traffic复选框,单击OK。
https

3、设置断点
方法一:通过Rules,Automatic Breakpoints,选择断点的插入点,三个选项分别是请求之前、响应之后和不拦截。插入断点之后,会应用到所有的请求和响应。

方法二:通过命令进行断点设置。例如,bpu www.baidu.com,会拦截所有发往www.baidu.com的请求;bpafter www.baidu.com,会拦截所有来自www.baidu.com的响应;bpubpa,会清除断点。

设置完断点后,我们就可以和使用Burp一样,来拦截HTTP请求并且修改请求信息了。

4、不要误滑滚轮
我们可以利用Fiddler自己定义返回给浏览器的内容,非常方便。但是,只要点击“Break on Response”,并且滑动滚轮,自定义内容就默认设置为一张图片,你可以选择其他自定义返回的内容,但是,无法再正常返回。
所以,切记不要误滑滚轮!!!

5、中文乱码
在response信息中,经常可以看到乱码。
因为Fiddler是默认按照UTF-8编码解码的,但是很多网站采用的是GB2312/GBK/GB18030编码,却没有在HEADER中指明编码方式。

解决办法:打开注册表编辑器,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fiddler2\,添加字符串值HeaderEncoding,value为GB18030,然后重启Fiddler。
注册表
但是这样一来,UTF-8编码并且没有指明编码方式的文件,不就变成了乱码了么?所以,建议不要修改。

6、发起HTTP请求
Fiddler,可以代替HttpRequester,用来测试接口。
接口测试

3.3. Burp Suite Proxy

Burp Suite是用于Web应用安全测试工具的集成平台,下载地址:https://portswigger.net/burp/download.html

1、配置网络代理。
双击BurpLoader.jar,选择“Proxy”选项卡,然后选择“Options”选项卡,点击Add按钮,在“Bind to port”框中输入端口号6666,“Bind to address”选择“Loopback only”,然后单击“OK”按钮。
proxylistener

打开火狐浏览器,选项,高级,网络,设置,手动配置代理。在HTTP代理框中输入127.0.0.1,端口号为6666,其他不用配置,单击“确定”。
firefoxset

2、查看拦截信息。
在火狐浏览器中,输入www.baidu.com,回车后发现服务器很久没有回应信息,原因是Burp把HTTP请求拦截了,此时浏览器会处于阻塞状态。
查看Burp的Intercept选项卡,可以看到请求信息。
请求信息

3、绕过前端验证。
启动wamp服务器,在火狐浏览器访问我们自己写的登录页面。发现请求页面并没有被拦截,修改火狐代理配置。
firefoxset2
再次访问登录页面,页面被拦截,在Burp中点击“Forword”,跳转到下一步。
当我们输入的用户名或密码为空时,前端会出现提示。
用户名为空
当我们正常输入用户名和密码时,在Burp中拦截信息。
拦截信息
然后修改信息为:
修改信息
点击“Forward”,前端出现登录结果。
这个请求,就绕过了前端验证,发送了空的用户名和密码给后端。

4、拦截响应
如果我们想要拦截服务器的响应信息,那么,在Proxy,Options选项卡中,勾选Intercept response based on the following rules即可。
拦截响应

3.4. WinSock Expert

Winsock Expert是一个用来监视和修改网络发送和接收数据的程序,可以用来帮助渗透测试人员调试网络应用程序。

4. 书签