BurpSuite 功能概览
简介
写作思想:相比较具体介绍某个功能的用法。会更加侧重于介绍 Burp 提供哪些功能。这样好处是在比较复杂的测试场景,如果Burp 刚好提供对应的功能,就不用花费精力造轮子了。
而需要掌握具体操作方法,只需要查阅Burp 的官方手册。Burp 查阅手册十分方便,只需要点击相应功能旁边的 即可。
本文所使用的 BurpSuite 版本为 v2021.8.2 Professional 。
⭐ 代表比较常用、重要的子功能。并非官方统计,作者的个人总结,仅供参考
安装启动
可以在此根据需要,下载相应版本的BurpSuite https://portswigger.net/burp/releases。
此处决定将要启动的工程的存储类型。是打开一个临时工程、还是在磁盘上创建一个新工程、或者打开一个曾经保存的工程。
在渗透测试项目中,建议在磁盘创建一个新工程,因为这样在复测的时候可以很方便恢复到初测的场景。但如果是用于练习的话,使用临时工程就行。
此处主要决定 Burp 的设置选项,是采取默认选项,还是使用工程中自带的选项,还是额外加载其它选项文件。
此处建议将 Burp 个性化设置之后,将项目选项进行保存,这样每次启动时会恢复个性化设置。
各模块及功能的详细介绍
Dashboard
控制和监视自动事件。
左上角是当前项目的自动任务,Intruder 任务也在此显示。
左下角是Burp 运行的一些事件记录,通常主要查看网络联通问题。
右侧是显示由 Burp 发现的一些问题及对应的详细问题。
New scan⭐
进行主动 爬取 或 爬取并审计。
Scan details
扫描的类型,要扫描的目标 url 等。
Scan configuration-Crawl
-
Crawl Optimization:决定爬取的深度,以及爬取的策略。
-
Crawl Limits: 决定爬取的终止条件。
-
Login Functions: 决定是否触发登录、注册数据功能。
-
Handling Application Errors During Crawl:在爬取时遇到错误时,满足什么条件会暂停任务。
-
Miscellaneous:一些爬取过程中的调整,各选项通俗易懂,默认选项足以应付绝大多数场景。值得注意的是,建议 Use embedded browser for Crawl and Audit 设置为 yes,即使用内置浏览器作为爬取引擎,可以处理js、加载额外资源等,从而爬取到更多内容。
Scan configuration-Audit
- Audit Optimization:审计的优化,决定速度,精确性。四个选项分别决定:
- 基于审计的值,是否跳过不太可能的漏洞检查。例如一个数字值就不会尝试目录遍历漏洞。
- 将经常出现的问题进行合并。
- 自动维持 session。只在当选择 Crawl and Audit 模式才有作用。
- 在必要时遵循重定向。可以在Project options.HTTP.Redirections 设置具体的重定向条件。
- Issues Reported:决定会审计哪些漏洞。
- Handling Application Errors During Audit:决定当遇到错误时(连接错误、超时)等,何时跳过该检查点。并且决定何时暂停该任务。
- Insertion Point Types:决定哪些位置的参数会被检查。
- Modifying Parameter Locations:是否将参数挪换位置。常用于绕 waf。
- Ignored Insertion Points:决定哪些参数不会被测试。
- Frequently Occurring Insertion Points:决定哪些参数位置在大量请求未检测到问题的时候,将执行轻量级的审计。
- Misc Insertion Point Options:决定在不同的数据封装层进行审计测试。例如 json 数据被base64 编码,则会在两个数据层次都进行测试。
- JavaScript Analysis:决定如何对 JavaScript 采取的分析技术。
Application login
自定义的登录功能。
若自定义登录序列,则需要通过 burp 插件录取登录序列。
Resource pool
控制发送请求的线程数以及请求之间的间隔等。
New live task⭐⭐
进行被动 爬取 或 审计。
Scan details
被动扫描的类型,工具范围等。新建的 burp 工程会默认启动这两个任务。
Scan configuration-Crawl
- Live passive crawl:进行被动爬取,建议选择所有。
Scan configuration-Audit
和New scan 的 Audit 配置一样。
Resource pool
控制发送请求的线程数以及请求之间的间隔。
Target
定义目标的范围,以便其它工具进行过滤。绘制网站地图。
Site map⭐
显示网站地图。
右键功能
主动scan、被动 scan。
Engagement tools:按照顺序,依次是搜索关键字、注释、脚本、引用,分析目标、扫文件目录、设置相关定时任务、模拟手工测试。
Scope⭐
定义目标范围,以便其它工具根据此范围进行数据包过滤。
Issue definitions
显示 scanner 工具所能识别到的所有问题的详情。
Proxy
监听、拦截请求。记录数据包。
Intercept⭐
拦截数据包。
右键功能
Request in browser:也就是将此请求在浏览器中重放。以该请求的cookie,或者以当前浏览器的cookie。
Engagement tools:分别是寻找引用这个 url 的 urls,扫描目录,设置定时任务,生成 csrf poc。
Don`t intercept requests:不拦截该相关请求。
Do intercept:拦截该请求的响应。
HTTP history⭐
查看历史的数据包记录。
WebSockets history
查看历史 websockets 消息记录。
Options⭐
对 Intercept 、Proxy 功能进行定制。
-
Proxy Lsteners
监听的端口,管理证书。
-
Intercept Client Requests / Intercept Server Responses / Intercept WebSockets Messages
拦截客户端的请求。拦截服务端的响应。拦截 WebSockets 消息
-
Response Modification
对响应内容做一定程度的更改。可以显示隐藏的表单,移除表单验证等等。
-
Match and Replace
对通过代理的请求、响应内容进行一些替换。
-
TLS pass through
某些app 采取证书pinning,可以在此添加绕过拦截的域名,burp 将无法抓取到此类流量。
-
Miscellaneous
设置proxy 的一些行为。默认设置下注意4、5、6、7 选项,都会对经过 proxy 的请求进行修改。如果发现经过burp 的请求和正常网页中请求的页面不同,那么很有可能是受到这几个选项的影响。
选项
Suppress Burp error
决定当在 Intercept 中 drop 请求时,是否在页面中显示burp 的报错信息。
Repeater
重放数据包。
Intruder
数据包爆破
Target
Positions⭐
-
Sniper
狙击手,一次只能替换一处标记。
-
Battering ram
攻城锤,和 Sniper 很相似,不过一次可以替换多个标记。同一个值要出现在多个地方。
-
Pitchfork
草叉,一对一。例如获取用户信息处需要同时输入用户名以及对应的手机号。
-
Cluster bomb
集束炸弹,多对多。例如登录处同时爆破用户名以及密码。
Payloads⭐⭐
-
Payload Sets
用来控制payload 的形式。
- Simple list:payload 列表。
- Runtime file:和 simple list 类似,但如果payload 太多例如 8G,不好一次加载到内存中,所以可以运行时再读取每行。
- Custom iterator:和 Cluster bomb 功能类似。
a/b.c
目录名/文件名.后缀名 ,最终生成的payload 集合是三个集合的笛卡尔积。 - Character substitution:将simple list 的中的字符串中的单个字符进行替换,生成相应的payload 集合。值得注意的是,如果将 e 替换为 3,那么 peer 将会生成三个payload
peer/p3er/p33r
- Case modification:更改 payload 大小写,生成多个 payload 。
- Recursive grep:从上一个请求的响应中获取payload。在 Intruder.Options.Grep-Extract 中定义响应中需要被下一个请求使用的字符串。若使用此payload 形式,则必须将线程数量调整为1。
- Illegal Unicode:unicode 替换以绕过某些关键字过滤。
- Character blocks:重复一定次数指定的字符串。
- Numbers:数字
- Dates:日期
- Brute forcer:从指定的字符集合中生成指定长度的字符串集合。
- Null payloads:payload 为空,重复指定次数。
- Character frobber:将字符串的每个字符逐个增加1位,例如
abc
会生成bbc/acc/abd
三个。比较少用。 - Bit flipper:逐个bit 翻转。比较少用。
- Username generator:跟据输入的用户名,生成可能的用户名集合。
- ECB block shuffler:ECB 块混洗。ECB 是一种分组加密方式。更改分组顺序可能会引起目标程序逻辑异常。
- Extension-generated:由插件生成 payload。
- Copy other payload:从其它的payload 拷贝。其用处并不只是单纯的拷贝,而是可以进一步通过 Payload Processing 进行处理。例如一个参数是另一个参数的 hash。
-
Payload processing
对payload 进行更改。支持以下几种方式。
添加前后缀、替换、截取、更改大小写、编解码、hash、由扩展处理等等。
-
Payload Encoding
对指定的字符串进行url 编码。
Resource Pool
工具内通用的资源池。通俗易懂
Options⭐
一些控制选项。
-
Save Options
决定是否将这个 Intruder 保存到工程文件中。
-
Attack request headers
更新请求headers。
-
Error handling
决定 Intruder 在遇到错误如何处理。
-
Attack results options
保存请求、响应。
是否发起未进行修改的请求。
是否使用 dos 攻击模式。指的是发送完一个请求后就关闭本地的 tcp 链接。不管是否接收到响应。
表示是否保存 payloads,如果测试的漏洞会反射payload 到响应中,例如 xss。则要在 Options.Grep - payloads 标记响应时,必须要知道 payload。
-
Grep - Match
用来标记响应,在响应中搜素某个关键字。
-
Grep - Extract
用来标记响应中的关键字,以便 Recursive grep 形式的 payload 使用。
-
Grep - Payloads
用来标记响应,在响应中搜索 payload。
-
Redirections
决定是否跳转。
Sequencer
对数据包中特定参数进行数学统计分析。以检验其随机性强弱。
Decoder
对数据进行编码或解码。覆盖常见的编解码、hash 方式。
Comparer
对比两个 HTTP 数据包。按照字节、byte 对比两个数据包。
Logger
记录所有工具产生的流量。
Extender
burp 插件商店。管理插件。API 文档。
Extensions
管理插件。
BApp Store⭐
插件商店。
APIS
burp 的 API 文档。
Options
插件自启动,以及更新。语言环境。
Project options
设置该项目文件的选项。
Connections⭐
连接相关的设置。
-
Platform Authentication
HTTP 认证凭证,burp 将会使用这些凭证处理服务器 401 需要认证的响应。
-
Upstream Proxy Servers
http 代理
-
SOCKS Proxy
socks5 代理
-
Timeouts
决定四种情况下触发 timeout 的阈值。
-
Hostname Resolution
自定义 DNS 解析。
-
Out-of-Scope Requests
是否丢弃不在范围内的请求。这个范围在 Target.Scope 中定义。
HTTP
关于HTTP 协议的一些设置。
-
Redirections
决定处理哪些重定向。
-
Streaming responses
指定特定的流式响应url。因为流式响应和普通的响应不同。burp 采取的是存储转发的模型,会将所有流数据接收完毕后才给客户端,而正常逻辑是每到一个数据就传给客户端。
-
Status 100 responses
决定如何处理 100 响应状态码?是原封不动返回 100 状态码,还是继续请求,返回其响应的状态码。
-
HTTP/2
是否尽可能使用 HTTP/2
TLS
证书相关配置。
-
TLS Negotiation
允许进行协商的方法。
-
Client TLS certificates
配置客户端证书。
-
Server TLS certificates
显示从服务端接收到的证书。
Sessions
会话相关的管理。
Session Handling Rules⭐
定义session 处理规则。
-
Rule Actions
定义执行何种处理。
-
Use cookies from the session handling cookie jar
使用 Cookie Jar 中记录的 cookie。
-
Set a specific cookie or parameter value
设定指定cookie 或参数的值。
-
Check session is valid
通过请求某一页面,或运行某个宏并检视其结果来检验当前的 session 是否有效。并根据检验结果选择进一步的操作。
-
Prompt for in-browser session recovery
burp 会弹出一个记录 cookie 的面板,然后需要用户手动在浏览器中进行登录等恢复 session 的操作,之后选择cookie面板中成功的恢复的cookie。
-
Run a macro
在发送请求前,运行指定的宏。
-
Run a post-request macro
在得到响应后,运行指定的宏。
-
Invoke a Burp extension
将请求传给 burp 的插件。
-
-
定义此条处理规则应用的范围。
工具、url、参数。三个方面的控制。
Cookie Jar
动态维持网站的每个 Cookie。并可以用在其它工具。
Macros⭐
宏是一个或多个请求序列。可以用来自动进行登录或者获取 csrf token。
Misc
一些其它设置。
-
Scheduled Tasks
自动暂停或继续执行 DashBoard 中的 Task 。
-
Burp Collaborator server
collaborator server 相关的设置。
-
Logging
记录哪些工具产生的流量。
-
Embedded Browser
内置的浏览器相关设置。
User options
用户相关设置。比起Project options 来讲更通用。
Connections
Platform Authentication
HTTP 认证凭证,burp 将会使用这些凭证处理服务器 401 需要认证的响应。
Upstream Proxy Servers⭐
http 代理
SOCKS Proxy⭐
socks5 代理
TLS
证书相关的设置。
Display⭐
显示相关设置
-
User Interface
控制 burp 界面的字体大小以及主题。
-
HTTP Message Display
HTTP 消息框的显示控制。
-
Character Sets
设置 HTTP 数据包中的编码字符集。
-
HTML Rendering
在选择渲染视图时,是否是否为了渲染页面而发送额外请求,例如img、script 等。
Misc⭐
-
Hotkeys
快捷键。
-
Automatic Project Backup
自动备份项目文件。
-
Temporary Files Location
临时文件存放目录。
-
REST API
REST API 是一种 API 的规范标准,此处实际上就是 burp 的api 接口。
实现的功能不多。
-
Proxy Interception
burp 启动时 interception 的默认状态。
-
Proxy History Logging
当修改 Target.Scope 中的目标范围时,是否将不在目标范围内的流量发送给 Proxy.History 或其它工具。
-
Performance Feedback
向burp 提交应用使用统计,以便 burp 进行改善。
-
Updates
自动更新
-
HTTP Message Search
控制 HTTP 消息界面搜索框的默认设置。
-
Embedded Browser
设置是否浏览器每次退出时清除个性化设置。
-
Learn Tab
显示学习标签页
其它工具
Burp Infiltrator
用来加强 Burp Scanner 功能的一个jar 包。需要在目标网站系统上安装,它会对网站程序进行更改,然后当识别到 Scanner 扫描时会将程序执行的堆栈信息传递给 Collaborator 。以便更好的在代码层确认漏洞。
Burp Clickbandit
用来生成点击劫持的 POC。
Burp Collaborator client⭐
用来尝试 OOB 技术的工具。
Navigation Recorder
用于录制登录序列,以便 scanner 功能的自动登录功能使用。
DOM Invader⭐
为了更方便的测试 XSS 。
Mobile Assistant
IOS 平台应用测试助手。