Burp Suite的教程
一、简介
Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多Burp工具,这些不同的burp工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻击。这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。它主要用来做安全性渗透测试。
二、工具箱
1、Target(目标)——显示目标目录结构的的一个功能
2、Proxy(代理)——是一个拦截HTTP/S的代理服务器(抓包),作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。
3、Spider(爬虫)——是一个应用智能感应的网络爬虫,它能完整的枚举应用程序的内容和功能。
4、Scanner(扫描器)[仅限专业版]——是一个高级的工具,执行后,它能自动地发现web 应用程序的安全漏洞。
5、Intruder(入侵)——是一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的数据,以及使用fuzzing 技术探测常规漏洞。
6、Repeater(中继器)——是一个靠手动操作来补发单独的HTTP 请求,并分析应用程序响应的工具。
7、Sequencer(会话)——是一个用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。
8、Decoder(解码器)——是一个进行手动执行或对应用程序数据者智能解码编码的工具。
9、Comparer(对比)——是一个实用的工具,通常是通过一些相关的请求和响应得到两项数据的一个可视化的“差异”。
10、Extender(扩展)——可以让你加载Burp Suite的扩展,使用你自己的或第三方代码来扩展Burp Suit的功能。
11、Options(设置)——对Burp Suite的一些设置
三、burp proxy的基本使用
凡是跟代理的内容,都找proxy就对了!
forward:传输本次数据
drop:丢弃本次数据
Intercepton/off:拦截开启/关闭
Action:提供功能选项
当Burp Suite拦截的客户端和服务器交互之后,我们可以在Burp Suite的消息分析选项卡中查看这次请求的实体内容、消息头、请求参数等信息。
Raw:视图主要显示web请求的raw格式,包含请求地址、http协议版本、主机头、浏览器信息、Accept可接受的内容类型、字符集、编码方式、cookie等。我们可以通过手工修改这些信息,对服务器端进行渗透测试。
params :视图主要显示客户端请求的参数信息、包括GET或者POST请求的参数、Cookie参数。渗透人员可以通过修改这些请求参数来完成对服务器端的渗透测试。
headers:视图显示的信息和Raw的信息类似,只不过在这个视图中,展示得更直观、友好。
Hex :视图显示Raw的二进制内容,你可以通过hex编辑器对请求的内容进行修改。
Burpproxy所拦截的消息可在Fitter(过滤器)中根据需要进行修改
所有流经burpproxy的消息都会在 http history中记录下来,我们可以通过历史选项卡,查看传输的数据内容,对交互的数据进行测试和验证,同时,我们可以通过右击来弹出菜单,发送内容到burp的其他组件进行处理(类似于Action的功能)
comment:对拦截的消息添加备注,在一次渗透测试中,你通常会遇到一连串的请求消息,为了便于区分,在某个关键的请求消息上,你可以添加备注信息。
Highlight的功能与Comment功能有点类似,即对当前拦截的消息设置高亮,以便于其他的请求消息相区分。
可选项配置Options
从界面上看,主要有以下几大板块
▪客户端请求消息拦截(Interceptclient requests)
▪服务器端返回消息拦截(intercept server responses)
▪服务器返回消息修改(response modification)
▪正则表达式配置(match and replace)
▪其他配置项(miscellaneous)
Intercept(截断)
默认Intercept is on 按钮出于开启状态 也就是说默认代理截断功能是打开的.此时所有的请求都会被截断,只有手动Forward之后请求才会被发出去。
Http history
所有经过burp suite的请求 都会被记录到Http history中. 上面是请求概要信息,下面是请求的详细信息。
websookets history
有的web是没有界面的 是用过一个长链接 类似于api的方式来传输数据 burp suite也是可以截获这类信息的。
Options(配置选项)
点击next 就会生成一张证书 选择路径保存. 然后导入到浏览器,就可以实现https的访问
burp suite思维导图
四、burp target的使用
Burptarget组件主要包含站点地图、目标域、target工具三部分组成
帮助渗透测试人员更好地了解目标应用的整体状况、当前的工作涉及哪些目标域、分析可能存在的攻击面等信息
目标域设置 Target Scope
应用场景
1.限制站点地图和Proxy历史中的显示结果
2.告诉Burp Proxy拦截哪些请求
3.Burp Spider抓取哪些内容
4.BurpScanner自动扫描哪些作用域的安全漏洞
5.在Burp Intruder和Burp Repeater中指定URL
站点地图 Site Map
在一次渗透测试中,通过浏览器浏览的历史记录在站点地图中的展现结果将自动在site map中呈现。
Site Map的左边为访问的URL,按照网站的层级和深度,树形展示整个应用系统的结构和关联其他域的url情况;右边显示的是某一个url被访问的明细列表,共访问哪些url,请求和应答内容分别是什么,都有着详实的记录。基于左边的树形结构,我们可以选择某个分支,对指定的路径进行扫描和抓取。
Target 工具的使用
主要包括以下部分:1.手工获取站点地图2.站点比较3.攻击面分析
①手工获取站点地图:
1.设置浏览器代理和burp proxy代理,并使之能正常工作
2.关闭拦截功能
3.手工浏览网页
这时,target会自动记录站点地图信息。
手工获取站点地图的方式有一个好处就是,我们可以根据自己的需要和分析,自主地控制访问内容,记录的信息比较准确。与自动抓取相比,则需要更长的时间,如果需要渗透测试的产品系统是大型的系统,则对于系统的功能点依次操作一遍所需要的精力和时间对渗透测试人员来说付出都是很大的。
②站点比较
对站点进行动态分析的利器,我们在比较帐号权限时经常使用到它。
当我们登陆应用系统,使用不同的帐号,帐号本身在应用系统中被赋予了不同的权限,那么帐号所能访问的功能模块、内容、参数等都是不尽相同的,此时使用站点比较,能很好的帮助渗透测试人员区分出来。
一般来说,主要有以下3种场景:
1.同一个帐号,具有不同的权限,比较两次请求结果的差异。
2.两个不同的帐号,具有不同的权限,比较两次请求结果的差异。
3.两个不同的帐号,具有相同的权限,比较两次请求结果的差异。
步骤:
1.首先我们在需要进行比较的站点上点击右键,找到站点比较的菜单“Comparesite maps”
2.由于站点比较是在两个站点地图之间进行的,所以我们在配置过程中需要分别指定Site Map1和Site Map2。通常情况下,Site
Map 1 我们默认为当前会话。如图所示,点击【Next】。
3.这时我们会进入Site Map 1设置页面,如果是全站点比较我们选择第一项,如果仅仅比较我们选中的功能,则选择第二项。如下图,点击【Next】。如果全站点比较,且不想加载其他域时,我们可以勾选只选择当前域。
4.接下来就是Site Map 2的配置,对于Site Map 2我们同样有两种方式,第一种是之前我们已经保存下来的Burp
Suite站点记录,第二种是重新发生一次请求作为Site Map2.这里,我们选择第二种方式。
5.如果上一步选择了第二种方式,则进入请求消息设置界面。在这个界面,我们需要指定通信的并发线程数、失败重试次数、暂停的间隙时间。
6.设置完Site Map 1和Site Map 2之后,将进入请求消息匹配设置。在这个界面,我们可以通过URL文件路径、Http请求方式、请求参数、请求头、请求Body来对匹配条件进行过滤。
7.设置请求匹配条件,接着进入应答比较设置界面。在这个界面上,我们可以设置哪些内容我们指定需要进行比较的
8.如果我们之前是针对全站进行比较,且是选择重新发生一次作为Site Map2的方式,则界面加载过程中会不停提示你数据加载的进度,如果涉及功能请求的链接较少,则很快进入比较界面。
③攻击面分析
步骤:
1.右键找到【Engagementtools】(交互工具),点击Analyze Target使用
2.在弹出的分析界面中,我们能看到概况、动态URL、静态URL、参数4个视图。
3.概况视图主要展示当前站点动态URL数量、静态URL数量、参数的总数、唯一的参数名数目,通过这些信息,我们对当前站点的总体状况有粗线条的了解。
4.动态URL视图展示所有动态的URL请求和应答消息,跟其他的工具类似,当你选中某一条消息时,下方会显示此消息的详细信息。
4.参数视图有上中下三部分组成,上部为参数和参数计数统计区,你可以通过参数使用的次数进行排序,对使用频繁的参数进行分析;中部为参数对于的使用情况列表,记录对于的参数每一次的使用记录;下部为某一次使用过程中,请求消息和应答消息的详细信息。
在使用攻击面分析功能时,需要注意,此功能主要是针对站点地图中的请求URL进行分析,如果某些URL没有记录,则不会被分析到。同时,在实际使用中,存在很点站点使用伪静态,如果请求的URL中不带有参数,则分析时无法区别,只能当做静态URL来分析。
五、burp spider的使用
Burp Spider的功能主要使用于大型的应用系统测试,它能在很短的时间内帮助我们快速地了解系统的结构和分布情况。
spider控制
Spider控制界面由Spider状态和Spider 作用域两个功能组成。
Spider 状态除了显示当前进度、传输情况、请求队列等统计信息外,还有Spider运行/暂停按钮与清空队列按钮,分别用来控制Spider是否运行和队列中的数据管理。而Spider作用域是用来控制Spider的抓取范围,从图中我们可以看到有两种控制方式,一种是使用上一节讲的Target Scope,另一种是用户自定义。此处用户自定义作用域的配置与Target Scope的配置完全一致,具体使用方法请参数上一节Target Scope的配置。
Spider可选项设置
Spider可选项设置由抓取设置、抓取代理设置、表单提交设置、应用登陆设置、蜘蛛引擎设置、请求消息头设置六个部分组成。
六、Burp scanner的使用
BurpScanner的功能主要是用来自动检测web系统的各种漏洞,我们可以使用BurpScanner代替我们手工去对系统进行普通漏洞类型的渗透测试,从而能使得我们把更多的精力放在那些必须要人工去验证的漏洞上。
Scannr的扫描方式分为两种,主动扫描和被动扫描。
1.主动扫描(ActiveScanning)
当使用主动扫描模式时,Burp 会向应用发送新的请求并通过payload验证漏洞。这种模式下的操作,会产生大量的请求和应答数据,直接影响系统的性能,通常使用在非生产环境。它对下列的两类漏洞有很好的扫描效果:
① 客户端的漏洞,像XSS、Http头注入、操作重定向;
② 服务端的漏洞,像SQL注入、命令行注入、文件遍历。
对于第一类漏洞,Burp在检测时,会提交一下input域,然后根据应答的数据进行解析。在检测过程中,Burp会对基础的请求信息进行修改,即根据漏洞的特征对参数进行修改,模拟人的行为,以达到检测漏洞的目的。 对于第二类漏洞,一般来说检测比较困难,因为是发生在服务器侧。比如说SQL注入,有可能是返回数据库错误提示信息,也有可能是什么也不反馈。Burp在检测过程中,采用各个技术来验证漏洞是否存在,比如诱导时间延迟、强制修改Boolean值,与模糊测试的结果进行比较,已达到高准确性的漏洞扫描报告。
- 被动扫描(PassiveScanning)
当使用被动扫描模式时,Burp不会重新发送新的请求,它只是对已经存在的请求和应答进行分析,这对系统的检测比较安全,尤其在你授权访问的许可下进行的,通常适用于生成环境的检测。一般来说,下列这些漏洞在被动模式中容易被检测出来:
①提交的密码为未加密的明文。
②不安全的Cookie的属性,比如缺少的HttpOnly和安全标志。
③cookie的范围缺失。
④跨域脚本包含和站点引用泄漏。
⑤表单值自动填充,尤其是密码。
⑥SSL保护的内容缓存。
⑦目录列表。
⑧提交密码后应答延迟。
⑨session令牌的不安全传输。
⑩敏感信息泄露,像内部IP地址,电子邮件地址,堆栈跟踪等信息泄漏。
⑪不安全的ViewState的配置。
⑫错误或者不规范的Content-type指令。
虽然被动扫描模式相比于主动模式有很多的不足,但同时也具有主动模式不具备的优点,除了前文说的对系统的检测在我们授权的范围内比较安全外,当某种业务场景的测试,每测试一次都会导致业务的某方面问题时,我们也可以使用被动扫描模式,去验证问题是否存在,减少测试的风险。
Scanner的具体步骤
1.被动扫描
在burpsuite专业版中,默认对拦截的所有站点进行被动扫描,我们可以再Target下的site map 选项卡中看到,图中所示的情况,两个红色方框分别表示了某站点存在的漏洞以及某个漏洞的具体详情。
我们可以在Scope中修改工作范围,方便我们进行针对性的分析工作
也可以在Scanner下的Live Scanner选项卡中调整我们的扫描策略,比如取消对所有站点的被动扫描
如图,我们可以通过多种方式对某一站点进行主动扫描,操作十分简单
随便通过一种方式进行主动扫描后,我们可以进入到如图选项卡中对扫描进度进行查看,图中显示扫描已完成,发现4个问题,一共收到了513个应答
七、Burp Intruder的使用
工作原理:
Intruder在原始请求数据的基础上,通过修改各种请求参数,以获取不同的请求应答。每一次请求中,Intruder通常会携带一个或多个有效攻击载荷(Payload),在不同的位置进行攻击重放,通过应答数据的比对分析来获得需要的特征数据。
应用场景:
- 标识符枚举 Web应用程序经常使用标识符来引用用户、账户、资产等数据信息。例如,用户名,文件ID和账户号码。
- 提取有用的数据在某些场景下,而不是简单地识别有效标识符,你需要通过简单标识符提取一些其他的数据。比如说,你想通过用户的个人空间id,获取所有用户在个人空间标准的昵称和年龄。
- 模糊测试很多输入型的漏洞,如SQL注入,跨站点脚本和文件路径遍历可以通过请求参数提交各种测试字符串,并分析错误消息和其他异常情况,来对应用程序进行检测。由于的应用程序的大小和复杂性,手动执行这个测试是一个耗时且繁琐的过程。这样的场景,您可以设置Payload,通过Burp
Intruder自动化地对Web应用程序进行模糊测试。
测试步骤:
- 确认Burp Suite安装正确并正常启动,且完成了浏览器的代理设置。
- 进入Burp Proxy选项卡,关闭代理拦截功能。
- 进行历史日志(History)子选项卡,查找可能存在问题的请求日志,并通过右击菜单,发送到Intruder。
- 进行Intruder选项卡,打开Target和Positions子选项卡。这时,你会看到上一步发送过来的请求消息。
- 因为我们了解到Burp Intruder攻击的基础是围绕刚刚发送过来的原始请求信息,在原始信息指定的位置上设置一定数量的攻击载荷Payload,通过Payload来发送请求获取应答消息。在默认情况下,所有的请求参数和cookie参数都会被设置为添加载荷
6.点击clear清除默认载荷(如果需要),圈定需要设置载荷的参数,点击add - 当我们打开Payload子选项卡,选择Payload的生成或者选择策略,默认情况下选择“Simplelist",当然你也可以通过下拉选择其他Payload类型或者手工添加。
8.之后点击startattack发动攻击,此时burp 会自动打开一个新的界面,包含执行攻击的情况,http状态码、长度等信息的结果。我们还可以选择其中某一次通信消息,查看请求消息和应答消息的详细
八、如何使用Burp Repeater
Repeater是一个重放攻击器。
我们可以在这里对数据包的参数进行修改,以此来进行请求与响应的消息验证分析。
九、如何使用burp sequencer
用于检测数据样本随机性质量的工具,通常用于检测访问令牌是否可预测、密码重置令牌是否可预测等场景,通过Sequencer的数据样本分析,能很好地降低这些关键数据被伪造的风险。
使用步骤:
1.确认burpsuite的正确运行,打开拦截
2.从burpproxy的历史日志中,寻找token或类似的参数(cookies等)点击右键弹出上下文菜单,点击 send to sequencer
3.进入burpsequencer的live cature面板,选中刚才发送过来的记录,点击 configure 配置需要分析的token 或参数
4.在弹出的参数配置对话框中,选中参数的值,点击 ok,完成参数设置
5.点击select live capture,开始进行参数值的获取
6.当抓取的参数值总数大于100时,点击【pause】或者【stop】,这时可以进行数据分析,点击【Analyze
now】即进行数据的随机性分析。
7.等分析结束,可以看到分析结果的各种图表
8.我们也可以把获取的数据保存起来,下一次使用的时候,从文件夹加载参数,进行数据分析。
——点击savetokens保存数据
9.再次使用时,直接在manual load处,点击load… 加载数据即可
Burp Suite功能按钮键翻译对照
参考资料
Burp Suite基础入门详细教程
BurpSuite 学习使用教程
burpsuite入门,实用教程