Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

时间:2021-09-17 14:00:02

前言:

今天将第二章前四节整理出来了,后面四节弄完再发出来,感觉这个分享形式也蛮不错,每天学习一点点,慢慢就进步一大点。第二章主要讲述了一些信息收集的方法及处理。今天分享的四节是标红色的部分:

第二章:侦察

介绍

被动信息收集

使用Recon-ng收集信息

使用Nmap扫描和标识服务

标识web应用程序防火墙

确定HTTPS加密参数

使用浏览器的开发工具分析和更改基本行为

获取和修改cookie

利用robots.txt

一起翻译的老哥们:

大T,

博客链接:http://thr0cyte.xyz/

Gr33k,

博客链接:http://www.zhanghuijun.top/

花花,

博客链接:http://to0ls.cn/

MrLee,

博客链接:https://www.tcp.red/

R1ght0us,

博客链接:http://www.r1ght0us.xyz/

7089bat,只有此公众号。

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

介绍

不管是针对网络还是web应用程序,渗透测试都有一套相同的流程。这一套流程可以增加我们发现漏洞的可能性,并且利用到尽可能多的漏洞来影响系统。例如:

  • 信息收集

  • 资产列举

  • 漏洞利用

  • 维持访问

  • 清理痕迹

 

在渗透测试中,信息收集是测试人员必须做的一件事情,信息收集需要收集存在于网络中的资产,如防火墙、IDS、IPS等。还要尽可能收集所有有关公司、网络、员工的信息。针对于web渗透测试,这一阶段主要讲如何收集web应用,数据库,用户和服务器的信息。

信息收集的质量取决于渗透测试的成功与否。我们得到的信息越多,测试的目标就越多。就有更多的选择去发现漏洞并利用。

 

一.被动信息收集

被动信息收集是指不影响目标系统的前提下获得信息,比如在搜索引擎,数据库缓存等这样的第三方机构收集。

在这节中,我们将从大量在线服务中获取信息,[这些公共来源的数据集合也被称为开源智能(OSINT)]。 被动信息收集可以在测试公共网站或应用中摸清我们目标的一个大概情况并发现对渗透测试人员有用的信息。

 

 

准备

为了在公共资源中获取信息,我们需要让kali虚拟机连接互联网,并配置成NAT网络地址转换模式。此步骤可以参考第一章中所介绍的方法,它会教你设置kali及靶机环境,并且设置NAT模式代替Host-only模式。

 

 

怎么做…

我们将用zonetransfer.me此域名作为我们的目标,zonetransfer.me是Robin Wood在digi.ninja网站创建的,它可以演示允许公共DNS区域传输的后果。

 

1.  我们首先使用whois获取它的注册信息:

# whoiszonetransfer.me

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

 

 

2.  另外一个工具是dig,它可以获取域名信息和DNS解析信息。

# dig nszonetransfer.me

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

 

 

 

3.  一旦我们获得了DNS服务器的信息,就可以尝试区域传输攻击来获取服务器解析的所有主机名。仍然使用dig:

# dig axfr@nsztm1.digi.ninja zonetransfer.me

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

 

 

很幸运,dns服务器支持区域传输,我们获得了一个完整的子域列表以及解析情况。接着就可以选择一个脆弱的目标来完成渗透攻击了。

 

4.现在可以使用theharvester来获取目标网站的邮箱、主机名、IP地址信息。

# theharvester -b all -d zonetransfer.me

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

 

 

 

5.如果想不直接查询服务器来获得网站使用的软件版本信息,可以使用Netcraft工具。登陆https://toolbar.netcraft.com/site_report输入想查询的域名即可:

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

 

 

6.获得一个网站以前的页面信息在测试中也很有用。可以在https://archive.org/web/web.php:

这个网站回溯网站以前版本的静态副本。

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

 

 

 

如何工作…

在这节教程中,我们利用了大量不同工具来收集目标信息。在linux命令行中使用whois查询了网站的注册信息,还获得了网站dns服务器的信息和管理员的个人信息,比如管理员的邮箱、公司名、电话等等。Whois还可以查询ip地址的归属者信息。接着,我们使用了dig获取了目标dns服务器的信息,并使用区域传输获得了所有子域名(dig区域传输只适用于没有正确配置的dns服务器)

通过使用harvester,获得了有关于目标域的邮箱、主机名和ip地址,其中-b all选项指使用所有支持的查询,-d后面指定搜索的目标域

然后我们使用netcraft获得了目标网站使用的技术信息和更新以前的情况。这使我们能够在进一步测试中不再查询真实站点。

Wayback machine网站是一种存储网站静态副本并保存记录的服务器。在这里,可以看到旧版本中发布的信息,有时候对web应用的更新可能会泄露敏感数据。

 

 

其他

此外,我们可以使用谷歌先进的搜索选项不直接访问来寻找目标系统的敏感信息。例如:

site: zonetransfer.me intext:password

 

我们还可以在最近发现漏洞的页面中查找目标域的存在。在这些网站上面可以查找到一些泄露的信息或成功的攻击:

  • openbugbounty.org(只有xss和csrf)可以利用谷歌语法site: openbugbounty.org intext:目标网站  查找相关漏洞

  • pastebin.com 匿名黑客会在上面发布攻击过程

  • zone-h.org  有些恶意黑客会来这里吹嘘他们的成就,主要使篡改网站

 

二.使用Recon-ng收集信息

Recon-ng是一种信息收集工具,它使用许多不同的来源来收集数据,例如:Google,Twitter和Shodan。

在本文中,我们将学习Recon-ng的基础知识,并使用它来收集关于我们的目标的公共信息。

 

准备

 

尽管Recon-ng已经在Kali Linux中安装,但它的一些模块需要API密钥用于查询在线服务。此外,拥有API密钥将允许您在某些服务中执行更高级的搜索或避免查询限制。可以通过在每个搜索引擎上完成注册来生成这些密钥。

 

 

怎么做…

让我们做一个基本的查询来说明Recon-ng的工作原理:

 

1.要从Kali Linux启动Recon-NG,请使用“应用程序”菜单(应用程序|01-信息收集|recon-ng)在终端中键入recon-ng命令:

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

 

 

 

2.我们将看到一个命令行界面。查看我们的模块,我们可以键入show modules命令。

3.假设我们要搜索域名的所有子域名和DNS服务器不响应区域传输。我们可以暴力破解子域名; 要做到这一点,我们首先加载brute_hosts模块:use recon/ domains-hosts/brute_hosts。

4.要了解使用任何模块时需要配置的选项,我们可以使用show options命令。

5.要为选项指定值,我们使用命令set:set source zonetransfer.me

6.一旦我们设置了所有选项,我们就会发出run命令来执行模块:

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

 

 

 

7.暴力猜解完成需要一些时间,它会显示很多信息。完成后,我们可以查询Recon-ng数据库以获取发现的主机(show hosts):

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

 

 

它是如何工作的…

Recon-ng是查询搜索引擎、众多社交工具和API的包装器媒体,通过互联网档案和数据库,以获取有关网站、网络信息、应用程序、服务器、主机、用户、电子邮件地址等。它的工作原理是整合不同功能的模块,例如Google、Twitter、LinkedIn或Shodan等,或者对DNS服务器执行查询。它还具有将结果导入数据库或生成各种格式报告的功能,例如HTML,MS Excel或CSV。

 

 

 

另请参阅…

还有另一个非常有用的信息收集和开源智能工具,默认包含在Kali Linux,是Maltego(https://www.paterva.com/web7/buy/maltego-clients/maltego-ce.php),许多渗透测试人员较为喜欢的一款工具。此工具提供图形用户界面显示所有内容元素(电子邮件地址,人员,域名,公司等)在图中,可视地显示元素之间的关系。 例如:代表一个人的节点将通过一条线连接到该人的电子邮件地址以及该电子邮件地址所属的域名。

 

 

 

 

 

三.使用Nmap进行扫描和识别服务

Nmap是世界上使用最多的端口扫描器,它可以用于识别活动主机、扫描TCP和UDP开放端口、检测防火墙、获取在远程主机上运行的服务版本,甚至使用脚本发现和利用漏洞。

在此小节中,我们将使用Nmap来识别在目标应用服务器上运行的所有服务及版本,为了方便学习,我们将在对Nmap的几次演示中进行此操作,也可以使用一条命令完成。

 

 

准备

我们需要让我们的靶机 vm_1 运行起来

 

 

如何工作…

本小节的所有任务都可以通过一个命令来完成,为了更好的说明它们的功能和结果,这里分别展示了它们:

 

1.  首先,我们想要知道服务器是否响应ping,或者主机是否是启动状态:

#nmap –sn 192.168.56.11

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

 

 

2.  现在,我们可以知道这个主机是在启动的状态,让我们看看它的哪些端口是打开的:

#nmap 192.168.56.11

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

 

 

3.  现在我们将告诉Nmap向服务器询问它正在运行的服务版本,并且据此来猜测操作系统:

# namp–sV –o 192.168.56.11

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

 

我们可以看到,我们的 vm_1 很可能是一个Linux操作系统(Nmap无法准确的确定它)。它使用Apache 2.2.14 web服务器、PHP 5.3p1、Jetty 6.1.25等等。

 

 

它是如何工作的…

Nmap是一个端口扫描器;这代表着它将数据包发送到指定IP地址上的一些TCP或UDP端口,并且检查是否有响应。如果有,则表示端口是开放的;即服务在该端口上运行。

在第一条命令中,对于 –sn 参数,我们指示Nmap只检查该服务器是否响应ICMP请求(或者是ping)。我们的服务器给出了响应,所以该主机是在存活状态的。

第二条命令是调用Nmap最简单的方法;它只指定目标IP,它所做的是ping服务器;如果它做出响应,Nmap会向一个包含1000个TCP端口的列表d送探测,以查看哪个端口以及如何执行,然后它会报告显示哪些端口是打开的结果。

第三条命令在第二条命令的基础上添加了以下两个参数:

 

  • -sV:请求找到每个开放端口banner-header或自我标识,也就是每个端口运行服务的版本

  • -o:告诉Nmap尝试使用从开放端口和版本信息的信息来猜测目标上运行的操作系统。

 

 

其他功能

使用Nmap时的其他有用参数如下所示:

 

  • -sT:默认情况下,当它作为root用户运行时,Nmap使用一种称为SYN扫描的扫描类型。使用这个参数,我们强制扫描器执行完全连接扫描,它速度较慢,并且会在服务器日志中留下一条记录,但不太可能被入侵检测系统检测到或被防火墙阻止。

  • -Pn:如果我们已经知道主机时存活的但是没有响应ping,我们可以使用这个参数告诉Nmap跳过ping测试并扫描所有指定的目标(假设它们已经启动)

  • -v:这是冗长模式。Nmap将展示更多关于它正在扫描中的信息。这个参数可以在同一个命令中多次使用,使用的越多,得到的反馈就越多(-vv或-v –v –v –v )

  • -pN1,N2,…N3:如果要测试特定端口或一些非标准端口,我们可能需要使用这个参数,其中N1到Nn时我们希望Nmap扫描的端口号。例如,要扫描21、80到90和137,参数奖是-p 21,80-90,137。另外,使用-p- Nmap将扫描0到65之间的所有端口和536端口

  • --script=script_nameNmap包含许多有用的脚本,用于漏洞检查,扫描或者识别,登录测试,命令执行,用户枚举等等。使用此参数告诉Nmap在目标的开放端口上运行脚本。您可能想了解以下Nmap使用的一些脚本:https://nmap.org/nsedoc/scripts/。

 

 

另请参阅

尽管Nmap是最流行的,但它并不是唯一可用的端口扫描器,根据不同的环境,它可能不是最好的选择。Kali Linux中还有其他的一些替代方案,例如:

  • Unicornscan

  • Hping3

  • Masscan

  • Amap

  • Metasploit’s scanning modules

 

四.识别Web应用防火墙

互联网应用程序防火墙是一种检查发送至网络服务器的程序包的设置或软件,它识别和阻止一些基于正则表达式或签名的恶意程序包。

如果一个未探测到的WAF阻止了我们的请求或禁止了我们的IP地址我们就会在渗透测试中遇到很多问题。当我们进行渗透测试时侦查阶段必须包括探测和识别WAF,入侵监测系统和入侵预防系统等,这是为了采取必要的措施,以防被这些保护装置阻止或禁止。

用这个方法我们就可以用不同的方法和Kai linux包含的工具在我们和目标之间去检测和识别一个互联网应用程序防火墙的存在。

 

怎么做…

有很多方法来检测应用程序是否受到Waf和IDs的保护;在攻击的时候被阻止和拉入黑名单是最糟糕的事情,所以我们会使用Nmap和wafw00f来确定我们的目标是否存在WAF。

 

1.Nmap有几个脚本可以来测试WAF中是否存在于所有检测到的HTTP端口.让我们来 尝试一下

# nmap -sT -sV -p 80,443,8080,8081 --script=http-waf-detect192.168.56.11

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

 

看起来没有WAF来保护这个服务器

 

现在,我们在有防火墙保护的服务器上尝试相同的命令。在这里,我们使用example.com来座椅虚构的名称;可以来尝试任何受保护的服务器。

# nmap -p 80,443 --script=http-waf-detect www.example.com

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

 

 

3.Nmap还有一个脚本可以帮助我们来更准确地识别正在使用的WAF。这个脚本是: http-waf-fingerprint:

# nmap -p 80,443 --script=http-waf-fingerprint www.example.com

 

Kali Linux中还有另一个工具,可以帮助我们来检测识别WAF的工具,就是wafw00f

假如www.example.com是一个受WAF保护的网站:

# wafw00f www.example.com

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)

 

 

 

它是怎么工作的…

WAF检测的工作原理是向服务器发送特定的请求,然后分析响应;例如,在HTTPWAF检测的情况下,它发送一些恶意的数据包,并且在寻找数据包被阻止,拒绝或者检测的指示符时比较响应.HTTPWAF指纹也会出现同样的情况,这个脚本也尝试解释这种响应,并且根据已知的IDSs和WAF,对其分类.同样也适用wafw00f。

 

原版连接:关注下面微信公众号,回复“资源”,即可获取原版pdf一份。

 

Kali Linux Web渗透测试手册(第二版) --- 信息收集(上)