创建Burp扩展:新手入门指南
本网络研讨会最初发布于2024年12月12日。
在本视频中,Dave Blandford讨论了创建Burp Suite扩展的新手指南。会议涵盖了Burp扩展的概述、如何提升测试能力、开发所需的工具和语言,以及Montoya API的见解。此外,Dave演示了自己的扩展,旨在激发和帮助观众提升安全测试技能。
重点内容
-
2:39 理解Burp Suite:用于增强安全测试的Web应用代理
Burp Suite作为Web应用测试代理,提供Intruder和Repeater等功能用于请求修改。 -
2:53 使用必备工具提升Web应用测试效率
探索JWT Editor、Logger++和Copy 4扩展如何简化Web应用测试并提升测试效率。 -
2:53 选择适合Burp Suite扩展的语言
讨论Burp Suite扩展的语言选项,强调Java的兼容性和Python的限制,以及个人语言偏好。 -
2:07 使用Snyx的Socket Sleuth增强WebSockets测试
探索Snyx的Socket Sleuth,这是一个有前景的扩展,旨在增强Burp Suite的WebSockets测试和拦截能力。 -
0:59 理解Java运行时和虚拟机要点
解释JRE和JVM在运行Java应用中的作用,并提到Burp捆绑的JRE以方便使用。 -
0:44 Java的起源与普及:向James Gosling致敬
由James Gosling在1990年代创建,Java解决了内存问题,现在全球设备上运行。 -
1:58 探索Java编译:JAR文件、Gradle和Maven
讨论将Java项目编译为JAR文件的挑战,强调Gradle和Maven用于依赖管理。 -
2:04 探索Montoya API:扩展开发指南
Montoya API在GitHub上提供全面的文档和示例,帮助开发者轻松创建扩展。 -
1:22 理解BURP中的HTTP处理程序接口
该接口允许BURP扩展注册HTTP处理程序以分析或修改请求和响应。 -
2:38 增强的Burp扩展用于Web请求可视化和历史提取
开发了一个Burp扩展,将任务卸载到Flask应用,通过API实现JSON历史提取以进行详细分析。
完整视频
Jason Blanchard
大家好,欢迎来到今天的Black Hills信息安全网络直播。我是Jason Blanchard,是Black Hills信息安全的内容社区总监。如果你需要红队、主动SOC、ANTISOC、渗透测试,请来找我们。我们绝对想帮助你,尤其是在2025年即将到来之际。所以,请联系我们。好的,Dave将为我们今天的网络直播主讲。今天是Dave的第一次Black Hills网络直播。
好的,测试人员们,加入我们的团队。我们有40多名全职测试人员。在任何时候,我都会联系这些测试人员,说:“嘿,这些日期有空,你想做一个网络直播吗?”Dave是新人,我联系了Dave,说:“Dave,这些日期有空。”他说:“好的,我选那个。”我说:“酷,你想谈什么?”他说:“我不知道,我们应该谈什么?”我说:“你喜欢什么,对什么感到兴奋?”他说:“如何创建一个Burp Suite扩展的新手指南怎么样?”我说:“太棒了。”好的,这就是今天要发生的事情。
Dave将做他的第一次Black Hills信息安全网络直播。请欢迎Dave Blandford。Dave,我会在后台,如果人们有问题或者你有问题,你可以在Discord上互动。那是为社区准备的。欢迎在Discord上互动。如果你不知道那是什么意思,请确保查看“今日黑客”。我最后会回来解释。对于其他人,非常感谢你们今天加入我们,花时间与我们在一起,希望你们2024年过得很好,非常感谢你们花时间与我们在一起,明年可能再次花时间与我们在一起。我们下周还有一次网络直播,之后是圣诞假期,然后我们将在新年回来。所以,Dave,你准备好了吗?
Dave Blandford
我准备好了。
Jason Blanchard
好的,我要回后台了。如果你需要任何东西,我会在这里。祝你好运,Dave。
Dave Blandford
好的,谢谢。谢谢。好吧,下午好。感谢加入。所以,是的,我们将讨论创建Burp扩展。这将只是一个广泛的概述。如果最后有时间,我们会深入演示。但是的,这将只是初学者级别的创建Burp扩展。
所以,今天的议程,我们将从介绍开始,深入探讨什么是Burp扩展。如果你可能不熟悉Burp扩展是什么,它做什么,或者为什么有人需要它。我们将讨论我需要做什么来创建我的扩展。所以,我们会深入一点。如果你刚入门,我们如何正确设置环境?我们如何准备?
然后我们将讨论Montoya API,它用于在Burp Suite中工作或用于我们的扩展以集成到Burp Suite中。然后如果有时间,如我所提到的,我们会做一个演示。现在,因为如果你参加了预演闲聊,我满脑子都是大脚怪。所以我们可能会在整个过程中讨论一点大脚怪。他是否真实,是否存在,如果存在,大脚怪吃什么,他如何这么久没有被发现。但我们会深入探讨。
首先,什么是Burp Suite?所以Burp Suite对于我们做应用测试的人来说。所以当你想到移动应用、Web应用或桌面应用时,Burp Suite将是一个代理,允许我们将自己置于客户端和后端服务器之间,我们能够看到发送的内容,我们能够看到回复是什么。在Burp Suite中,有不同的功能,我们可以修改请求,我们可以修改我们的请求以执行某些可能不是预期的操作,或者作为黑客,我们喜欢看到一些结果。
所以你有像Intruder和Repeater这样的功能,这些是内置的。所以Repeater允许你,你可以取一个请求,发送到Repeater,然后你可以发送该请求,在其中进行修改。抱歉,Intruder将允许我们,我们可以在请求中定义一个位置,然后我们可以使用单词列表或某些类型的不同的变量,我们可以在多个请求中提供这些。所以Intruder只是这样做。它只是迭代一系列请求,其中定义的负载位置会变化。但底线是Burp Suite只是一个Web应用代理,我们用它来查看客户端和后端服务器之间的流量。
所以我有我的笔记在这里。所以Burp Suite。是的,我们涵盖了核心用途。为什么我想创建一个扩展?为什么你想创建一个扩展?我喜欢Burp Suite。我认为它开箱即用很好。即使是社区版,它也有其用途,但它并不覆盖所有用例。
所以就像开箱即用的Burp Suite,你可能正在测试一个应用,它做了一些你需要更多功能来完全测试或完全查看可能存在哪些漏洞的事情。所以引入扩展。他们有BAP商店,在BAP商店中你会看到,如果你使用Burp,然后你可以,它带有预配置的扩展,或者抱歉不是预配置的,但它带有已经加载到该商店的扩展,你可以在你的机器上安装。
所以像我们将涵盖的一些非常好的扩展,我喜欢的。但它给了我们比Burp Suite开箱即用更多一点的功能。所以创建扩展的先决条件,你必须有一个需求,你必须有一个愿望。所以必须有一个理由你需要制作那个扩展。我们也会深入探讨一点。但有一个完整的部分关于先决条件是什么。所以我不会在这里深入探讨。
然后扩展如何改进我的测试?我们也会在下一张幻灯片中涵盖。但它只是给了你更多的覆盖范围,下一张幻灯片上的一个例子将真正突出它如何改进我的测试。
首先,什么是Burp扩展?这将解决一个我们可能甚至不知道存在的问题。我的意思是我们可能知道,但我们可能不知道。就像我之前说的,开箱即用的Burp Suite,它不会捕捉一切。所以我们可以使用扩展来覆盖更多用例。
一个大的例子,我一直用的一个,我绝对喜欢的是JWT编辑器。所以JSON Web令牌,它只是base64编码,用于各种目的。但你在Web应用中经常看到它们,尤其是像单页Web应用,那里有很多前端JavaScript,我们将向后端API调用。他们实现了一个JWT,然后把它拿出来解码,弄清楚它在做什么,弄清楚角色,找出它是否签名,这很繁琐。
所以JWT编辑器,那是BAP商店中的一个扩展。你可以安装,它突然之间你可以立即解码,你可以修改,你可以检查它是否签名,如果它没有签名或者你有解决方法,你能够当场修改那个JWT。所以当你发送它到Repeater时,例如。所以它是一个伟大的工具,节省了很多时间。它使我们作为测试人员更高效。
它更好地利用了我们的时间,因为很多时候,当你在测试时,你只有有限的时间,当你有5天、10天,无论多少天,你有很多区域要覆盖。所以JWT编辑器使我们更高效。Logger是另一个我经常用的伟大的工具。所以很多时候,如果我得到一个问题,比如嘿,我刚入门Web应用测试,你会推荐什么扩展?这是我总是推荐的那个,因为很多时候在Web应用测试中,这是我的经验,漏洞的条件或你的用例的条件已经被证明。你可能只是错过了它。Logger,它把日志记录提升到了11级。所以它允许你,允许你定制你的日志记录,以查看在你的请求或你的工具中,你试图匹配的条件是否已经发生。
Logger++是一个工具,只是帮助你,帮助你看到你做了什么,并给你更好的洞察力,当你在运行Burp Suite时,当你在通过Burp Suite运行攻击时,或者当你的请求通过Burp Suite时,发生了什么。我绝对也喜欢那个。然后是copy 4扩展。这个还没有公开发布,但我和Black Hills的测试人员谈过。他打算发布它。我只是。这个对我来说是一个真正的时间节省器。所以回到作为测试人员的效率。作为测试人员高效利用我的时间。Copy 4就是它。它只是一个。它是一个Python扩展,你只是。它允许的是,你可以取Nuclei Nikto,只是所有你可能常用作Web应用测试人员的工具,你可以右键点击,它会给你命令,因为你可能。我为我自己说话。我不记得每次 nuclei 命令。对于每个不同的或每个用例。所以我经常不得不回头参考,参考我的笔记。但这个,这个一直是一个时间节省器。所以它使我更有效,更高效。所以我相信,关于这个工具的博客即将发布。这个扩展不是工具扩展,将在这里发布。但它也。他有一个。所以它最初没有GUI,但现在它有图形用户界面。所以现在你可以,你可以设置。所以如果你,如果你在使用,我们坚持用nuclei。如果你在使用nuclei,并且你有想要运行的特定模板,或者你有一个你总是会遇到的特定用例,你可以把它放在你的你可以把它放在GUI中,它被保存了。所以它使你作为测试人员更高效。你更明智地利用你的时间。所以Burp扩展帮助我们解决那个问题。它不仅帮助我们解决或帮助我们找到漏洞,实现无论什么用例,但我们将坚持使你的客户更安全,找到漏洞,这样做它使我们更高效地利用他们的时间。所以burp扩展帮助改进,改进我们的测试能力。
然后我们问它们是如何制作的?所以如果你曾经花时间去看Burp Suite支持什么语言或什么扩展,它们允许Python。所以Python你需要jython或J thonser,那是Python但在Java中,它的支持有限。所以它支持Python 2.7。我敢打赌,我为我自己说话。我想我终于改掉了一些旧的Python 2.7语法问题的习惯,当我在写Python 3时,我仍然坚持着。所以我只是尽量不回头看,我尽量不回头看Python 2.7。它很好,我喜欢它。但我必须使用Python 3,所以。即使是打印语句也不同。所以但有,有,有伟大的扩展是用python写的,copy ah4就是一个主要的例子。我只是,我选择那只是不是我在burp扩展时通常选择的路径。所以我们有Java,而Java是。Burp Suite是用Java写的。所以Burp Suite它,Burp Suite将对用Java写的扩展更友好。我不应该那么说,但我只是。在我心中,它对用Java写的扩展更友好。它们,它确实支持Kotlin。所以如果你是Android开发者,那是。你舒服,你经常使用Kotlin,去吧,你可以用Kotlin写你的扩展。所以我总是想所以用Java,用Java写一个burp扩展,我总是想。我在密歇根,这个时候鹿在跑,鹿到处跑。所以,所以如果,如果你幸运没有撞到鹿,有人撞到了鹿,所以他们把车放在车身修理厂,你会得到,你会得到估价,它会说好吧,这么多钱,你可以使用OEM制造商的原始设备,或者更便宜,但你可以使用不是制造商制造的东西。所以在我心中,我有那个例子为什么我想使用Java。那是Burp Suite的OEM语言。所以那就是为什么我选择用Java写我的扩展。需要注意的一点是Burp Suite支持用Java 21或更低版本写的扩展。只是,只是记下那个。只是为了,只是为了我们涵盖。它不应该影响太多。但当你制作你的扩展时,你只需要考虑那个,如果你选择用Java和Ruby写。所以那个,你需要JRuby来运行那些扩展。就个人而言,我有点被一个Ruby on Rails Web应用伤到了,我管理了一段时间。所以我会不惜一切代价避免Ruby。我会。如果,如果,如果你在会议上看到我,你想谈Ruby,我只是,我,我,我,我,我会谈任何事除了Ruby。那是,那是个笑话。但,那是,是的,我继承了一个,抱歉,Jason。
Jason Blanchard
嘿,Dave。我有个快速的事给你。是的,只是喝点水。
Dave Blandford
好的。
Jason Blanchard
好的,是的,只是,我们会帮你处理那个咳嗽,然后那样我们会回到它。好的,Dave,你做得很好。
Dave Blandford
好的,太棒了。
Jason Blanchard
我回去了。
Dave Blandford
好的。但是的,所以我,我有一个Web应用,我接管了。它是Ruby,它是写的,它是一个Ruby on Rails应用,它只是,它是个痛苦。所以它是基础设施即服务,它,在我加入之前有更新。我接管应用的原因是该应用不再存在了。它是,我不会,我不会用很长的故事烦每个人,但我,我被那次经历伤到了。所以没有Ruby。然后这个,这个,这个扩展在这里,我本意是有一张幻灯片回来,但这个,这个扩展我寄予厚望。我仍然,它仍然需要得到,我仍然需要一个用例来尝试它,但它是Snyx,Socket Sleuth。所以这是,这是设计来扩展intruder,拦截和许多其他功能到WebSockets。如果你不熟悉WebSockets是什么。所以如果你有孩子或者如果你,如果你,如果你以前是个孩子或者看到父母和孩子如何反应。所以我想象,这是我想象的方式。所以一个HTTP请求就像父母对孩子说话,因为你会说,你有作业吗?然后你只会得到像是的,不回来。所以你得到那个200响应或者你的夹克在哪里?所以你得到像301,302重定向,那会,我,得问妈妈。去问妈妈。或者像,测试怎么样500。你会得到一个错误在WebSockets中。我想象它就像如果孩子发起了对话,比如,嘿,我能去看比赛吗?所以它是全双工的。交换是来回的全双工模式。还有,它没有得到那个,它没有得到那个服务器响应。只是很多我能去看比赛吗?我能去看比赛吗?我能去看比赛吗?话题,话题可能改变。所以那是,那是,我想很多类比,那是如何,那是如何,那是如何我有websockets在我脑中。但所有那说它有点困难。Burp Suite不是最好地处理如何,处理WebSockets请求或用于,用于测试它,用于扩展测试。所以这是一个,这是,这个,这个特定扩展不在BAP商店中,但它,但它,但它是公开可用的,它确实扩展了一些测试到WebSockets。所以如果,如果有人用过它,我会把它扔进聊天如果你成功用过它。但这是一个我寄予厚望的。所以这有点回到为什么制作扩展?有一个,有一个问题。所以WebSockets测试它,完全扩展,扩展。我刚看到有人放了一个404代码。所以那很有趣,在聊天中。但有,有WebSocket测试的问题完全扩展它。这是一个扩展,有人制作来扩展Burp Suite的测试功能到WebSockets。
所以我们将讨论一点环境。所以我们需要什么来创建扩展?如果你,如果你是新手,如何,如何我们创建,如何我们创建我们的环境?所以你将需要,你将需要Java,如果你要用Java开发,你将需要Java开发工具包,那是JDK或open jdk,那是开放版本。但你可能说,好吧我电脑上有Java,但那都取决于你可能