Kali Linux Web 渗透测试第二版 第二章 信息侦察(翻译)

848 阅读9分钟

Kali Linux Web 渗透测试第二版(2018)原创翻译

原版书名:《Kali Linux Web Penetration Testing Cookbook Second Edition》

第二章 信息侦察

2.1 被动信息收集

域名信息收集

目标:zonetransfer.me

公共DNS区域传送威胁

1、使用whois获取注册信息:

2、使用dig 查询注册信息

3、尝试利用域传送攻击获取DNS服务器解析的所有主机名

dig axfr @nsztm1.digi.ninja zonetransfer.me

4、使用theharvester获取目标网站的邮箱、主机名、IP地址信息

theharvester -b all -d zonetransfer.me

5、使用Netcraft工具进行非直接查询网站程序版本信息

toolbar.netcraft.com/site_report

6、使用Wayback Machine查询网站历史状态

archive.org/web/web.php

7、使用Google高级搜索选项检索目标信息

语法:site:zonetransfer.me

8、其他

openbugbounty.org:跨站点脚本和跨站点请求伪造漏洞披露网站

pastebin.com:匿名发布信息,适合传输敏感信息

zone-h.org:被黑网站信息

2.2 使用Recon-ng收集信息

Recon-ng是一种使用多来源的信息收集工具,这些来源包括Google,Twitter和Shodan等,获取的信息包括网站Web程序信息,服务器信息,主机信息,用户信息,电子邮件信息等,而且可以生成报告

Kali默认安装有Recon-ng,在线查询需要API

1、两种方式启动Recon-ng

1)应用程序里面--信息收集-找到 Recon-ng

2)命令行启动

# recon-ng 

启动之后可以看到一个命令交互界面,通过show modules命令可以查询所有模块

3、使用子域名爆破模块爆破子域信息

1)加载brute_hosts模块,使用load recon/domains-hosts/brute_hosts 载入模块

2)使用show options可以查看需要配置的选项

3)使用set 设置选项

4)设置完之后,输入run执行

5)暴力破解需要一段时间,完成之后,可以使用show hosts获取到的子域信息

4、其他工具:Maltego:一款非常有用的信息收集和公开来源情报(OSINT)工具

2.3 使用Nmap扫描和识别服务

Nmap可能是世界上使用最多的端口扫描工具,它可以用来识别主机信息,扫描TCPUDP端口信息,检测防火墙,检测服务信息,甚至可以使用脚本来查找和利用漏洞

1、ping 主机存活扫描

nmap -sn target_ip/domain

2、端口扫描

nmap target

3、服务版本信息和操作系统类型探测:

nmap -sV -O target

-sV :探测服务标识和版本信息

-O :探测操作系统版本信息

4、其他扫描器

unicornscan
hping3
masscan
amap
Metasploit 扫描模块

2.4 检测和标识WAF

目标机器:OWASP Broken Web Apps(BWA)靶机:OWASP Broken Web Applications ProjectOWASP推出的一款基于虚拟机的渗透测试演练工具,提供了比较多的安全测试漏洞。

1、使用Nmap检测脚本检测目标主机WAF

    nmap -sT -sV -p 80,443,8080,8081 --script=http-waf-detect 192.168.1.155

可以看出这台服务器好像没有WAF

2、检测存在保护的服务器可以这样:

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

3、Nmap中还有另一个脚本可以更精准地帮助我们识别WAF,这个脚本就是:http-waf-fingerprint

使用方法:

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

4、使用wafwf00f检测和识别WAF

wafw00f www.example.com

5、原理:WAF检测通过向服务器发送特定请求(通常为恶意数据请求)然后对服务器响应进行分析

2.5 识别HTTPS加密参数

HTTPS并非绝对安全,需要正确配置HTTPS才能提供有效的保护,避免MITM和密码分析攻击。

SSL 协议的实现和设计中发现了许多漏洞,其后续的 TLS 在某些配置下也被发现是易受攻击的。

我们可以从客户端角度通过Nmap,SSLScanTestSSL之类的工具分析服务器的安全通信配置。

1、安装TestSSL

apt install testssl.sh

2、使用Nmap探测HTTPS站点支持的协议和密码,使用脚本ssl-enum-ciphers

nmap -sT -p 443 --script ssl-enum-ciphers 192.168.1.155

3、使用SSLScan评估SSL/TLS

用法:

sslscan target

4、TestSSL可以支持比NmapSSLScan更详细的参数,基本用法就是直接加目标,可以支持导出为HTML,JSON或者CSV

5、原理:Nmap,SSLScanTestSSL通过尝试不同的加密方法和客户端配置来链接HTTPS服务器进行测试

6、其他

sslyze --regular www.example.com
openssl	s_client-connect www2.example.com:443

2.6 使用浏览器开发者工具分析和更改页面信息

这里以Firefox 浏览器作为工具,当然使用Chrome也可以

Firebug 是一个浏览器插件,它允许我们分析网页的内部结构,例如表元素、CSS 和框架。它还能够向我们展示 DOM 对象、错误代码以及浏览器和服务器之间的通信

1、打开浏览器开发者工具

在浏览器中访问目标网站,在相应的地方右键--选择“检查元素”,即可打开

也可以使用F12Ctrl + Shift + C启动浏览器开发者工具

2、可以在某个属性上双击,进行修改,添加,删除

3、比如我们可以把MAX_FILE_SIZE的限制从 30000 改为 60000

4、原理:浏览器在收到服务器返回的响应后,会把所有的元素修改为浏览器能理解的方式,然后渲染显示给用户,如果页面重新加载,则从服务器接收新的请求再次渲染显示给用户。开发者工具允许修改显示在浏览器中几乎所有的页面信息

5、其他更多操作

Debugger:调试器/可以对页面进行断点调试

Style Editor:样式编辑器/编辑CSS样式

Performance:性能/页面加载耗时和耗费资源统计

Memory:内存/拍摄内存快照,如果想查看内存中的敏感信息,这非常有用

Network:网络 / 观察请求,响应,请求/响应类型,大小,时间等

Storage:存储 / 查看 Cookie,Sessions,缓存等,并且可删除和更改

还可以在开发者工具设置中启用的其他工具,如:

DOM
ShaderEditor:着色器编辑器
Canvas:探查和调试Canvas工具
Web	Audio:网络音频
Scratchpad:代码草稿纸

2.7 获取和修改Cookie

CookieWeb服务器发送给客户端(浏览器)的一小段信息,用于在本地存储与用户相关的一些特定信息。比如会话标识等。

通过浏览器开发者工具观察Cookie是如何存储的,并学会修改Cookie

如果开发者工具栏中没有存储选项卡,请在设置中打开它

1、打开目标网站,点击Storage选项,选择 Cookies

2、可以双击其中某个值,进行更改

3、我们还可以使用CookiesManager插件对Cookie进行查看修改

4、在实际渗透测试的时候,我们应该注意Cookie中某些特性,以验证它们是否真的安全

Http Only:如果Cookie设置了这个标志,那么它不能通过脚本代码访问,意味着只能从服务端更改cookie值,虽然不能用页面内的脚本更改Cookie,但我们仍然可以通过浏览器工具或插件来更改。

Secure:使用HTTPS传输Cookie

ExpiresCookie过期设置,如果过期时间设置在未来的某个时间,则表示cookie存储在本地文件中,甚至在浏览器关闭后仍保留,这样攻击者可以直接从文件中获取Cookie

2.8 利用robots.txt

进行更进一步的调查,我们需要找到网站中没有呈现给普通用户的网站路径,比如CMS系统的管理页面。找到这些,有助于我们后续的渗透测试。

这时候,我们可以通过查看站点的robots.txt文件,发现这些隐藏的路径

什么是robots文件:

robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。robots.txt应放置于网站的根目录下。如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt,或者使用robots元数据(Metadata,又称元数据)。

robots.txt协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。注意robots.txt是用字符串比较来确定是否获取URL,所以目录末尾有与没有斜杠/表示的是不同的URLrobots.txt允许使用类似Disallow: *.gif这样的通配符。

其他的影响搜索引擎的行为的方法包括使用robots元数据:

<meta name="robots" content="noindex,nofollow" />

这个协议也不是一个规范,而只是约定俗成的,有些搜索引擎会遵守这一规范,有些则不然。通常搜索引擎会识别这个元数据,不索引这个页面,以及这个页面的链出页面。

via Wikipedia

1、打开目标站点

vicnum 是一个有漏洞的Web程序

2、查看robots.txt文件

URL后面加入/robots.txt

我们发现有两个路径是不允许搜索引擎访问的,但是我们可以访问它

3、访问cgi-bin路径

我们发现了很多pl脚本文件

再访问另外一个路径看看

点进去可以看到一个清单

jotto 是一个猜字游戏,答案可能就在这个清单里面,我们可以拿去尝试

可以测试一下,确实答案就在这个清单里面

第二章完....

说明

本文由蚁景网安实验室编译,转载请注明来源。

关于蚁景网安实验室

蚁景网安实验室(www.yijinglab.com)-国内领先的实操型网络安全在线教育平台

真实环境,在线实操学网络安全 ; 实验内容涵盖:系统安全,软件安全,网络安全,Web安全,移动安全,CTF,取证分析,渗透测试,网安意识教育等。