漏洞挖掘 | 发现隐藏子域的虚拟主机

news2024/9/27 22:13:45

高效虚拟主机发现的工具和技术

在进行外部渗透测试或漏洞赏金狩猎时,我们从各个角度探索目标系统,收集尽可能多的信息来识别潜在的攻击向量。这涉及识别所有可用的资产、域和子域。

在这个过程中,我们关注的事情之一就是枚举虚拟主机。通过这样做,我们可以发现可能配置错误或容易受到攻击的隐藏或未记录边缘的资产。例如,我们可能会发现无需身份验证即可访问虚拟主机,这可能会导致敏感数据受到未经授权的访问。

在本文中,我们将讨论枚举虚拟主机并从中收集信息的不同方法。我们将使用HTB Academy 练习来演示枚举步骤。

虚拟主机概述

虚拟主机是一项功能,允许单个 Web 服务器托管多个网站,并使它们看起来就像托管在单独的服务器上一样。这样做通常是为了减少资源开销和运行成本。

虚拟主机类型

虚拟主机有两种类型:基于 IP 的和基于名称的。

- 基于IP的托管

这种类型的托管涉及配置 Web 服务器以在单个服务器上托管多个网站。每个托管站点都与一个唯一的 IP 地址关联,该地址可以是专用的,也可以是共享的,具体取决于托管配置。

当用户尝试访问网站时,服务器会侦听请求,将传入的主机名解析为其相应的 IP 地址,然后根据该 IP 地址将请求路由到适当的网站。

一旦服务器根据该 IP 地址识别出目标网站,它就会向用户提供与该网站相关的内容。

- 基于Host的托管

这种类型的托管涉及配置 Web 服务器以使用不同的域名在单个 IP 地址上托管多个网站。每个托管网站通常与唯一的主机名关联,但多个主机名可以与单个网站相关。

当用户请求访问某个网站时,服务器会检查 HTTP 请求中的“ Host ”标头,以确定用户试图访问哪个网站。根据主机标头中提供的主机名,服务器识别特定网站并向用户提供与该网站关联的内容。

虚拟主机枚举

Ffuf

ffuf 是一个用 Go 编写的工具,可以通过运行sudo apt-get install ffuf来安装在 Kali Linux 上,也可以从 GitHub :https://github.com/ffuf/ffuf下载。这个工具允许我们定制我们的模糊测试方法。

要开始搜索虚拟主机,我们需要使用-u标志传递目标的 IP 地址,并使用-H标志传递相关域名,它引用主机标头。

然后,将单词FUZZ放在域的开头以指示模糊测试位置。

我们可以使用不同的单词列表来标识带有-w标志的虚拟主机。一种流行的单词列表是 Seclists 单词列表中的name list:https://github.com/danielmiessler/SecLists/blob/master/Discovery/DNS/namelist.txt,而另一种是 Assetnotes 中的Kiterunner:https://wordlists.assetnote.io/单词列表。

ffuf -w namelist.txt -u http://10.129.184.109 -H "HOST: FUZZ.inlanefreight.htb"

模糊测试可以产生大量结果,有时很难识别其有效或无效。过滤结果可以节省您筛选输出的时间。您可以使用-fs标志以逗号分隔它们来过滤一个响应大小或一系列大小 - 例如-fs 109, 208,等。

ffuf -w namelist.txt -u http://10.129.184.109 -H "HOST: FUZZ.inlanefreight.htb" -fs 10918

图片

模糊测试完成后,我们将输出保存到文件中。然后,我们可以使用“ grep ”在结果中搜索文本中包含单词“ FUZZ ”的行。下面是使用 grep 查找具有已识别子域的行的示例。

cat vhosts | grep FUZZFUZZ:apFUZZ:appFUZZ:citrix

然后,我们可以使用awk通过管道传输 grep 输出,以使用 print 命令仅提取已识别的子域,后跟美元符号和列号。整个命令可以写成一行。

cat vhosts | grep FUZZ | awk '{print $3}'

使用简短的 bash 脚本,我们将原始域名附加到已识别的子域中,如图所示。

for i in $(cat vhost1); do echo $i.inlanefreight.htb ; done > vhost1

图片

Gobuster

枚举虚拟主机的另一种方法是使用 Gobuster 工具使用 vhost 选项。该工具可以通过运行sudo apt-get install gobuster在 Kali 中安装,也可以从 GitHub :https://github.com/OJ/gobuster 下载。

要开始枚举过程,我们首先需要使用-u标志提供 IP 地址,并使用-w标志指定一个单词列表。之后,我们定义域名和模糊测试开始的位置。

在 Gobuster 中,我们在称为模式文件的文本文件中定义此信息,该文件通过-p标志传递。您可以在下面的图中看到模式文件的示例。

{GOBUSTER}.inlanefreight.htb

图片

为了过滤输出,我们使用--exclude-length标志来筛选响应大小。多个响应大小可以用逗号分隔。

gobuster vhost -u http://10.129.118.153 -w namelist.txt -p pattern --exclude-length 301 -t 10

图片

Curl

我们可以使用 Curl 和一些 bash 脚本实现同样的效果。下面的脚本读取

名称列表

文件的内容(用作我们的单词列表),并为从文件中读取的每个子域打印消息“Found Subdomain”。

cat namelist.txt | while read vhost; do echo "\n========\nFound Subdomain: ${vhost}\n=========";

然后,curl 命令向指定的 IP 地址 (http://10.129.141.252) 发出 HTTP HEAD 请求,并传递 Host 标头中单词列表中的子域。

输出通过管道传输到 grep 以提取响应的Content-length并将其保存在文件中。

curl -s -I http://10.129.141.252 -H "HOST: ${vhost}.inlanefreight.htb" | grep "Content-Length: "; done > output

图片

为了搜索输出,我们再次使用 grep 命令并过滤包含文本“Content-Length:”的行。然后,我们使用uniq命令删除文本文件中的任何重复行,并使用-c标志来计算每个唯一行出现的次数。

 

cat output | grep "Content-Length:" | uniq -c

图片

如果我们想从内容中提取子域,我们可以使用-B标志在匹配之前显示几行。在此命令中,我们使用 4 行来检索子域名。

cat output | grep -B 4 "Content-Length: 103"

图片

后枚举

识别虚拟主机后,我们附加 HTTP 或 HTTPS 以生成 URL 列表。我们可以使用单行 bash 脚本来做到这一点。

for i in $(cat vhost2); do echo "https://"$i; done > vhosts3

图片

然后可以将该列表与 hakcheckurl 或 Eyewitness 等其他工具一起使用来检索 HTTP 响应代码,以检查可用的网页并捕获屏幕截图。

Hakcheckurl

hakcheckurl 是 hakluke 用 Go 编写的工具,可在 GitHub:https://github.com/hakluke/hakcheckurl上获取该工具获取 URL 列表并返回其相应的 HTTP 响应代码。

要运行该工具,必须安装 Go。按照其官方网站上的步骤在 Linux 环境上安装它:https://go.dev/doc/install*](https://go.dev/doc/install。

安装后,克隆 hakcheckurl 存储库,使用go build构建该工具,并将其重命名为 hakcheckurl。

git clone https://github.com/hakluke/hakcheckurl.git
go build ./main.go
# renmae the tool to hakcheckurl instead of mainmv main hakcheckurl

图片

接下来,我们使用 hakcheckurl 工具确定每个 URL 的 HTTP 响应代码。在下面的结果中,我们注意到使用 HTTPS 协议的 URL 无法访问,而使用 HTTP 协议的 URL 返回了 200 个响应代码。这表明使用 HTTP 的网页已启动并正在运行。

cat vhosts | ./hakcheckurl

图片

Eyewitness

一旦我们确定了要检查的网页,我们就可以使用 Eyewitness 收集有关目标网站相关底层基础设施和技术的更多信息。

Eyewitness 是 RedSiege 创建的一个工具,可以捕获屏幕截图、检索标头信息并识别默认凭据(如果有)。我们可以在 Kali 上安装它 sudo apt-get install eyewitness 或从 GitHub 下载:https://github.com/RedSiege/EyeWitness。

要运行 Eyewitness,我们需要使用-f标志传递 URL 列表;然后,我们可以使用user-agent agent 标志为 HTTP 请求设置自定义 User-Agent 字符串。这对于模拟来自不同浏览器或客户端应用程序的请求非常有用。

我们还可以使用--add-http-ports--add-https-ports标志指定其他端口来检查 http 和 https 协议。这指示 Eyewitness 连接到这些端口并捕获屏幕截图(如果适用)。

eyewitness -f vhost2 --user-agent "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36" --add-http-ports 8080,8000,8088 --add-https-ports 8443,4433,4343

图片

运行后,系统会提示我们选择是否打开已创建的报表。如果您选择“Y”,默认 Web 浏览器将打开该报告。如果您选择“N”,报告将保存到您的本地设备。

图片

今天的文章就到此结束了。在整篇文章中,我们发现并探索了各种用于枚举虚拟主机的工具。我们还讨论了如何使用这些工具的结果来扩大攻击面并获得对目标基础设施的宝贵见解。感谢您花时间阅读这篇文章。

免费获取网络安全优质学习资料与干货教程

申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2171230.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文速学-知识图谱从零开始构建实战:知识图谱的基本概念

前言 目前设计到很多企业专业领域的知识库构建基本都没有很好的思路对现有的领域知识作一个很好的思路拆分理解,想要落地私域多模态大模型的应用我想还是绕不过想现有的知识库转换为知识图谱,知识图谱不论是对业务还说还是对各个员工来说都是对业务清晰…

从响应到预见:前瞻性客户服务策略的实践与探索

在快速变化的商业环境中,客户服务已不再是简单的需求响应与问题解决,它正逐步演变为企业竞争力的核心要素之一。传统的“响应式”服务模式虽能满足基本的客户需求,但在追求极致客户体验和构建长期忠诚度的今天,显然已显不足。因此…

【巅峰算力,静谧之作】4卡4090GPU深度学习“静音”服务器

各位同仁,随着人工智能浪潮的汹涌澎湃,我们正步入一个前所未有的创新纪元。在这个充满挑战与机遇的时代,我愈发频繁地在工作场景中邂逅那些致力于深度学习探索的智者们。他们,对计算力的渴望如同对知识的追求一般,永无…

HTX DAO重磅亮相Crypto Summit 2024:强势布局CIS地区,推动全球化扩张

9月25日-26日,HTX DAO独家赞助Crypto Summit 2024大会注册处,并以商业伙伴身份亮相。此举为HTX DAO展示其独特的去中心化治理模型提供了机会,将进一步扩大HTX DAO及HTX在CIS地区的市场份额和影响力,吸引更多的加密社区成员、开发者…

实现org.springframework.beans.factory.InitializingBean 接口--初始化bean

1、案例 import com.dzwl.easy.report.core.service.IUserDescService; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;Component public c…

flink:java集成flink实现流数据处理(一)

文章目录 0. 引言1. flink安装2. 流数据处理程序依赖包简介流处理4个部分 3. 程序调用4. 总结 0. 引言 Apache Flink作为一款高性能的流处理框架,已成为企业级流数据处理的优选方案。本文将带领读者深入了解如何利用Java语言集成Flink,实现高效、可靠的…

Tomcat CVE-2017-12615 靶场攻略

漏洞描述 当 Tomcat运⾏在Windows操作系统时,且启⽤了HTTP PUT请求⽅法(例如,将 readonly初始化参数由默认值设置为false),攻击者将有可能可通过精⼼构造的攻击请求数据包向服务器上传包含任意代 的 JSP ⽂件&#xf…

Kubernetes 资源详解

1. Namespace Namespace 是 kubernetes 系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 默认情况下,kubernetes集群中的所有的Pod都是可以相互访问的。但是在实际中,可能不想让两个Pod之间进行…

鸡汤,你在生活中有哪些观人术和识人技巧?

看有没有边界感吧,npd一般没有边界感。还有就是三角测量 吧,可能就是把你和其他人对比看你对他好不好了。还有就是看他有没有情感吧,npd情感这方面可以说一无所有。我是npd不过npd也就那样吧,不过别人怎么看我并不重要&#xff0…

AlphaFold3 | 详解 AlphaFold3 的模型结构及其在不同类型的预测实验中的表现

Jumper 本文将介绍 24 年 5 月发布的 Alaphafold3,其以“使用 AlphaFold 3 进行生物分子相互作用的精确结构预测”为标题发表在《nature》上,通讯作者为 Jumper。 Jumper 具有物理、化学、生物和计算方面的丰富背景。Jumper 本科学的是物理和数学&#…

excel数据常用函数学习记录

1、VLOOKUP查询函数,匹配数据返回 vlookup(查找值,查找范围,要查找的值在第几列,0表示精确查找) enter键返回 例如:在E列中返回,A列的值与D列一致的对应的B值。只会返回查找到的第一个 如果需要把查找到的匹配的数据都返回到单元格中&…

Power Automate 设置流Owner不生效的bug

在查找某个功能没生效时,定位到是一个Power automate的流停了,查看原因是因为创建流的owner被disable了 但是当把流的owner更新为可用的用户时,流依旧没被触发,触发的条件很简单,某个表的记录创建时,因为是…

白嫖10个免费视频剪辑素材网站,新手必备。

视频剪辑不知道去哪里找素材,那就看看这10个网站吧,免费下载,赶紧收藏! 视频素材 1、菜鸟图库 视频素材下载_mp4视频大全 - 菜鸟图库 菜鸟图库网素材非常丰富,网站主要还是以设计类素材为主,高清视频素材…

51单片机应用开发(进阶)---数码管显示按键“加”“减”计数

实现目标 1、巩固按键操作 2、巩固数码管显示操作 一、内容描述 功能描述:1、开机显示10,每按一次K1 ,数码管计数值加1,当加到20,,再按K1,数值一直停留在20;2、每按一次K2,数码管计…

Pencils Protocol上线 Vaults 产品,为 $DAPP 深入赋能

Pencils Protocol 是 Scroll 生态一站式综合收益平台,该平台以 DeFi 功能作为抓手,基于 Farming、Vaults、Auction 等功能不断向 LRT、LaunchPad、AI、FHE、RWA 等领域深入的拓展。 近期 Pencils Protocol 生态不断迎来重磅进展,一个是 $DAPP…

基于二分查找的动态规划 leetcode 300.最长递增子序列

如题: https://leetcode.cn/problems/longest-increasing-subsequence/description/ 其实常规动态规划的解法就没什么好说的了,有意思的是官方放出了一个二分查找的动态规化解法,时间复杂度能降到O(nlog(n)),但是为什么这样能解&…

PPT 快捷键使用、技巧

前言: 本文操作是以office 2021为基础的,仅供参考;不同版本office 的 ppt 快捷键 以及对应功能会有差异,需要实践出真知。 shift 移动 水平/垂直 移动 ; shift 放大/缩小 等比例放大 缩小 ; 正圆 正…

Python编程:01-基本数据类型-数值字符串,列表与元组,字典,集合set

python的数据类型有如下: 1、数字 数字类型是python中常用的类型,她是不可变的,创建一个数字很简单可以用一个变量来接收它 num12 在这里插入代码片 #创建变量num1 num29 #创建变量num2数字的类型分为如下几类: 整型&#x…

再谈QT的界面开发 - QT的社区版本的获取 - 2024-09

前言: QT的跨平台特性,赋予了QT的生命。2024年,因为项目的原因,重新开启了一个基于QT的跨平台项目。 QT有付费的版本和社区的版本。 1 获取社区的版本: 1.1 社区的版本的软件授权说明: Qt - Obligation…

Spring Boot 2.x基础教程:实现文件上传

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 前言 文件上传的功能实现是我们做Web应用时候最为常见的应用场景,比如:实现头像的上传,Excel文件数据的导入等功能,都需要我们先实现文件的上传,然…