自学web安全day03--抓包工具基础--BurpSuite和Yakit

1,748 阅读10分钟

一.BurpSuite

1.通信模式

1.无代理的通信

image.png

2.有代理的通信

image.png

3.通信模式说明

Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使我们自动化或手工能更好地完成对web应用的渗透测试和攻击。Burp Suite是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据、服务器端的返回信息等。

2.设置代理

1.设置代理的意义(Proxy 代理)

我们可以通过代理的设置,做到对web浏览器的流量拦截,并对经过 BurpSuite代理的流量数据进行处理。

2.如何在浏览器上设置代理?(设置代理的步骤)

S1 找到浏览器的拓展坞(可自行搜索相关浏览器教程).搜索如下代理"Proxy SwitchyOmega"

image.png

可自行根据需要进行新手教程 image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

S2 设置如下代理

说明:为什么要设置为127.0.0.1:8080,因为要与BurpSuite的默认IP和端口匹配

image.png

设置完记得保存设置 image.png

S3 打开BurpSuite,"Intercept is on"表示拦截开始 image.png

3.安装证书

1.为什么要安装证书?

设置好代理之后,因为Burp Suite默认只能抓取http请求,如果要抓取https的则需要安装证书,否则会出现 “链接不安全” 之类的的提示

image.png

2.证书下载

下载步骤如下:

S1 先关闭BurpSuite的拦截(此时代理还开着哦)

image.png

S2 在网站中搜索http://burp/, 点击右上角安装证书

image.png

S3下载后根据安装证书过程导入即可

image.png

image.png

这里选择本地计算机就可以

image.png

image.png 剩下的默认即可

image.png

S4 把Proxy中设置的"不代理的地址列表"清空,便于后续操作

image.png

S5 设置BurpSuite,防止后续响应包出现"中文乱码"问题
image.png

4.BurpSuite基础学习

1.Proxy模块--代理

image.png

1.Intercept--拦截

image.png

1.作用

用于显示和修改HTTP请求和响应

2.按钮功能

1.[Forward]--提交(更进一步)

实际请求包不止有一个,每次会单独发送一个请求包,如果所有的请求包都没有发完,浏览器会"转圈",迟迟无法进入目标url。

2.[Drop]--丢弃

丢弃一个请求包,但是这会导致服务器无法接受客户端的请求

3.[Intercept is on/off]

当"intercept is on/off "为"on"状态时,会实时拦截HTTP请求包。

image.png

4.[Action]--功能

交互功能,可以将数据包发送给其他模块,鼠标右键也能打开Action

2.HTTP history--HTTP历史

image.png

1.作用

显示所有请求产生的细节:

目标服务器和端口,HTTP方法,URL,以及请求中是否包含参数或被人工修改,HTTP的响应状态码,响应字节大小,响应的 MIME类型,请求资源的文件类型,HTML页面的标题,是否使用 SSL,远程IP地址,服务器设置的cookies,请求的时间。

image.png

image.png

2.相关说明

Request请求包,Response响应包

image.png

3.WebSockets history--网络套接字历史记录

image.png

1.作用

此模块与HTTP history大同小异,主要用于记录WebSockets的数据包

2.图示

image.png

4.Proxy settings-代理设置

image.png

1.作用

该选项主要用于设置代理监听、请求和响应,拦截反应,匹配和替换,ssl等

2.图示

image.png

2.Intruder模块--入侵者(爆破、枚举)

Burp Intruder是一个强大的工具,用于自动对Web应用程序自定义的攻击,Burp Intruder是高度可配置的,并被用来在广范围内进行自动化攻击。你可以使用 Burp Intruder方便地执行许多任务,包括枚举标识符,获取有用数据,漏洞模糊测试。合适的攻击类型取决于应用程序的情况,可能包括:缺陷测试:SQL注入,跨站点脚本,缓冲区溢出,路径遍历;暴力攻击认证系统;枚举;操纵参数;拖出隐藏的内容和功能;会话令牌测序和会话劫持;数据挖掘;并发攻击;应用层的拒绝服务式攻击

image.png

1.启用方式

将拦截的包通过Action选项发送至Intruder模块即可

image.png

2.按钮功能

1.[Position]

功能:设置payloads的插入点以及攻击模式

image.png

[target]:配置攻击目标服务器的域名信息

image.png

[attack-type--攻击类型]

1.[Sniper]:狙击手模式,将一组攻击载荷分别在每一个位置上逐个放入单个payload测试,比如字典里有五个payload,在请求模板上定义了两个payload位置,在修改时会把这五个payload分别放入第一个位置,再分别放入第二个位置,最后产生十个版本的请求。

--简单来说狙击手模式就是字典里的数据放在一个位置,另一个位置确定。(要么账号要么密码)

2.[Battering ram]:攻城锤模式,遍历一组有效载荷,在所有定义的位置上放入同一个载荷。同样是五个payload,两个位置,那一共会有五个版本的修改请求,每个版本的请求的两个位置上是同样的payload。

--简单来说攻城锤模式就是字典里的数据放在两个位置(账号和密码均一样)

3.[Pitchfork]:草叉模式,每一个变量对应一个字典。特点:爆破次数取决于变量少的字典。使用多组有效载荷,每个定义的位置使用一组不同的有效载荷。举个例子,两个位置、两组攻击载荷分别有5个payload,第一次攻击将第一组的第一个payload放入与第一组对应的位置,将第二组第一个payload放入与第二组对应的位置;第二次攻击将第一组第二个payload放入相应位置,将第二组第二个payload放入对应位置,共产生五次攻击。

--简单来说草叉模式就是账号用账号的字典破解,密码用密码的字典破解,两个字典不同且独立

4.Cluster bomb:集束炸弹模式:组合爆破,每个变量对应一个字典,并交集爆破。特点:爆破次数为字典1 * 字典2。与Pitchfofrk不同的是,攻击时,第一个位置放入第一组的第一个 payload然后在第二个位置遍历第二组中所有的payload,然后第 一个位置再放入第一组的第二个payload,第二个位置同样再遍历一次第二组的所有payload,一直下去,一共发起了5*5=25次攻击请求

--简单来说集束炸弹模式就是账号密码两个字典,但是两个字典的每个值都会与对方进行交叉匹配(规模很大)

image.png

[§标记设置]

用于设置payload放置位置(payload的样本数据会在该位置填充数据)

--这里假设我们已知账号为admin但是不知道密码,因此给password设置标记

image.png --以Sniper狙击手模式攻击

image.png

--这里简单编写了一个password.txt的一个文本文件

image.png

--进行攻击,按Length排序,可发现有一个最大的,说明password就是账户admin的密码

问题:为什么通过Length就能判断谁是正确密码呢?

答:因为网站返回的账号登录成功与登录失败的反馈信息长度是不同的,有时也可能根据Status来判断,网站设计时在登录成功与失败的状态码有时也会不同

image.png

--点击正确密码password,在下方Response中查看服务器返回的消息,表示账号密码正确

image.png

--也可以在Render下看到 image.png

2.[Payloads]

image.png

作用:配置Positions设置的标记位的字典。

image.png

知识补充:前端校验与后端校验--字典爆破情况

1.验证码captcha的作用

验证码本身只能用来防机器的一些恶意攻击,不能防人,验证码是防机器的,防止恶意破解密码、刷票、论坛灌水、刷页。有效的防止某个黑客以特定程序暴力破解的方式进行不断的登录尝试。

一种常用的CAPTCHA测试是让用户输入一个扭曲变形的图片上所显示的文字或数字,扭曲变形是为了避免被光学字符识别(OCR, Optical Character Recognition)之类的电脑程序自动辨识出图片上的文数字而失去效果。由于这个测试是由计算机来考人类,而不是标准图灵测试中那样由人类来考计算机,人们有时称CAPTCHA是一种反向图灵测试。

2.前端验证码:由前端浏览器生成的验证码,填完验证码后,先检查验证码正确与否,如果正确则向后端发送请求,调用后端接口。

但是验证码放在前端,安全性不高

3.后端验证码:后端验证码是由后端生成的验证码。 当用户打开登录页面后,浏览器会向服务器发送请求并携带生成的令牌tolken,服务器随机生成验证码,并将验证码和tolken的对应关系存储在redis缓冲中,之后会在前端动态地生成一张验证码图片。 当用户输入验证码并点击登录的时候,服务器会在redsi缓存中找到该浏览器的tolken对应的验证码,验证验证码是否正确,如果正确,接下来开始比较用户名和密码。

3.Repeater(重放)

Burp Repeater是一个手动修改并补发个别HTTP 请求,并分析他们的响应的工具。它最大的用途就是和其他Burp Suite 工具结合起来。你可以从目标站点地图,从Burp Proxy浏览记录,或者从Burp Intruder 攻击结果上的请求,发送到Repeater上,并手动调 整这个请求来微调对漏洞的探测或攻击。

image.png

二.Yakit

Yakit是基于yak语言开发的网络安全单兵工具,旨在打造一个覆盖渗透测试全流程的网络安全工具库。

1.Yakit的下载及安装

S1 地址下载: Yak Language Yak Program Language | Yak Program Language

image.png

S2 同意免责声明

image.png

S3 初始化网络设置

image.png

S4 安装引擎

image.png

S5 新建完项目后选择此工具

image.png

2.Yakit的使用--MITM交互式劫持工具

S1 初始化配置主机和监听端口

image.png

S2 (操作同BurpSuite)配置代理

image.png

S3 劫持该包

--手动劫持:同Intercept on

--自动放行:同Intercept off

image.png

--history:同HTTP history image.png

image.png

--fuzz:模糊测试(fuzz testing, fuzzing)是一种软件测试技术。其核心思想是自动或半自动的生成随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏。模糊测试常常用于检测软件或计算机系统的安全漏洞。

--简单来说,可以看成BurpSuite的Intruder(爆破、枚举)和Repeater的集合

S4 点击Fuzz-建立标签-配置字典-开始爆破

先建立payload position:双击需要爆破的地方即可

右键-插入模糊测试字典标签

image.png

image.png

此时password处变样

image.png

发送数据包

image.png

password即为admin的密码

image.png

详情页在这里 image.png

image.png