首页>参考读物>计算机科学与技术>计算机网络

Web漏洞搜索
作者 : [美] 彼得·亚沃斯基(Peter Yaworski) 著
译者 : 恒安信雅书社 译
出版日期 : 2021-09-26
ISBN : 978-7-111-69135-8
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 260
开本 : 16
原书名 : Real-World Bug Hunting: A Field Guide to Web Hacking
原出版社: No Starch Press
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书从道德黑客的角度出发,结合赏金漏洞实例,向读者介绍应如何处理应用程序中的漏洞,如何寻找赏金漏洞和提交方案报告。主要内容包括什么是漏洞和漏洞悬赏,如何在漏洞挖掘平台上挖掘开放式重定向漏洞、HTTP参数污染漏洞、跨站请求伪造漏洞、HTML注入和内容欺骗漏洞、回车换行注入漏洞、跨站脚本漏洞、模板注入漏洞、SQL注入漏洞、服务端请求伪造漏洞、内存漏洞、子域接管漏洞、不安全的直接对象引用漏洞、OAuth漏洞、应用程序逻辑和配置漏洞等,并提交给平台,进而对漏洞进行修复,以及如何获得漏洞奖金、漏洞报告如何编写等。

图书特色

图书前言

这本书将向你介绍道德黑客的世界,如何发现安全漏洞,以及如何向应用程序所有者报告漏洞。当我刚开始学习黑客技术时,我不仅想知道黑客发现了什么漏洞,而且想知道他们是如何发现这些漏洞的。
在我搜索信息的过程中,总是会出现同样的问题:
黑客在应用程序中发现了哪些漏洞?
黑客是如何得知应用程序中存在这些漏洞的?
黑客如何渗透一个网站?
黑客攻击是什么样子的?它是完全自动化的,还是手动完成的?
我如何开始进行渗透和发现漏洞?
我最终登录了HackerOne,这是一个漏洞奖励平台,旨在将道德黑客与寻找黑客来测试其应用程序的公司联系起来。HackerOne的功能允许道德黑客和公司披露已经发现和修复的漏洞。
在阅读那些公开的HackerOne报告时,我努力理解人们已经发现了哪些漏洞,以及这些漏洞会如何被滥用。我经常需要把同一篇报告重读两三遍才能理解它。我意识到,我和其他初学者可以从对现实世界漏洞的纯语言解释中获益。
这本书是一个重要的参考,它将帮助你理解不同类型的Web漏洞。你将学到如何发现漏洞,如何上报它们,如何从中获得报酬,以及如何编写防御代码。但这本书中不仅涵盖成功的范例,也包含错误案例和人们应该吸取的教训,其中很多问题是我自己遇到过的。
当你通读完本书,你就已经迈出了让网络变得更安全的第一步,并且你应该能够从中赚到一些钱。
本书的读者对象
这本书是为学习漏洞挖掘技术的初学者写的,不管你是网页开发人员、网页设计师、全职妈妈、10岁的孩子还是75岁的退休人员,都可以阅读本书。
拥有一些编程经验并且熟悉网络技术有助于理解本书内容,但这并不是成为道德黑客的先决条件。例如,你不必是一个Web开发人员或黑客,但如果你对基本超文本标记语言(HTML)如何架构网页,层叠样式表(CSS)如何定义网页外观,以及网站的JavaScript动态有所了解的话,将有助于你发现漏洞和识别其带来的影响。
了解如何编程对于查找涉及应用程序逻辑的漏洞和思考开发人员可能会犯什么样的错误很有帮助。如果你能站在程序员的角度猜猜他们是如何实现一些程序的,或读懂他们的代码,那么你成功发现漏洞的概率将会更高。
如果你想学习编程,可参考No Starch Press出版的大量书籍。你也可以在Udacity和Coursera上查看免费课程。附录B中还列出了其他资源。
如何阅读本书
每个描述漏洞类型的章节都有以下结构:
1)漏洞类型的描述
2)漏洞类型的示例
3)提供结论的总结
每个漏洞示例都包括以下内容:
我对发现和证明漏洞的难度的估计
与发现漏洞的位置相关联的URL
原始披露报告或报告的链接
报告漏洞的日期
漏洞上报者通过上报信息所得到的奖金
关于漏洞的清晰描述
可以应用到你自己的漏洞挖掘中的提示
你不必把这本书从头到尾读完。如果你对某一章节感兴趣,先读它。在某些情况下,我会引用前面章节中讨论过的观点,但是在这样做的时候,我会尽量说明我在哪里定义了这个术语,以便你可以参考相关章节。当你进行漏洞搜索时,记得翻阅本书。
本书的主要内容
以下是每章内容的概述。
第1章:解释了什么是漏洞和漏洞奖励,以及客户端和服务器之间的区别,还介绍了互联网是如何工作的,包括HTTP请求、响应和方法,以及HTTP无状态的含义。
第2章:涉及利用给定域的信任将用户重定向到不同域以实施攻击。
第3章:涵盖了攻击者如何操纵HTTP请求,注入额外的参数,使目标网站产生信任,以及导致意外行为。
第4章:涵盖了攻击者如何利用恶意网站使目标浏览器向另一个网站发送HTTP请求,然后,另一个网站就装作这个请求是合法的,并且是由目标用户故意发送的。
第5章:解释了如何将自己设计的HTML元素注入目标网站的网页中。
第6章:演示了攻击者如何向HTTP消息注入编码字符,以改变服务器、代理和浏览器对它们的解释。
第7章:解释了攻击者如何利用没有对用户输入进行消毒的站点来执行他们自己的JavaScript代码。
第8章:解释了当站点没有清理模板中使用的用户输入时,攻击者是如何利用template引擎的。本章包括客户端和服务器端示例。
第9章:描述了数据库支持站点上的漏洞如何让攻击者意外查询或攻击站点的数据库。
第10章:解释了攻击者如何让服务器执行意外的网络请求。
第11章:展示了攻击者如何利用应用程序解析XML输入和处理输入中包含的外部实体。
第12章:涵盖攻击者如何利用服务器或应用程序来运行自己的代码。
第13章:解释了攻击者如何利用应用程序的内存管理来引发意外行为,包括执行攻击者自己注入的命令。
第14章:展示了当攻击者可以代表合法伙伴域控制子域时,子域接管是如何发生的。
第15章:揭示了攻击者如何对基于初始条件的站点进程竞态完成情况加以利用,该初始条件在进程执行时失效。
第16章:涵盖当攻击者可以访问或修改对象(比如他们不应该访问的文件、数据库记录或账户)的引用时出现的漏洞。
第17章:涵盖协议实施中的漏洞,该协议旨在简化和标准化Web应用程序、移动应用程序和桌面应用程序上的安全授权。
第18章:解释攻击者如何利用编码逻辑或应用程序构造错误,使网站执行一些意外的操作,从而导致漏洞。
第19章:根据我的经验和方法给出了在哪里以及如何寻找漏洞。本章并不是一步一步地指导你如何入侵一个网站。
第20章:讨论了如何编写可信的和信息丰富的漏洞报告。
附录A:描述了道德黑客常用的流行工具,包括代理网络流量、子域枚举、截屏等。
附录B:列出了进一步扩展你的道德黑客知识的其他资源,包括在线培训、流行的平台、推荐的博客等。
免责声明
当你读到公开披露的漏洞,看到黑客获得赏金,会很自然地认为当黑客是一个简单和快速致富的方式。
但并不是这样。
黑客可能是有回报的,但是你不太可能知道在这个过程中发生的失败的案例(虽然我在这本书中分享了一些非常尴尬的故事)。因为多数时候你会听到黑客攻击成功了,所以你可能会对自己的黑客生涯产生不切实际的期望。
你可能很快就会成功,但是如果你找不到漏洞,就继续挖掘吧。开发人员总是会编写新的代码,而错误总是会进入生产环境。你尝试的次数越多,这个过程就会变得越容易。
在这一点上,请随时在Twitter上给我发信息(@yaworsk),让我知道进展如何。即使不成功,我也想收到你的反馈。
漏洞挖掘可能是一项孤独的工作。但是一起庆祝成功的感觉也是很棒的,也许你会提前发现那些我将在下一版中介绍的内容。
祝你好运!

上架指导

计算机\安全

封底文字

本书充满了丰富的、真实的安全漏洞报告示例以及有用的分析。
—— Michiel Prins 和 Jobert Abma, HackerOne的共同创始人

本书是寻找软件漏洞的指南。不管你是想让互联网环境变得更加安全的网络安全知识初学者,还是想要写安全代码的经验丰富的开发人员,本书都能让你有所收获。

你将了解最常见的网络漏洞,如跨站点脚本、不安全的直接对象引用和伪造服务器端请求。通过学习从Twitter、Facebook、Google、Uber等应用程序的赏金漏洞中选取的真实案例,你会看到黑客如何在转账时调用竞态条件,使用URL参数让用户喜欢上非预期的推文等。

书中除第1章外,每一章都介绍了一个漏洞类型,并附有一系列已公布过的真实的漏洞赏金,通过这个领域的事件来告诉你攻击者如何诱骗用户泄露他们的敏感信息,以及网站如何暴露用户的弱点。你甚至会学到如何将这个具有挑战性的新爱好转变为成功的职业。

通过本书,你将学到:
互联网的工作原理和漏洞的概念
攻击者如何攻击网站
如何在日常生活中识别与漏洞相关的功能
应该从哪里着手寻找漏洞
如何找到赏金漏洞并提交有效的漏洞报告

图书序言

实践出真知。我们就是这样学习各种技术的。
我们都很年轻,就像所有在我们之前和之后出现的黑客一样。我们被一种无法控制的、强烈的好奇心所驱使,想要了解事物是如何运作的。大部分时间都在玩电脑游戏的我们,12岁的时候开始学习制作自己的软件。我们从图书馆的书籍和自己的实践中学会了如何用Visual Basic和PHP编程。
从我们对软件开发的理解来看,我们很快发现使用这些技能可以发现其他开发人员的错误。好奇心让我们从构建转向了破坏—为了庆祝高中毕业,我们接管了一家电视台的广播频道,播放了一则祝贺我们毕业的广告。虽然当时觉得这很有趣,但我们很快就明白了这样做的后果—电视台和学校都很不悦,作为惩罚,我们整个夏天都在清洗窗户。在大学里,我们利用自己的技能成立了一家咨询公司。巅峰时期,在全世界的公共和私人领域都有我们的客户。这促使我们在2012年创立了HackerOne公司。我们想让世界上的每一家公司都能成功地与道德黑客合作,时至今日,这依然是HackerOne的使命。
如果你正在阅读这篇文章,那么你很可能也想成为一名道德黑客或漏洞猎人。我们相信这本书将是你人生旅途中的一个极好的向导。书中充满了丰富的、现实世界中能真正赢得漏洞赏金的安全漏洞能力报告范例,还附有由本书作者彼得·亚沃斯基及其同事所提供的非常有价值的分析及审查报告。他将以伙伴的角色陪伴你学习,这是无价的。
这本书如此重要的另一个原因,是它关注如何让你成为一名道德黑客。黑客技术是一项非常强大的技能,我们希望它能被用于积极的方面。道德黑客知道如何在正确和错误之间划清界限。有些黑客会进行破坏,甚至试图以此来快速赚钱。但想象一下,你可以使互联网更安全,有机会与世界各地的优秀公司合作,甚至还能在这个过程中获得报酬,你的才能将有能力保证数十亿人及其数据的安全—我们希望这是你们的初心所在。
感谢彼得花时间如此翔实地记录了这些。我们希望在事业开始的时候,就拥有这样的资源。彼得的书能给你带来欢乐,同时带给你了解黑客技术的必要信息。
阅读快乐!
记住要用技术来主持正义。

Michiel Prins,Jobert Abma
HackerOne联合创始人

译者序

漏洞是存在于计算机网络系统或平台中的可能对系统的组成、数据和运行等造成损害的一切因素和缺陷。漏洞虽小,但如果不及时处理,极易造成计算机网络系统的瘫痪,对网络商业平台造成不可估量的损失。每年都有诸多互联网公司在行业平台上发布赏金漏洞,寻求“道德黑客”(Moral Hacker)的技术支持,以解决开发人员可能忽视的安全问题。
市面上有很多介绍道德黑客和网络系统漏洞的书籍,也不乏优秀的网络安全读物,既有讲解渗透理论的诸多示例,也有对黑客行为习惯和技巧的分析,帮助读者提前发掘系统或者网络中的漏洞,防止潜在攻击。而本书则从道德黑客的角度出发,结合赏金漏洞实例,向读者介绍应如何处理应用程序中的这些漏洞,如何寻找赏金漏洞和提交方案报告。本书不仅是漏洞解决技术的指导手册,也是向读者展示道德黑客的世界的最佳入门读物。
随着互联网渗入日常生活的每一个角落,尤其是5G时代的到来和物联网的飞速发展,来自网络的安全威胁也日趋严峻。手机、计算机和工业互联网的商业平台发展愈发迅速,对开发和运维人员处理系统和网络层面故障的要求也愈发严格。重要系统或网络中的单个漏洞可能会破坏一个机构的安全态势,导致商业平台收集的敏感个人信息和隐私泄露,造成数字财产损失,严重损害开发者及用户的利益。让读者通过学习本书来掌握不同情况下解决技术漏洞的方法,提升漏洞修复和开发初期防护的技巧,加深对道德黑客世界的理解,这正是我们在工作之余翻译此书的动力和初衷。身处网络安全企业,除了为国家和社会提供网络安全服务之外,我们也希望通过翻译此书向更多有兴趣学习漏洞处理技术的读者提供帮助。
为了保证译稿的质量,我们基于与北京警察学院共同成立的“全国重点网站安全检测联合实验室”开展翻译工作。在此感谢北京警察学院网络安全保卫系唐卫中老师,恒安信雅书社张振涛博士、李鹏超博士、刘新鹏、庄越淋、陈红选、王占鹏、万青、张晨辰等对翻译本书提供技术支持。感谢句雅楠、张丽源对于本书中晦涩的技术细节提供精准的翻译建议。感谢刘晓蔚女士在翻译过程中提供的专业指导。
虽然参与本书翻译工作的成员都具有较丰富的网络安全技术经验和实战积累,但是鉴于写作功底有限,译文中难免会存在一些不尽如人意的地方,希望各位读者能提供宝贵的修改意见和建议。

图书目录

译者序
序言
前言
致谢
作者简介
技术审校者简介
第1章 漏洞悬赏入门1
1.1 漏洞和漏洞悬赏1
1.2 客户端和服务器端2
1.3 当你访问一个网址时发生了什么3
1.4 HTTP请求7
1.5 总结10
第2章 开放式重定向11
2.1 开放式重定向如何工作12
2.2 Shopify主题设置的开放式重定向漏洞14
2.3 Shopify 登录的开放式重定向漏洞14
2.4 HackerOne中间网页重定向漏洞16
2.5 总结18
第3章 HTTP参数污染19
3.1 服务器端 HPP19
3.2 客户端HPP22
3.3 HackerOne分享按钮23
3.4 Twitter取消订阅通知24
3.5 Twitter弹出窗口26
3.6 总结28
第4章 跨站请求伪造29
4.1 身份认证30
4.2 通过GET请求发起CSRF攻击32
4.3 通过POST请求发起CSRF攻击33
4.4 抵御CSRF攻击35
4.5 Shopify Twitter 断连接攻击37
4.6 改变用户的Instacart地区攻击38
4.7 Badoo全账号接管39
4.8 总结42
第5章 HTML注入和内容欺骗43
5.1 通过字符编码进行Coinbase评论注入攻击44
5.2 HackerOne非预期HTML包含漏洞46
5.3 HackerOne非预期HTML包含补丁绕过漏洞48
5.4 Within Security内容欺骗漏洞49
5.5 总结51
第6章 回车换行注入52
6.1 HTTP请求夹带攻击53
6.2 v.shopify.com响应分割攻击53
6.3 Twitter HTTP响应分割攻击55
6.4 总结57
第7章 跨站脚本58
7.1 XSS的类型62
7.2 Shopify Wholesale XSS漏洞65
7.3 Shopify货币格式XSS漏洞67
7.4 雅虎邮件存储型XSS漏洞68
7.5 Google图像搜索XSS漏洞70
7.6 Google标签管理器存储型XSS漏洞71
7.7 联合航空网站XSS漏洞73
7.8 总结76
第8章 模板注入78
8.1 服务器端模板注入78
8.2 客户端模板注入79
8.3 Uber AngularJS模板注入80
8.4 Uber Flask Jinja2模板注入81
8.5 Rails动态呈现漏洞84
8.6 Unikrn Smarty模板注入86
8.7 总结89
第9章 SQL注入90
9.1 SQL数据库90
9.2 防御SQLi92
9.3 雅虎体育盲SQLi93
9.4 Uber盲SQLi96
9.5 Drupal SQLi100
9.6 总结103
第10章 服务器端请求伪造105
10.1 展示SSRF的影响105
10.2 调用 GET 与 POST 请求106
10.3 执行盲测 SSRF107
10.4 使用 SSRF 响应攻击用户108
10.5 ESEA SSRF 和 AWS 元数据请求108
10.6 Google内部 DNS SSRF111
10.7 使用Webhook进行内网端口扫描115
10.8 总结117
第11章 XML外部实体118
11.1 XML118
11.1.1 文档类型定义119
11.1.2 XML 实体121
11.2 XXE攻击如何发挥作用122
11.3 读取Google的访问权限123
11.4 Facebook XXE Word漏洞124
11.5 Wikiloc XXE126
11.6 总结129
第12章 远程代码执行130
12.1 执行Shell命令130
12.2 执行函数132
12.3 远程调用的升级策略133
12.4 Polyvore ImageMagick漏洞134
12.5 Algolia RCE 漏洞137
12.6 SSH RCE 漏洞139
12.7 总结141
第13章 内存漏洞142
13.1 缓冲区溢出143
13.2 越界读取146
13.3 PHP ftp_genlist()整数溢出漏洞147
13.4 Python Hotshot模块148
13.5 Libcurl越界读取149
13.6 总结150
第14章 子域接管151
14.1 理解域名151
14.2 子域接管工作原理152
14.3 Ubiquiti的子域接管153
14.4 Scan.me指向Zendesk154
14.5 Shopify Windsor子域接管155
14.6 Snapchat Fastly接管156
14.7 Legal Robot接管157
14.8 Uber SendGrid Mail接管158
14.9 总结160
第15章 竞争条件161
15.1 多次接受同一个HackerOne邀请162
15.2 Keybase超过邀请数上限164
15.3 HackerOne付款竞争性条件165
15.4 Shopify合作伙伴竞争条件166
15.5 总结168
第16章 不安全的直接对象引用169
16.1 查找简单的IDOR169
16.2 查找复杂的IDOR170
16.3 Binary.com 权限升级171
16.4 Moneybird 应用程序创建172
16.5 Twitter Mopub API Token 被盗174
16.6 ACME 客户信息泄露175
16.7 总结177
第17章 OAuth漏洞178
17.1 OAuth工作流179
17.2 窃取Slack OAuth令牌182
17.3 使用默认密码通过身份验证183
17.4 窃取微软登录令牌184
17.5 刷Facebook官方访问令牌186
17.6 总结187
第18章 应用程序逻辑和配置漏洞189
18.1 绕过Shopify管理员特权190
18.2 绕过Twitter账户保护192
18.3 HackerOne信号处理193
18.4 HackerOne不正确的S3 Bucket
权限194
18.5 绕过GitLab双重身份验证196
18.6 雅虎PHP的信息披露197
18.7 HackerOne Hacktivity投票199
18.8 访问PornHub的Memcache安装201
18.9 总结203
第19章 找到你的漏洞奖金204
19.1 侦察204
19.1.1 子域枚举205
19.1.2 端口扫描206
19.1.3 截屏207
19.1.4 内容发现208
19.1.5 以前的漏洞209
19.2 测试应用程序210
19.2.1 技术栈210
19.2.2 功能映射211
19.2.3 发现漏洞212
19.3 走得更远一些214
19.3.1 自动化你的工作214
19.3.2 研究移动应用215
19.3.3 识别新功能215
19.3.4 追踪JavaScript文件215
19.3.5 为访问新功能而付费216
19.3.6 学习技术216
19.4 总结217
第20章 漏洞报告218
20.1 阅读政策218
20.2 包含细节,包含更多219
20.3 再次确认漏洞220
20.4 你的信誉221
20.5 对公司表示尊重221
20.6 寻求奖励报酬223
20.7 总结224
附录A226
附录B235

教学资源推荐
参考读物推荐
作者: Johnny Long
作者: 王春海
作者: Greg Holden