最近开始学习fiddler安全测试,现将学习知识写下,供大家分享,也供自己以后参考学习。
一、普通https抓包设置
先对Fiddler进行设置:
勾选“CaptureHTTPS CONNECTs”,接着勾选“Decrypt HTTPS traffic”。同时,由于我们是通过WiFi远程连过来,所以在下面的选项框中选择“...fromremote clients only”。
如果你要监听的程序访问的HTTPS站点使用的是不可信的证书,则请接着把下面的“Ignore servercertificate errors”勾选上。
监听端口默认是8888,你可以把它设置成任何你想要的端口。勾选上“Allow remote computersto connect”。
为了减少干扰,可以去掉“Act assystem proxy on startup”。
3)设置Android设备,添加代理服务器
保证PC所在网络和Android所用的wifi是相通的(最好是在自己PC 用360wifi供手机上网)。
获取PC的局域网IP地址
这里的IP是192.168.18.39。
下面来设置Android设备上的代理服务器:
打开WiFi设置页面,选择要连接的AP,并且长按,在弹出的对话框中,选择“修改网络”。
在接下来弹出的对话框中,勾选“显示高级选项”。在接下来显示的页面中,点击“代理”,选择“手动”。
代理服务器主机名设为PC的IP,代理服务器端口设为Fiddler上配置的端口8888,点"保存"。
这样就可以对普通的https抓包了。
二、过证书校验
上面的设置还不能抓对https证书进行了校验的APP,像我们公司的APP对安全要求比较高,还需要将Fiddler代理服务器的证书导到Android设备上才能抓这些APP的包。
安装的过程:
将证书FiddlerRoot.cer放到手机SD卡根目录下,点击手机设置-安全和位置-从存储盘安装证书在会弹出对话框中“凭据用途”选择Wi-Fi,点击确定
三、使其在HttpURLConnection下正常抓包
通过上面的设置大多数的APP都可以正常抓包了,但是像我们公司的APP还是不行,会报错
After the client received notice of the established CONNECT, it failed to send any data.
还需要对fiddler进行如下设置:
点击"Rules->CustomizeRules";
在这个函数OnBeforeResponse后面添加
if (oSession.oRequest["User-Agent"].indexOf("Android")> -1 && oSession.HTTPMethodIs("CONNECT")) {oSession.oResponse.headers["Connection"] = "Keep-Alive"; }
如下图所示:
这里的" Android"可替换为User-Agent里的其它字符,确保匹配上User-Agent就行