常用测试工具使用

Burpsuite Professional

抓包功能

主要使用代理→拦截功能。在选项中配置代理的IP与端口也就是工具在本机开启一个端口接收转发请求。
浏览器中配置代理服务器比如127.0.0.1 8080,HTTPS证书使用自签名证书即可。通过访问浏览器直接访问http://127.0.0.1:8080/查看是否已经开启代理
通过拦截请求、拦截禁用、放包等操作进行测试。HTTP历史记录TAB页可以查看请求的发送与返回数据包内容。
截断→行动→相关工具→CSRF Poc生成,可以修改数据包进行重新发送,还可以行动→发送给重发器等,行动→执行拦截→此请求的响应:拦截当前请求的响应

Fiddler HTTP抓包工具

可以抓HTTPS包。为什么可以抓HTTPS? 原理相当于代理(或者中间人),通过中间人模拟客户端与服务端进行通信,当然电脑要安装信任Fiddler提供的证书。所以证书、网络上的软件不能随便安装,避免软件带什么后门。

MITM Server要成为真正的Server,必须能够给指定域名签发公钥证书,且公钥证书能够通过系统的安全校验。比如Client发送了一条https://www.baidu.com/的网络请求,MITM Server要伪装成百度的Server,必须持有www.baidu.com域名的公钥证书并发给Client,同时还要有与公钥相匹配的私钥。
MITM Server的处理方式是从第一个SSL/TLS握手包Client Hello中提取出域名www.baidu.com,利用应用内置的CA证书创建www.baidu.com域名的公钥证书和私钥。创建的公钥证书在SSL/TLS握手的过程中发给Client,Client收到公钥证书后会由系统会对此证书进行校验,判断是否是百度公司持有的证书,但很明显这个证书是抓包工具伪造的。为了能够让系统校验公钥证书时认为证书是真实有效的,我们需要将抓包应用内置的CA证书手动安装到系统中,作为真正的证书发行商(CA),即洗白。这就是为什么,HTTPS抓包一定要先安装CA证书。
第二个问题,MITM Client伪装成Client。由于服务器并不会校验Client(绝大部分情况),所以这个问题一般不会存在。比如Server一般不会关心Client到底是Chrome浏览器还是IE浏览器,是Android App还是iOS App。当然,Server也是可以校验Client的。

客户端要做相应的安全校验

POSTMAN

HTTPS

File→Setting→SSL certificate verification 设置成OFF

wireshark

SYN - 创建一个连接
FIN - 终结一个连接
ACK - 确认接收到的数据

基本过程
→ SYN Seq = 0
← SYN,ACK Seq = 0 Ack = 1
→ ACK Seq = 1 Ack = 1
→ PSH,ACK -Len:700 Seq = 1 Ack =1
← ACK Seq = 1 Ack = 701
← ACK - Len:2000 Seq = 1 Ack = 701

首先由Client发出请求连接即 SYN=1 ACK=0,TCP规定SYN=1时不能携带数据,但要消耗一个序号,因此声明自己的序号是 seq=x。
然后 Server 进行回复确认,即 SYN=1 ACK=1 seq=y,ack=x+1。
再然后 Client 再进行一次确认,但不用SYN 了,这时即为 ACK=1, seq=x+1,ack=y+1。

跟踪流功能:右键→跟踪流→TCP流 tcp.stream eq 1 可以看到一连串的包,比如上传文件成功服务器返回HTTP/1.1 100 Continue HTTP/1.1 200 OK 等多个包的内容
根据IP过滤:ip.addr eq 172.1.1.1
根据端口过滤TCP:tcp && tcp.port == 80