【免责声明】
本博客中介绍的网络安全测试工具仅供学习和研究使用。使用这些工具时,请务必遵守当地的法律法规。任何人不得将本博客中提到的工具用于非法目的,如未经授权的渗透测试、数据窃取或破坏他人网络。读者在使用这些工具时应承担全部责任,与本博客作者无关。作者不对任何由于滥用工具或违反法律所导致的后果负责。
0. 前言
- 安装:BurpSuite超详细安装教程-功能概述-配置-使用教程---(附下载链接)_burpsuite下载安装-CSDN博客
- Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。
- 主要介绍以下:
Target(目标)——显示目标目录结构的的一个功能
Proxy(代理)——拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。
Scanner(扫描器)——高级工具,执行后,它能自动地发现web 应用程序的安全漏洞。
Repeater(中继器)——一个靠手动操作来触发单独的HTTP 请求,并分析应用程序响应的工具。
Sequencer(会话)——用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。
Decoder(解码器)——进行手动执行或对应用程序数据者智能解码编码的工具。
Comparer(对比)——通常是通过一些相关的请求和响应得到两项数据的一个可视化的“差异”。
Extender(扩展)——可以让你加载Burp Suite的扩展,使用你自己的或第三方代码来扩展Burp Suit的功能。
1.Proxy
1.1 介绍
1.2 截断
- Forward-放包:编辑信息之后,允许发送信息到服务器或浏览器
- Drop-弃包:丢包
- Interception is on/off-拦截请求:切换和关闭所有拦截
- Action-行动:可用的动作行为操作
- 添加注释和颜色
- Raw 这是视图主要显示web请求的raw格式,包含请求地址、http协议版本、主机头、浏览器信息、Accept可接受的内容类型、字符集、编码方式、cookie等。可以通过手工修改这些信息,对服务器端进行渗透测试
- params 这个视图主要显示客户端请求的参数信息、包括GET或者POST请求的参数、Cookie参数。渗透人员可以通过修改这些请求参数来完成对服务器端的渗透测试。
- headers 这个视图显示的信息和Raw的信息类似,只不过在这个视图中,展示得更直观、友好
- Hex 这个视图显示Raw的二进制内容
1.3 HTTP历史记录
- History(代理历史)总在更新,即使你把Interception turned off(拦截关闭),允许浏览不中断的同时还监测应用流量的关键细节。
- History Table上方的过滤栏描述了当前的显示过滤器。点击过滤器栏打开要编辑的过滤器选项。该过滤器可以基于以下属性进行配置:
1.4 WebSocket 历史记录
1.5 选项Options
- 客户端请求消息拦截
- 服务器端返回消息拦截
- 服务器返回消息修改
- 正则表达式配置
- 其他配置项
- 详见:第三章 如何使用Burp Suite代理 · burpsuite实战指南
2. Target功能
2.1 介绍
2.2 Site map
- 使用proxy抓取一些信息之后,会在target模块中生成站点信息
- 左边为访问的URL,按照网站的层级和深度,树形展示整个应用系统的结构和关联其他域的url情况
- 右边显示的是某一个url被访问的明细列表,共访问哪些url,请求和应答内容分别是什么,都有着详实的记录
- 基于左边的树形结构,我们可以选择某个分支,对指定的路径进行扫描和抓取
2.3 Scope
- Scope主要使用于下面几种场景中:
- 通过Target Scope 我们能方便地控制Burp 的拦截范围、操作对象,减少无效的噪音
- 在Target Scope的设置中,主要包含两部分功能:包含规则和去除规则,如下:
2.4 使用
- 设置浏览器代理之后,关闭BP拦截,手动浏览网页
- 手工获取站点地图的好处,可以根据自己的需要和分析,自主地控制访问内容,记录的信息比较准确
- 与自动抓取相比,则需要更长的时间,如果需要渗透测试的产品系统是大型的系统,则对于系统的功能点依次操作一遍所需要的精力和时间对渗透测试人员来说付出都是很大的
- 主要有以下3种场景: 1.同一个帐号,具有不同的权限,比较两次请求结果的差异。 2.两个不同的帐号,具有不同的权限,比较两次请求结果的差异。 3.两个不同的帐号,具有相同的权限,比较两次请求结果的差异。
- 详细:第五章 如何使用Burp Target · burpsuite实战指南
- 参数视图有上中下三部分组成,上部为参数和参数计数统计区,你可以通过参数使用的次数进行排序,对使用频繁的参数进行分析;中部为参数对于的使用情况列表,记录对于的参数每一次的使用记录;下部为某一次使用过程中,请求消息和应答消息的详细信息。
3. Spider 和 Scanner
3.1 介绍
- 2.0之后版本将spider模块取消,参考:新版抓包神器 Burp Suite 2020 找不到 spider模块?_burpsuite没有spider模块-CSDN博客
- 启动扫描的一种方法是单击“仪表板”选项卡上的“新扫描”。这将打开一个向导,让您配置扫描的详细信息
- 每个扫描都有自己的配置设置。例如,对于抓取任务,您可以配置抓取优化、抓取限制、登录功能选项和错误处理
当使用主动扫描模式时,Burp 会向应用发送新的请求并通过payload验证漏洞;
产生大量的请求和应答数据,直接影响系统的性能,通常使用在非生产环境;
对于第一类漏洞,Burp在检测时,会提交一下input域,然后根据应答的数据进行解析。在检测过程中,Burp会对基础的请求信息进行修改,即根据漏洞的特征对参数进行修改,模拟人的行为,以达到检测漏洞的目的。 对于第二类漏洞,一般来说检测比较困难,因为是发生在服务器侧。比如说SQL注入,有可能是返回数据库错误提示信息,也有可能是什么也不反馈。Burp在检测过程中,采用各个技术来验证漏洞是否存在,比如诱导时间延迟、强制修改Boolean值,与模糊测试的结果进行比较,已达到高准确性的漏洞扫描报告。
2. 被动扫描(Passive Scanning)
Burp不会重新发送新的请求,它只是对已经存在的请求和应答进行分析,这对系统的检测比较安全,尤其在你授权访问的许可下进行的,通常适用于生成环境的检测。
虽然被动扫描模式相比于主动模式有很多的不足,但同时也具有主动模式不具备的优点,除了前文说的对系统的检测在我们授权的范围内比较安全外,当某种业务场景的测试,每测试一次都会导致业务的某方面问题时,我们也可以使用被动扫描模式,去验证问题是否存在,减少测试的风险。
3.2 原spider功能使用
3.3 sacnner扫描
具体查看:第七章 如何使用Burp Scanner · burpsuite实战指南
4. Intruder
4.1 Intruder使用场景和操作步骤
Intruder在原始请求数据的基础上,通过修改各种请求参数,以获取不同的请求应答。每一次请求中,Intruder通常会携带一个或多个有效攻击载荷(Payload),在不同的位置进行攻击重放,通过应答数据的比对分析来获得需要的特征数据。
Web应用程序经常使用标识符来引用用户、账户、资产等数据信息。例如,用户名,文件ID和账户号码。
在某些场景下,而不是简单地识别有效标识符,你需要通过简单标识符提取一些其他的数据。比如说,你想通过用户的个人空间id,获取所有用户在个人空间标准的昵称和年龄。
很多输入型的漏洞,如SQL注入,跨站点脚本和文件路径遍历可以通过请求参数提交各种测试字符串,并分析错误消息和其他异常情况,来对应用程序进行检测。由于的应用程序的大小和复杂性,手动执行这个测试是一个耗时且繁琐的过程。这样的场景,您可以设置Payload,通过Burp Intruder自动化地对Web应用程序进行模糊测试。
- 默认情况下,Burp Intruder会对请求参数和Cookie参数设置成Payload position,前缀添加 $符合,如绿色标注位置所示。当发送请求时,会将$标识的参数替换为Payload
- 在Position界面的右边,有【Add $】、【Clear $】、【Auto $】、【Refersh $】四个按钮,是用来控制请求消息中的参数在发送过程中是否被Payload替换,如果不想被替换,则选择此参数,点击【Clear $】,即将参数前缀$去掉。
- 打开Payload 子选项卡,选择Payload的生成或者选择策略,默认情况下选择“Simple list",也可以通过下拉选择其他Payload类型或者手工添加。
4.2 Payload类型与处理
在Burp Intruder的Payload选项卡中,有Payload集合的设置选项,包含了经常使用的Payload类型,共18种。
- 自定义迭代器(Custom iterator)——这是一款功能强大的Payload,它共有8个占位,每一个占位可以指定简单列表的Payload类型,然后根据占位的多少,与每一个简单列表的Payload进行笛卡尔积,生成最终的Payload列表。选择位置——选择列表或自行添加
- 大小写替换(Case modification)——对预定义的字符串,按照大小写规则,进行替换。
- 递归grep (Recursive grep)——此Payload类型主要使用于从服务器端提取有效数据的场景,需要先从服务器的响应中提取数据作为Payload,然后替换Payload的位置,进行攻击。
设置取服务器端的EagleId作为新的Payload,点击上图的【OK】按钮之后,完成了Payload的设置。
攻击时,Burp会对每一次响应的消息进行分析,如果提取到了EagleId的值,则作为Payload再发生一次请求。
- 不合法的Unicode编码(Illegal Unicode)—— 在payloads里用指定的不合法Unicode 编码替换字符本身,从这些Payload列表里产生出一个或者多个有效负荷。
- 字符块(Character blocks)——这种类型的Payload是指使用一个给出的输入字符串,根据指定的设置产生指定大小的字符块,表现形式为生成指定长度的字符串。它通常使用了边界测试或缓冲区溢出。
- 数字类型(Number)——这种类型的Payload是指根据配置,生成一系列的数字作为Payload。
- 日期类型(Dates)——这种类型的Payload是指根据配置,生成一系列的日期。
- 暴力字典(Brute forcer)——此类Payload生成包含一个指定的字符集的所有排列特定长度的有效载荷,通常用于枚举字典的生成。
- 空类型(Null payloads)——这种负载类型产生的Payload,其值是一个空字符串。在攻击时,需要同样的请求反复被执行,在没有任何修改原始请求的场景下此Payload是非常有用的。它可用于各种攻击,例如cookie的序列分析、应用层Dos、或保活会话令牌是在其它的间歇试验中使用。
- 字符frobber(Character frobber)——这种类型的Payload的生成规律是:依次修改指定字符串在每个字符位置的值,每次都是在原字符上递增一个该字符的ASCII码。它通常使用于测试系统使用了复杂的会话令牌的部件来跟踪会话状态,当修改会话令牌中的单个字符的值之后,您的会话还是进行了处理,那么很可能是这个令牌实际上没有被用来追踪您的会话。
- Bit翻转(Bit flipper)——这种类型的Payload的生成规律是:对预设的Payload原始值,按照比特位,依次进行修改。
- 用户名生成器(Username generator)这种类型的Payload主要用于用户名和email帐号的自动生成。
- ECB 加密块洗牌(ECB block shuffler)——这种类型的Payload是基于ECB加密模式的Payload生成器。
- Burp Payload生成插件(Extension-generated)——这种类型的Payload是基于Burp插件来生成Payload值。
- Payload复制(Copy other payload)——这种类型的Payload是将其他位置的参数复制到Payload位置上,作为新的Payload值,通常适用于多个参数的请求消息中,它的使用场景可能是: 1.两个不同的参数需要使用相同的值,比如说,用户注册时,密码设置会输入两遍,其值也完全一样,可以使用此Payload类型。 2.在一次请求中,一个参数的值是基于另一个参数的值在前端通过脚本来生成的值,可以使用此Payload类型。 它的设置界面和参数比较简单,如下图所示,其中Payload位置的索引值就是指向图中Payload set的值。
(参考:第八章 如何使用Burp Intruder · burpsuite实战指南)
4.3 Payload 位置和攻击类型
- Payload位置的设置是基于Http请求的原始消息作为母板,使用一对 §字符来标记出Payload的位置,在这两个号直接包含了母板文本内容。发起攻击时,Burp Intruder 就把一个Payload值放置到给出的特殊位置上,替换 §符号标示的整个位置。
- 在消息编辑器的上方,有一个下拉选择框,攻击类型(Attack Type)。Burp Intruder支持使用Payload进行多种方式的模拟攻击,目前只要有以下4种。
- 狙击手模式(Sniper)——它使用一组Payload集合,依次替换Payload位置上(一次攻击只能使用一个Payload位置)被§标志的文本(而没有被§标志的文本将不受影响),对服务器端进行请求,通常用于测试请求参数是否存在漏洞。
- 攻城锤模式(Battering ram)——它使用单一的Payload集合,依次替换Payload位置上被§标志的文本(而没有被§标志的文本将不受影响),对服务器端进行请求,与狙击手模式的区别在于,如果有多个参数且都为Payload位置标志时,使用的Payload值是相同的,而狙击手模式只能使用一个Payload位置标志。
- 草叉模式(Pitchfork )——它可以使用多组Payload集合,在每一个不同的Payload标志位置上(最多20个),遍历所有的Payload。举例来说,如果有两个Payload标志位置,第一个Payload值为A和B,第二个Payload值为C和D,则发起攻击时,将共发起两次攻击,第一次使用的Payload分别为A和C,第二次使用的Payload分别为B和D。
- 集束炸弹模式(Cluster bomb) 它可以使用多组Payload集合,在每一个不同的Payload标志位置上(最多20个),依次遍历所有的Payload。它与草叉模式的主要区别在于,执行的Payload数据Payload组的乘积。举例来说,如果有两个Payload标志位置,第一个Payload值为A和B,第二个Payload值为C和D,则发起攻击时,将共发起四次攻击,第一次使用的Payload分别为A和C,第二次使用的Payload分别为A和D,第三次使用的Payload分别为B和C,第四次使用的Payload分别为B和D。
4.4 可选项设置(Options)
可选项设置主要包括请求消息头设置、请求引擎设置、攻击结果设置、grep match, grep extract, grep payloads,以及重定向设置。
- 请求消息头设置(Request Headers)——这个设置主要用来控制请求消息的头部信息
- 请求引擎设置(Request Engine)——这个设置主要用来控制Burp Intruder攻击,合理地使用这些参数能更加有效地完成攻击过程。
- 攻击结果设置(Attack Results)——这个设置主要用来控制从攻击结果中抓取哪些信息。
- Grep Match——这个设置主要用来从响应消息中提取结果项,如果匹配,则在攻击结果中添加的新列中标明,便于排序和数据提取。
- Grep Extract——这些设置可用于提取响应消息中的有用信息。
- Grep Payloads——这些设置可用于提取响应消息中是否包含Payload的值,
- 重定向(Redirections)——这些设置主要是用来控制执行攻击时Burp如何处理重定向,在实际使用中往往是必须遵循重定向,才能实现你的攻击目的。
4.5 Intruder 攻击和结果分析
无论是哪种方式的攻击发起,Burp都将弹出攻击结果界面。在攻击的过程中,你也可以修改攻击配置,或者做其他的操作。攻击结果的界面如下图所示:
- 菜单区 包含Attack菜单、Save菜单、Columns菜单。
- 过滤器 ——可以通过查询条件、服务器响应的状态码、注释过Payload执行结果消息记录区的信息进行过滤。
- Payload执行结果消息记录区,又称结果列表(Results Table),记录Payload执行时请求和响应的所有信息
- 请求/响应消息区
持续更新,见BurpSuite的使用(下)
参考:
BurpSuite使用详解(二)Target功能_burpsuite中target的安全提示在哪显示-CSDN博客
【2024版】最新BurpSuit的使用教程(非常详细)零基础入门到精通,看一篇就够了!让你挖洞事半功倍!_burpsuite使用教程-CSDN博客
新版抓包神器 Burp Suite 2020 找不到 spider模块?_burpsuite没有spider模块-CSDN博客