Web 应用渗透测试 00 - 信息收集

背景

这个系列写 Web 应用渗透测试相关的内容。此篇从信息收集开始,看一下 Web 应用端有哪些方面的信息值得渗透测试者去收集,能对后续的行动产生积极的影响。

Web 应用渗透测试 - 信息收集

security.txt

这个文件包含了网站的漏洞披露的联系方式。如果测试人员发现了漏洞,就可以通过查询这个文件,找到相应的联系人,提升应用的漏洞发现和修补流程效率。详细内容可以在securitytxt.org查询。这个网站也可以生成自定义的 security.txt 文件。

security.txt 的关键点在于,网站的维护人员应提供公司的或者个人的加密信息(PGP key),并用这个 Key 对该文件做电子签注。那么,渗透测试人员在汇报漏洞的时候,就能确定这个文件不是黑客恶意写入的。

操作

根据以上内容,就可以在有 .well-known 文件夹写权限,并且 security.txt 没有 PGP 保护的情况下,植入恶意 security.txt 文件,将联系方向指向自己,来试图获取该 Web 应用的漏洞信息。


robots.txt

robots.txt 是一个任何人都可以访问(如果存在的话)的用来允许/阻止 Google 等搜索引擎或爬虫爬取网站特定网页内容的文件。该文件不该被用来隐藏敏感信息。如某些网站维护人员想禁止搜索引擎或者爬虫访问 /admin 这样的管理员端口,而在 robots.txt 中添加了如下内容:

User-agent: *
Disallow: /admin
...

那么任何人都会知道,这个网站有一个 /admin 端口。特定情况下,这将给网站带来一定的威胁。

操作

访问 https://example.com/robots.txt 来获取文件内容。

在这里插入图片描述


404 Page

Web 应用的错误处理很关键。404 错误是其中一类。默认的 404 Not Found 网页可以告诉渗透测试者应用的技术栈,例如,使用的框架,操作系统,或者代理的版本等。所以自定义 404 页面对于网站安全来说同样重要。

操作

访问任意不存在的网站节点来查看 404 网页,获取相应的技术栈信息。


Directory Listing/ Directory Bruteforcing

网页源代码中会出现静态文件目录中文件的引用。

在这里插入图片描述

如果服务器没有禁用 Directory Listing (关于禁用 Direcotry Listing),这些目录就会列出所有包含的文件。如果有敏感信息,就会造成泄露。

操作

查看源码,或者使用工具爆破应用目录,逐一查看。

wfuzz -c -u https://example.com/FUZZ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt --hc 404,301
ffuf -u https://example.com/FUZZ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt

vhost / vhost Over TLS

当访问一个网站的时候,请求中的 Host 头默认会被设置成 URL 部分。

在这里插入图片描述

在这里插入图片描述

服务器会根据 Host 头来访问相应的资源。

如果把 Host 头去掉,访问将会报 400 的错。

在这里插入图片描述

在这里插入图片描述

操作

vhostvhost over TLS 信息的收集可以通过以下两种方式来进行。

  • 直接访问 IP 地址
  • 使用任意非默认的 Host 头
curl 51.158.147.132
curl -H "Host: woohoo" http://hackycorp.com
curl -H "Host: woohoo" https://hackycorp.com

TLS Alternate Name

TLS/SSL 证书有 Subject Alternate Name(s) (SAN) 属性,可以让用户给其 TLS 证书指定多个域名。可以通过浏览器或者 openssl 来获取 TLS 证书中 SAN 的信息。

操作

浏览器操作如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

可以看到 cn.bing.com 域名证书的 SAN,这些也都是目标的相关域名,其中包含了很多子域。

openssl 方式的操作如下:

 openssl s_client -connect bing.com:443 < /dev/null 2> /dev/null | openssl x509 -noout -text | grep DNS

在这里插入图片描述


Tech Stack

收集应用的技术栈信息有可能暴露已知的漏洞。我们应该关注应用所使用的框架,技术,以及相关的版本号。很多时候,应用开发者可能在不经意间,在 HTTP 响应中泄露某些敏感信息。

操作

通过 Wappalyzer Firefox 浏览器插件来获取网站的技术栈信息。

在这里插入图片描述

通过 whatweb 工具来获取技术栈信息。

whatweb -a 3 domain

在这里插入图片描述

另外,还可以通过 BurpSuite 抓包,分析应用的响应头。

Visual Reconnaissance

有时候,如果收集到了很多的域名,我们相对这些域名所指向的网站有一个视觉上的大致认识,就可以使用 Aquatone 这个工具。这个工具会访问每一个域名,然后对主页进行截图,保存为 HTML 格式,方便我们在浏览器里查看结果。

Aquatone 的安装流程参考官方网站

wget https://github.com/michenriksen/aquatone/releases/download/v1.7.0/aquatone_linux_amd64_1.7.0.zip

unzip aquatone_linux_amd64_1.7.0.zip

./aquatone --help

操作

将收集到的域名保存为任意文件(例如 domain.txt)。然后:

cat domain.txt | aquatone -http-timeout 5000

注意在使用 Aquatone 的时候,域名必须带有协议(http 或者 https)

在这里插入图片描述

执行完毕,该工具会输出一个 HTML 文件。

在这里插入图片描述

在浏览器中打开。

在这里插入图片描述

在这里插入图片描述

DNS TXT Record

DNS TXT 是 DNS 中能包含最多信息的记录。所以我们需要查看该记录是否包含敏感信息。

操作

dig -t txt bing.com +short

在这里插入图片描述

使用 +short 可以简化输出,只输出 TXT 记录中的实际内容。

如果没有添加该选项,输出如下。

在这里插入图片描述

DNS Zone Transfer

DNS 服务是非常重要的,所以在大型网络中,会有多台 DNS 服务器。如果其中的域名需要经常变动,那么手动修改每一台服务器上的记录就会非常低效。所以 Zone Transfer(AXFR) 就诞生了。子 DNS 服务器可以要求主 DNS 服务器复制最新的 DNS 记录并传输到当前服务器做更新。

问题在于,Zone Transfer 是没有鉴权的,如果主 DNS 服务器没有正确配置,任何人都可以要求主 DNS 服务器进行 Zone Transfer。这样一来,公司内部的子域名或资产就泄露了。

关于 DNS Zone Transfer 的详细信息可以看这篇文章

操作

以下方式,任选其一。

dig axfr domain.com

host -l domain.com ns1.domain.com

dnsenum domain.com

dnsrecon -d domain.com -a

如果知道内部域的名称,就可以指定 DNS 服务器做内部域的 Zone Transfer。

# 找到 DNS 服务器
dig ns domain.com

# 假设内部域的名字叫 int
dig axfr int @ns1.domain.com

Checklist

  • security.txt
  • robots.txt
  • 404 Page
  • Directory Listing / Directory Bruteforcing
  • vhost / vhost Over TLS
  • TLS Alternate Name
  • Tech Stack
  • Visual Reconnaissance
  • DNS TXT Record
  • DNS Zone Transfer

参考链接

  • https://en.wikipedia.org/wiki/Robots.txt
  • https://securitytxt.org/
  • https://en.wikipedia.org/wiki/Security.txt
  • https://www.vultr.com/docs/how-to-disable-directory-browsing-on-apache/
  • https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04
  • https://httpd.apache.org/docs/2.4/vhosts/examples.html
  • https://serverfault.com/questions/853546/better-understanding-tls-ssl-alternative-names
  • https://support.dnsimple.com/articles/what-is-ssl-san/
  • https://www.acunetix.com/blog/articles/dns-zone-transfers-axfr/
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值