《Web漏洞搜索》(美)彼得·亚沃斯基(Peter Yaworski)|(epub+azw3+mobi+pdf)电子书下载

图书名称:《Web漏洞搜索》

【作 者】(美)彼得·亚沃斯基(Peter Yaworski)
【丛书名】网络空间安全技术丛书
【页 数】 243
【出版社】 北京:机械工业出版社 , 2021.10
【ISBN号】978-7-111-69135-8
【分 类】计算机网络-网络技术
【参考文献】 (美)彼得·亚沃斯基(Peter Yaworski). Web漏洞搜索. 北京:机械工业出版社, 2021.10.

图书封面:

图书目录:

《Web漏洞搜索》内容提要:

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

《Web漏洞搜索》内容试读

第1章

漏洞悬赏入门

如果你是刚刚入门的黑客新手,这本书将有助于你对“互联网是如何工作的”有一个初步的了解,并帮助你了解当

你在浏览器的地址栏中输入一个UL后发生了什么。虽然导

航到网站看似简单,但是其中涉及了许多隐藏的过程,例如准

备HTTP请求、确定要发送请求的域名、将域名转换为IP地址、

发送请求、做出响应等。

在这一章,你将学习一些基本概念和术语,例如漏洞、漏洞悬赏、客户端、服务

器端、P地址和HTTP。你将对执行意外操作和提供意外输人或访问私有信息如何导

致漏洞有一个初步的了解。之后,我们将看到当在浏览器的地址栏中输入一个UL

的时候发生了什么,包括HTTP请求、HTTP响应以及各种各样的HTTP动作。在本

章的结尾,我们将理解“HTTP是无状态的”代表着什么。

1.1

漏洞和漏洞悬赏

漏洞是应用程序中的一个弱点,它允许恶意用户执行某些未经许可的操作或获取访问信息的权限,若不存在漏洞,他们将被禁止访问这些信息。

在学习和测试应用程序时,请记住:攻击者执行有意或无意的操作都可能会导致

第1章

漏洞,例如更改记录标识符的D以访问不应该访问的信息。

假设一个网站允许创建一份个人资料,其中包括姓名、电子邮件、生日和地址,你的私人信息只会分享给你的朋友。但如果网站允许任何人加你为好友并且不需要你的同意,这将是一个漏洞。尽管网站将你的信息对非好友保密,但允许任何人加你为好友,就意味着他们将都可以访问你的信息。当你测试一个站点时,一定要考虑别人是如何滥用现有功能的。

漏洞悬赏是某个网站或公司给予发现漏洞并将其报告给该网站或公司的人的一种奖励。奖励通常是钱,从几十美元到数万美元不等。除了钱之外,奖励也可能是加密货币、航空里程、奖励积分、服务积分等。

当一家公司提供漏洞悬赏时,为了那些想测试公司漏洞的人,公司会创建一个项目,在本书中,我们将使用“项目”这一词表示公司制定的规则和框架。请注意,这

与操作漏洞披露程序(VDP)的公司不同。漏洞悬赏会提供一些奖金,而VDP是不提

供报酬的(尽管个别公司可能会给奖励),因为VDP只是白帽黑客向公司报告漏洞以

供公司修复的一种方法。虽然本书中并不是所有的报告都得到了回报,但它们都是黑客参与漏洞悬赏计划的例子。

1.2客户端和服务器端

你的浏览器依赖于互联网。互联网是计算机之间互相发送信息的网络,我们称这些信息为数据包。数据包包括你要发送的数据以及这些数据的来源和去向。互联网上的计算机都有一个用来接收数据的地址。但是,有一部分计算机只接收某些类型的数据包,还有一部分计算机只接收来自受限列表中计算机的数据包,然后由接收端的计算机决定如何处理这些数据包以及如何做出响应。在本书中,我们将只关注数据包中

包含的数据(即HTTP消息),而不是数据包本身。

我们将这些计算机称为客户端或服务器端。无论请求是否由浏览器、命令行或其他方式执行,我们通常都把发起请求的计算机称为客户端。而服务器端是指接收请求的网站和Wb应用程序。如果本书中提到客户端或服务器端,那么一般指的是计算机。

漏洞悬赏入门3

因为因特网中有不计其数的计算机在相互通信,所以计算机需要被告知如何通过

因特网进行通信,这通过征求意见(RFC)文档的形式传达。该文档定义了“计算机

应该如何工作”的标准。例如,超文本传输协议(HTTP)定义了网络浏览器如何使用

P协议与远程服务器进行通信。在这个场景中,客户端和服务器端都必须同意使用相

同的标准,以便它们能够理解各自发送和接收的数据包。

1.3当你访问一个网址时发生了什么

因为我们将在本书中重点介绍HTTP消息,所以本节将从较高的层次概述在浏览

器的地址栏中输入URL后经历的过程。

第一步:提取域名

一旦你输入htp:/www.google.com/,浏览器会根据URL确定域名。域名标识你

要访问的网站,并且必须遵守RFC定义的特定规则。例如,域名只能包含字母、数

字和下划线。国际化域名是一个例外,这超出了本书的范围,如果想了解它们的用法,请参考RFC3490。在我们列举的例子中,域名是www.google.com。域名是用于查找服务器地址的一种方式。

第二步:解析P地址

确定域名后,浏览器使用P来查找与域名关联的P地址,此过程称为解析P

地址。互联网上的每个域名都必须被解析为P地址才能工作。

IP地址存在两种类型:Internet协议版本4(IPv4)和Internet协议版本6(IPv6)。IPv4地址是由以点连接的四个数字组成的,每个数字在0到255之间。Pv6是

Internet协议的最新版本,它是为了解决“可用IPv4地址耗尽”的问题而设计的。

PV6地址由八组四位十六进制数字组成,用冒号隔开,而且也有缩写的方法。例如,

8.8.8.8是IPv4地址,2001:4860:4860:8888是IPv6地址的缩写。

如果仅使用域名查找IP地址,计算机会向域名系统(DNS)服务器发送请求。

DNS服务器由互联网上的专用服务器组成,这些服务器具有所有域名及其匹配的P

第1章

地址的注册表。前面IPv4和IPv6地址用到的是Google DNS服务器。

在这个例子中,连接到的DNS服务器将匹配到www.google.com的IPv4地址

216.58.201.228并发送回你的计算机。要了解有关站点IP地址的更多信息,可以从你

的终端使用命令dig A site.com并用你正在查找的网站替换site.com。

第三步:建立一个TCP连接

因为使用http:∥访问网址,所以随后计算机会尝试与80端口上的IP地址建立

TCP连接。TCP的细节并不重要,我们只需注意它是另一种定义“计算机如何相互通

信”的协议即可。TCP提供了双向通信,这样消息接收者就可以验证对方是否接收到

了信息,并且在传输过程中不会丢失任何内容。

你要向其发送请求的服务器可能正在运行多个服务(将服务视为计算机程序),因此它使用端口来标识接收请求的特定进程。你可以将端口视为服务器通向互联网的入口。如果没有端口,服务器端将不得不对发送到同一地点的信息进行竞争。这意味着我们需要另一个标准来定义服务如何相互协作,并确保一个服务的数据不会被另一

个服务窃取。例如,端口80是发送和接收未加密的HTTP请求的标准端口。另一个

公共端口是443,用于处理加密的HTTPS请求。虽然端口80是HTTP的标准端口,

443是HTTPS的标准端口,但是TCP通信可以在任何端口上发生,这取决于管理员

如何配置应用程序。

通过打开终端并运行nc80,你可以在端口80上建立自己的TCP连接。这一命令行使用Netcat utility中的nc命令创建用于读写消息的网络连接。

第四步:发送一个HTTP请求

继续把http:/www.google..com/作为例子,如果在第三步连接成功,你的浏览器

应该准备并发送一个HTTP请求,如列表1-1所示。

列表1-1发送一个HTTP请求

O GET HTTP/1.1

Host:www.google.com

Connection:keep-alive

漏洞悬赏入门5

Accept:application/html,*/

User-Agent:Mozilla/5.0 (Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/72.0.3626.109 Safari/537.36

浏览器向路径/发出GET请求(①),这是网站的根路径。网站的内容根据路径进

行组织,就像计算机上的文件夹和文件一样。当进一步访问每个文件夹时,所走的路径都是通过记录每个文件夹的名称后面跟一个“/”来表示的。当你访问网站的第一

页时,将访问根路径,它只是一个“/”。浏览器还指示它使用的是1.1版本的HTTP

协议。GET请求只获取信息。我们之后会了解更多有关GET方法的知识。

Host头(②)包含请求中发送的一部分附加信息。HTTP1.1需要Host头来找到

服务器的P地址以确定请求应该发向哪里,因为P地址可以对应多个域名。连接头

(®)表示请求与服务器的连接保持打开状态,以避免不断打开和关闭连接。

你可以在④中知道预期的响应格式。在本例中,我们期望返回的格式是application/.html,同时通过通配符(*/*)可以接受任何响应格式。目前有数百种可能的内容类型,但对我们来说,application/html、application/json、application./octet-stream、.text/plain是比较常用的。最后,User-Agent(g)表示发送请求的软件系统。

第五步:服务器响应

为了响应请求,服务器应该使用类似于列表1-2的内容进行响应。

列表1-2服务器响应

0HTTP/1.12000K

Content-Type:text/html

Google.com

--snip--

这里,我们收到一个状态码为200的HTTP响应(0)。状态码很重要,因为它

代表了服务器的响应状态。同样由RFC定义,这些状态码通常是以2、3、4或5开

第1章

头的三位数字。虽然没有严格要求服务器使用特定代码,但2xx通常表示请求成功。

由于这里服务器没有严格执行HTTP状态码的使用规则,因此即使HTTP报文解

析存在应用程序错误,也可能会看到一些状态码是200的响应。HTTP报文是一段与请

求或响应相关联的文本(目)。在本例中,我们删除了内容并将其替换为“-snip-”,因为Google的响应体太大了。对于Wb页面,响应内容通常是HTML,但对于应用

程序编程接口(API),响应内容可能是JSON,而对于文件下载,响应内容则可能是

一个文件,等等。

Content-.Type头(②)通知浏览器的媒体类型。媒体类型决定浏览器如何呈现内容。但浏览器并不总是使用从应用程序返回的值;相反,浏览器执行MIME sniffing,通过读取正文内容的第一位来确定自己的媒体类型。应用程序通过包含头文件

X-Content-Type-Options:nosniff,可以禁止浏览器使用MIME sniffing这种方式。

其他以3开头的响应状态码表示重定向,指示浏览器发出附加请求。例如,理论上,如果Google需要永久性地将一个URL重定向到另一个URL,可以使用301响应。相反,302是临时重定向。

当收到3xx响应状态码时,浏览器应向Location头中指定的URL发出新的

HTTP请求,如下所示:

HTTP/1.1 301 Found

Location:https://www.google.com/

以4开头的响应通常表示用户错误。例如,尽管提供了一个有效的HTTP请求,

但请求不包括授权访问内容的正确标识时就会响应403。以5开头的响应表示某种类型的服务器错误,例如503表示服务器无法处理发送的请求。

第六步:呈现响应

因为服务器发送了一个状态码为200,内容类型为text/html的响应,浏览器将开始呈现它收到的内容。响应体会告诉浏览器应该向用户显示什么。

例如,这个响应体将包括页面结构的HTML,用于样式和布局的级联样式表

(CSS),以及用于添加附加动态功能和媒体文件(如图像或视频)的JavaScript。服务

···试读结束···

阅读剩余
THE END