首先,我们应该问,在 Web 应用程序安全的背景下,什么是内容?内容可以是很多东西,文件、视频、图片、备份、网站功能。当我们谈论内容发现时,我们并不是在谈论我们可以在网站上看到的显而易见的东西;这些东西并没有立即呈现给我们,而且并不总是供公众访问。

例如,此内容可以是供员工使用的页面或门户、网站的旧版本、备份文件、配置文件、管理面板等。我们将介绍在网站上发现内容的三种主要方式

  • 手动(Manually)
  • 自动(Automated)
  • OSINT(开源情报)

手动发现-探索网站

作为渗透测试人员,您在审查网站或 Web 应用程序时的职责是发现可能存在漏洞的功能并尝试利用它们来评估它们是否存在。这些功能通常是网站的一部分,需要与用户进行一些交互。

查找网站的交互部分就像发现登录表单以手动查看网站的 JavaScript 一样简单。一个很好的起点就是用您的浏览器浏览网站并记下各个页面/区域/功能,并为每个页面/区域/功能做一个总结。

查看页面源代码

页面源代码是每次我们发出请求时从 Web 服务器返回给我们的浏览器/客户端的人类可读代码。

返回的代码由 HTML(超文本标记语言)、CSS(层叠样式表)和 JavaScript 组成,它告诉我们的浏览器要显示什么内容,如何显示它并添加与 JavaScript 的交互元素。

出于我们的目的,查看页面源可以帮助我们发现有关 Web 应用程序的更多信息。

只需要右键->查看源代码(View source),或者快捷键(Ctrl + U)即可查看页面源代码、

查看页面源代码往往是我们的第一步,这十分的重要,可能存在<!-- 内容-->的内容,这是HTML代码的注释,有些时候,开发人员为了做标记,会将一些用户测试信息添加到页面注释:例如网站默认密码。
在源代码中需要注意的有:

  • 注释内容,可能存在敏感信息
  • a标签、img标签、script标签可以发现隐藏的文件或路径,常见于src、href、action属性
  • 引用JavaScript、CSS代码的地址
  • 可能存在框架版本信息,一般默认会有默认密码或者默认网站备份文件

手动发现-Robots.txt文件

robots.txt 文件是一个文件,它告诉搜索引擎它们允许和不允许在其搜索引擎结果中显示哪些页面,或者完全禁止特定搜索引擎抓取该网站。限制某些网站区域可能是常见的做法,因此它们不会显示在搜索引擎结果中。这些页面可能是管理门户或供网站客户使用的文件等区域。该文件为我们提供了网站上的大量位置列表,这些位置是所有者不希望我们作为渗透测试人员发现的。
例如:百度的robots.txt

手动发现-Sitemap.xml

与限制搜索引擎爬虫可以查看的内容的 robots.txt 文件不同,sitemap.xml 文件列出了网站所有者希望在搜索引擎上列出的每个文件。这些有时可能包含网站的区域,这些区域更难以导航,甚至列出当前网站不再使用但仍在幕后工作的一些旧网页。

手动发现-HTTP标头

当我们向 Web 服务器发出请求时,服务器会返回各种 HTTP 标头。这些标头有时可能包含有用的信息,例如网络服务器软件以及可能使用的编程/脚本语言。

我们可以使用浏览器自带的控制台中的网络项查看网站信息

也可以使用curl URL地址 -v查看请求标头

手动发现-网站框架

一旦你建立了网站的框架,无论是从上面的网站图标示例,还是通过在页面源中寻找线索,如评论、版权声明或致谢,你都可以找到该框架的网站。从那里,我们可以了解有关该软件和其他信息的更多信息,从而可能导致我们可以发现更多内容。

从网站框架中可以了解到很多网站的信息,现在常见的就是个人博客平台wordpress

手动发现-网站图标

favicon 是一个小图标,显示在浏览器的地址栏或选项卡中,用于标记网站。

有时,当框架用于构建网站时,作为安装一部分的网站图标会被遗留下来,如果网站开发人员没有将其替换为自定义图标,这可以让我们了解正在使用的框架

OWASP 托管一个通用框架图标数据库,您可以使用它来检查目标图标 https://wiki.owasp.org/index.php/OWASP_favicon_database。一旦我们了解了框架堆栈,我们就可以使用外部资源来发现更多关于它的信息

该网站中的ico图标都是使用md5值进行存储的,我们需要将ico图片转换为md5值进行匹配,可以使用下面这条命令:

curl ICO图标URL | md5sum

信息收集-内容发现-小白菜博客
复制ico MD5值查看是否匹配

OSINT-Google Hacking(谷歌黑客)

还有可用的外部资源可以帮助发现有关目标网站的信息;这些资源通常被称为 OSINT 或(开源情报),因为它们是收集信息的免费工具

Google hacking / Dorking 利用 Google 的高级搜索引擎功能,让您可以挑选自定义内容。例如,您可以使用site:过滤器从某个域名中挑选出结果 ,例如 (site: tryhackme.com ) 然后您可以将其与某些搜索词匹配,例如,单词 admin (site :tryhackme.com admin) 这只会返回来自 tryhackme.com 网站的结果,其内容中包含单词 admin。您也可以组合多个过滤器。以下是您可以使用的更多过滤器的示例:

筛选 例子 描述
site site: tryhackme.com 仅从指定的网站地址返回结果
inurl inurl: admin 返回在 URL 中具有指定单词的结果,例如这里是admin
filetype filetype: pdf 返回特定文件扩展名的结果
intitle intitle: admin 返回标题中包含指定单词的结果

谷歌黑客不仅限于这些,还有很多语法,请访问: https://en.wikipedia.org/wiki/Google_hacking查看详细。

OSINT-Wappalyzer

Wappalyzer https://www.wappalyzer.com/是一种在线工具和浏览器扩展,可帮助识别网站使用的技术,例如框架、内容管理系统 (CMS)、支付处理器等等,它甚至可以也可以找到版本号

大部分浏览器都可以安装,例如Google Chrome,直接在Chrome Store搜索Wappalyzer即可直接安装,使用如下图:

OSINT-回程机

Wayback Machine(回程机) https://archive.org/web/是一个可追溯到 90 年代后期的网站历史档案。你可以搜索一个域名,它会一直显示服务抓取网页和保存内容的时间。此服务可以帮助发现在当前网站上可能仍处于活动状态的旧页面

输入一个域名或者IP,他可以回到之前网站保存的快照的截图,了解更多网站的信息

OSINT-GitHub

要了解 GitHub,首先需要了解 Git。Git 是一个 版本控制系统 跟踪项目中文件的更改。在团队中工作更容易,因为您可以看到每个团队成员正在编辑的内容以及他们对文件所做的更改。当用户完成更改后,他们会提交一条消息,然后将它们推送回中央位置(存储库),以便其他用户将这些更改拉到他们的本地机器上。GitHub 是 Git 在 Internet 上的托管版本。存储库可以设置为公共或私有,并具有各种访问控制。您可以使用 GitHub 的搜索功能来查找公司名称或网站名称,以尝试找到属于您的目标的存储库。一旦被发现,您可能可以访问您尚未找到的源代码、密码或其他内容。

OSINT - S3 Buckets

S3 Buckets 是亚马逊 AWS 提供的一种存储服务,允许人们将文件甚至静态网站内容保存在可通过 HTTP 和 HTTPS 访问的云中。文件的所有者可以设置访问权限,使文件公开、私有甚至可写。有时,这些访问权限设置不正确,无意中允许访问不应向公众开放的文件。S3 存储桶的格式为 http(s)????/ {name}.s3.amazonaws.com 其中 {name} 由所有者决定,例如 tryhackme-assets.s3.amazonaws.com. 可以通过多种方式发现 S3 Buckets,例如在网站的页面源、GitHub 存储库中查找 URL,甚至自动化该过程。一种常见的自动化方法是使用公司名称后跟常用术语,例如 {name} -assets、 {name} -www、 {name} -public、 {name} -private 等

自动发现

自动发现是使用工具而不是手动发现内容的过程。这个过程是自动化的,因为它通常包含对 Web 服务器的数百、数千甚至数百万个请求。这些请求检查网站上是否存在文件或目录,使我们能够访问我们以前不知道存在的资源。这个过程是通过使用一个叫做 wordlists 的资源来实现的

什么是Wordlists?

Wordlists只是包含一长串常用单词的文本文件;它们可以涵盖许多不同的用例。例如,密码词列表将包括最常用的密码,而我们正在寻找我们案例中的内容,因此我们需要一个包含最常用目录和文件名的列表,Daniel Miessler 策划了一个常用的各种常用的字典表https://github.com/danielmiessler/SecLists

自动化工具

有很多自动化工具,例如现在常用的:御剑、dirb、dirbuster、dirsearch
这里我们使用三个自动化工具ffuf、dirb 和 gobuster
ffuf使用方法

ffuf -w 字典 -u http://目标IP:端口/FUFF
# FUFF代表字典填充的地址

dirb

dirb http://目标IP:端口/ 字典

gobuster

gobuster dir --url http://目标IP:端口/ -w 字典

简单了解即可