《Web漏洞搜索(中文版)(1).docx》由会员分享,可在线阅读,更多相关《Web漏洞搜索(中文版)(1).docx(5页珍藏版)》请在第一文库网上搜索。
1、你也可以通过追踪JavaScript文件发现网站的新功能。当网站依赖于前端JavaScript框架来进行内容呈现时,聚焦到JaVaSCriPt文件上来寻找新功能是特别强大的。应用程序将依赖于网站使用的大多数HTTP端点都已经包含在了JavaScript文件中。对文件的修改很可能就代表着你可以测试的新的功能或修改后的功能。JobertAbmaBrettBuerhaus和BenSadeghipour已经讨论过了怎样追踪JavaScript文件的方法;你可以在Goog1e搜索引擎中输入他们的名字和单词“reconnaissance(侦察)来快速找到他们的文章。19.3.5为访问新功能而付费当你尝试着
2、从漏洞奖励项目赚钱时,你也要为访问新功能而付费,这看起来有些违背常理。FransRoSerI和ROnChan讨论过通过为访问新功能而付费所带来的成功。例如,RonChan曾经支付了几千美元去测试一个应用,并且发现了数量众多的漏洞,使得他的投资非常值得。我也曾经为产品、注册账号、服务等付过费以扩大我潜在的测试范围,并取得了成功。人们一般不想为网站上他们不使用的功能付费,因此这些功能就可能存在更多未被挖掘的漏洞。19.3.6学习技术另外,你可以深入研究一下公司所采用的技术、库和软件,并详细了解它们的工作原理。你所了解的一项技术的工作原理越多,就越有可能在测试的应用中发现基于这些技术的漏洞。例如,在
3、第12章中发现ImageMagick漏洞就需要理解ImageMagick及其定义的文件类型的工作原理。你也可以通过研究被连接到类似ImageMagiCk库的其他技术来发现更多的漏洞。TavisOrmandy就是这样发现TmageMagiCk支持的GhoStSCriPt上的漏洞的。你可以在https:/www.openwa11,com1istsoss-security2018/08/21/2中找到关于这些GhoStSCriPt漏洞的更多信息。类似地,FiIeDeSCriPtOr在一篇博客文章中透露,他阅读了关于网站功能的RFC文档,并专注于安全方面,以了解网站上这些安全机制应该如何工作,而不是实
4、际上是如何实现的。他对OAUth的深刻理解是深入研究大多数网站所使用技术的一个很好的例子。119.4总结在本章中,根据我自己的经验以及对顶级漏洞奖励获得者的采访,我试图阐明一些可能的黑客破解方法。到目前为止,在对目标进行侦察、理解目标提供的功能、将这些功能映射为用于测试的漏洞类型之后,我获得了很大成功。但是,我将继续探索并鼓励你也关注的领域是自动化和文档化你的方法。有很多黑客工具可以使你更容易进行漏洞挖掘:BurpZAP、NmaP和GoWitneSS是我提到的几种。为了利用好你的时间,在你进行破解时要记住这些工具。一旦在典型的挖掘漏洞过程中你己经穷途末路了,可以通过深入挖掘你所测试的网站提供的
5、移动应用程序和新的功能来寻找使你的漏洞挖掘更容易成功的方法。第20章漏洞报告所以,你找到了你的第一个漏洞。恭喜你!找到漏洞的确很难。我的第一条建议是放松自己,不要走得太快。当你慌张失措的时候,往往容易犯错误。相信我一一我知道发现了一个漏洞的兴奋感觉和提交一个漏洞却仅仅得到报告被拒绝的感受。更为糟糕的是,当公司将你的报告认作无效进行关闭时,漏洞奖励平台会降低你的信誉积分。本章将通过给你一些关于如何写好一篇漏洞报告的建议来帮助你避免出现这种情况。20. 1阅读政策在你提交一个漏洞之前,一定要确保看过了该漏洞奖励项目的相关政策。参与到漏洞奖励平台的每家公司都会提供一个政策文档,其中通常列出了不在奖励
6、范围内的漏洞类型列表以及哪些资产在奖励范围内而哪些不在。在进行破解之前总是要阅读一下公司的政策,以免浪费你的时间。如果你还没有阅读漏洞奖励项目的相关政策,现在要阅读一下以确保你所寻找的不是公司不要求报告的通用问题或漏洞。这里是我犯的一个本可以通过阅读相关政策而避免的错误。我是在Shopify上发现的我的第一个漏洞。我发现如果在ShoPify的文本编辑器中提交格式错误的HTM1,它的解析器会纠正这些错误并存储XSS。我非常兴奋。我想我的漏洞捕获终于有了回报,并担心我提交报告的速度还不够快。在提交完报告之后,我等着我的至少500美元的奖金。在提交后的五分钟内,漏洞奖励项目礼貌地告诉我该漏洞早就已知
7、并且被要求不要再提交。我的报告被作为无效报告关闭,并且我损失了五个信誉积分。我真想找个地洞钻进去。这是一个无情的教训。请以我的错误为鉴,阅读相关政策。20.2包含细节,包含更多在你确认了你可以报告漏洞之后,你就需要撰写你的漏洞报告了。如果你想让公司认真对待你的报告,报告中要提供包括如下所示的这些细节:重现该漏洞的UR1以及任何受影响的参数。你的浏览器、你的操作系统(如适用)和被测试的应用程序的版本(如果适用)。漏洞的描述。漏洞重现的步骤。漏洞影响的说明,包括如何利用该漏洞。修复该漏洞的建议及修复程序。我推荐在你的报告中应该包含漏洞证明,可以是界面截屏方式,也可以是不超过两分钟的短视频。概念证明
8、(PoC)材料不仅仅提供了你发现的一条漏洞记录,还有助于展示如何重现漏洞。当你准备漏洞报告时,你也需要考虑该漏洞的可能影响。例如,TWitter上的一个存储型XSS漏洞就可能是一个严重的问题,因为TWitter是一个公众公司,具有大量用户,人们对平台都十分信任,等等。相比之下,一个没有用户账号的网站可能会认为存储型XSS不是那么严重的漏洞。相反,在一个托管了个人健康记录的敏感网站上的隐私泄露就比在Twitter(大部分用户信息都是公开的)上的更具威胁性。20. 3再次确认漏洞在你已经阅读了公司的政策,起草了你的报告,并且也包含了一些概念证明材料后,花一分钟的时间问问你自己你正在报告的是否真的是
9、一个漏洞。例如,如果你正在报告一个CSRF漏洞,因为你不能在HTTP请求体中看到令牌,检查一下该令牌是否会作为一个消息头进行传递。在2016年3月,MathiasKarISSOn写了一篇关于找到同一来源策略(SoP)绕过漏洞的非常棒的博客文章(https:1abs,根据Kar1sson的说法,他在测试Firefox时,发现浏览器会接受macOS上格式错误的主机名。特别地,UR1httP:examp1e,com.将会加载examp1e,com,但是会在host头中发送.。然后他试着访问http:.evi1eonb结果一样。他知道这意味着他能够绕过SOP,因为系统会将看作在*域下。他测试了A1eX
10、a排名中前IOOOO个网站,并发现7%左右的网站是可以利用该漏洞的,其中包括。他写下了该漏洞,但后来决定与同事再次检查一下这个问题。他们使用另一台计算机重现了该漏洞。他更新了FirefoX,漏洞仍然存在。他在推特上发布了该漏洞的情况。随后他意识到自己犯了错误。他没有更新他的操作系统。在更新操作系统之后,漏洞消失了。很显然,他注意到的漏洞已经被报告了,并在六个月前就被修复了。Kar1SSon是最好的漏洞猎人之一,但即使是他也差点犯下了令人尴尬的错误。一定要在报告漏洞之前反复确认你的漏洞。当你认为你发现了一个重大的漏洞但随后意识到你误解了应用程序并提交了一份无效的报告时,这是一件令人十分失望的事。
11、20.4你的信誉当你考虑提交一份漏洞报告的时候,一定要退一步问问自己:你是否为能够公开披露该报告而感到骄傲?当我开始破解时,我提交了很多报告,因为我想成为一个有帮助的人,并进入漏洞挖掘排行榜。但是我确实在写无效的报告时浪费了大家的时间。不要犯跟我一样的错误。你可能并不关注你的信誉,或者你可能会相信公司通过对接收到的报告进行排序来发现有意义的漏洞。但是在所有的漏洞奖励平台,你的个人统计信息的确十分重要。这些统计信息会被追踪,并且公司使用这些统计信息来决定是否邀请你参加私有漏洞奖励项目。这类的项目对黑客来说一般回报都是丰厚的,因为参与其中的黑客较少,竞争也较小。这是我的经历中的一个例子:我被邀请参
12、加一个私有漏洞奖励项目,并且一天就发现了八个漏洞。但是当晚我提交一份报告给另一个漏洞奖励项目时,得到的反馈结果是不适用。这份报告降低了我在HaCkerOne上的统计积分。因此,当我第二天向一个私有漏洞奖励项目提交另外一个漏洞报告时,我被通知我的统计积分太低,并且不得不等三十天后再报告我发现的漏洞。等三十天一点都不好玩。我还是幸运的一一这期间没有人发现该漏洞。但犯错误带来的后果教会了我在所有平台上都要重视自己的信誉。20.5对公司表示尊重尽管这一点很容易被忘记,但是的确并不是所有的公司都有资源能够立即响应漏洞报告或集成漏洞修复程序。在你撰写漏洞报告或持续跟进时,一定要站在公司的视角考虑问题。当公
13、司开启了一个新的公开漏洞奖励项目时,它很容易就会被淹没在待分类处理的漏洞报告中。在你开始要求公司进行应用升级前,给它们一些时间来回复你。有些公司政策中包含了服务水平协议(S1A)和对报告回应时间的承诺。平复一下你的兴奋心情,并考虑一下公司的工作量。对于一个新的报告,我们一般期望五个工作日内会得到答复。如果超过了五天,你通常可以发表礼貌的评论以确认报告的状态。大多数情况下,公司会给出回应并让你知道报告的状态。如果它们没有给出响应,你应该在再次追问或者通过平台升级该问题之前再给这些公司几天的处理时间。另一方面,如果公司确认了报告中阐述的漏洞,你可以询问修复程序推出的时间表以及今后是否还会持续保持更
14、新。你也可以问问是否可以在一两个月后重新对其进行测试。开放的沟通是你想继续为之工作的漏洞奖励项目的指示器,如果一家公司一直对你的报告没有回应,那么你最好转向另外一个漏洞奖励项目。在写本书时,我足够幸运地可以与AdamBacchus进行对话和探讨,当时他是HackerOne的首席奖励官(ChiefBountyOfficer)(自2019年4月起,他已经重新回到Goog1e并参与了Goog1eP1ay奖励项目)。BaCChUS之前的经历包括在SnaPChat的时光,在那里他主要的工作是建立起安全与软件工程之间的桥梁。他也在GoOgIe的漏洞管理组(Vu1nerabi1ityManagementTe
15、am)工作过,以帮助运营GOog1C漏洞奖励项目(Goog1eVu1nerabi1ityRewardProgram)。Bacchus帮我理解了在运营一个漏洞奖励项目时,问题分诊员所面临的状况:尽管漏洞奖励项目在持续地改进,但是它们仍然会收到许多无效报告,特别是当它们是公开项目时。这通常叫作噪声。报告噪声给项目分诊员们带来了不必要的工作,这将延迟他们对有效报告的回应。漏洞奖励项目不得不寻找漏洞修复与早已存在的软件开发义务之间的平衡。当项目收到大量报告或者从不同的人收到关于同一个漏洞的重复报告时,做到这一点显得更加困难。对于低危或中危漏洞来说,把修复程序优先级提高更是特别的挑战。在复杂系统中验证报告中的漏洞是要花费时间的。因此在漏洞报告中撰写漏洞的清晰描述和重现的详细步骤就显得十分重要。当分诊员不得不需要从你那里获取更多信息来验证和重现一个漏洞时,这将延迟该漏洞的修复,也会延迟向你支付奖金。并不是所有的公司都有专职的安全人员来管