• DNS域名解析协议与弱口令登录


    介绍

    网络知识对于即将成为网络安全工程师的我们整体准备情况起着重要作用。如果我们有足够的网络知识,则Active Directory,Kerberos身份验证,服务器消息块,超文本传输协议,安全外壳等功能都可以分解为(几乎)最简单的形式。无论网络安全多么广泛,我们都将只探索整个网络主题的一部分,特别是HTTP,VHosts和DNS。

    在网络之旅开始时,我们可能会发现自己只能在宏观级别上了解主机和服务器之间的连接。数据包只是从我们的一端传输到服务器,然后返回响应。让我们从一个 Web 请求示例开始:通过 Web 浏览器访问网站的简单操作。

    我们将看到,我们对当前示例的分析越多,在当前方案之上添加的其他技术就越多,从而创建一个整体的互联网在主机之间通信所依赖的框架的复杂视图。

    举例

    从 nmap 扫描开始

    nmap -sC -sV 10.129.184.190
    
    • 1

    在这里插入图片描述

    这给我们带来了一个奇怪的结果,端口 80 打开并运行 nginx 1.14.2。但是,从下面的输出中,我们注意到 http-title 返回不能够重定向到 http://ignition.htb。暂时记住此 URL。

    尝试通过浏览器窗口访问网页时,我们会看到以下内容,检查 ignition.htb 中是否有拼写错误。引用的网址与我们在nmap 扫描的过程中找到的相同 URL一样,但没有进一步的详细信息。下面显示更详细的错误代码:DNS_PROBE_FINISHED_NXDOMAIN。

    在这里插入图片描述

    在Google快速搜索该错误后,我们了解到此错误出现可能有两个根本原因。

    我们在 URL 搜索栏中输入了错误的地址,DNS 服务器找不到键入错误的名称的关联 IP 地址。

    我们从未输入过任何主机名,例如ignition.htb进入搜索栏,由于我们知道我们从未在搜索栏中输入任何主机名,因此我们将仅探索第二个选项。此选项是指所谓的基于名称的VHosting(或虚拟主机)的问题。根据维基百科关于虚拟主机的文章,我们有以下陈述。

    虚拟主机是一种在单个服务器(或服务器池)上托管多个域名(每个名称单独处理)的方法。[1] 这允许一台服务器共享其资源,例如内存和处理器周期,而无需提供的所有服务使用相同的主机名。术语虚拟主机通常用于指代Web服务器,但这些原则确实适用于其他Internet服务。
    
    [..]
    
    基于名称的虚拟主机所需的技术先决条件是具有 HTTP/1.1 支持的 Web 浏览器(今天很常见),以便在请求中包含目标主机名。这允许在一个 IP 地址后面托管多个站点的服务器提供正确的站点内容。更具体地说,这意味着设置主机HTTP标头,这在HTTP / 1.1中是必需的。[2]
    
    [..]
    
    此外,如果域名系统 (DNS) 无法正常运行,即使知道 IP 地址,也很难访问虚拟托管的网站。如果用户尝试回退到使用 IP 地址与系统联系(如 http://10.23.45.67/ example),Web 浏览器会将 IP 地址作为主机名发送。由于 Web 服务器依赖于 Web 浏览器客户端告诉它要使用的服务器名称 (vhost),因此服务器将使用默认网站(通常不是用户期望的网站)进行响应。
    
    在这种情况下,解决方法是将 IP 地址和主机名添加到客户端系统的主机文件中。使用域名访问服务器应该可以再次工作。[..]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    简而言之,多个网站可以共享相同的IP地址,允许用户通过访问每个网站的特定主机名而不是托管服务器的IP地址来单独访问它们。我们向其发出请求的网络服务器向我们抛出了一个错误,因为我们没有从可以托管在同一目标 IP 地址上的主机名中指定某个主机名。从这里开始,我们会认为只需输入ignition.htb而不是目标IP地址进入搜索栏将解决我们的问题,但不幸的是,事实并非如此。当输入主机名而不是 IP 地址作为请求的目的地时,涉及一个我们可能不知道的中间人。

    域名系统 (DNS) 是连接到 Internet 或专用网络的计算机、服务或其他资源的分层和分散命名系统。它将各种信息与分配给每个参与实体的域名相关联。最突出的是,它将更容易记忆的域名转换为使用底层网络协议定位和识别计算机服务和设备所需的数字 IP 地址。通过提供全球性的分布式目录服务,域名系统自 1985 年以来一直是互联网功能的重要组成部分。

    由于将主机名转换为服务器端可用的一个 IP 地址时会涉及 DNS,因此一旦目标被隔离,这将成为一个问题,例如在我们的案例中。为了解决这个问题,我们可以编辑我们自己的本地主机文件,其中包括主机名和 IP 地址之间的关联,以适应缺少代表我们执行此操作的 DNS 服务器。

    在那之前,我们必须首先确认我们是正确的。为了更好地了解确切的请求和响应并确认我们的怀疑,我们需要使用一种称为cURL 的流行且易于使用的工具。该工具将允许我们操作向服务器发出的HTTP请求并直接在终端中接收响应,而不会将后者被我们的浏览器解释为通用错误消息,如下例所示。

    几乎每个 Linux 操作系统都预装了。要查看其功能,请输入到我们的终端。

    curl -h
    
    • 1

    在这里插入图片描述

    浏览帮助菜单选项,我们决定简单地使输出更详细,以便从目标的响应中尽可能多地学习。我们可以通过增加脚本输出的详细程度来实现这一点。

    -v :使操作更详细。更详细的输出将在运行时显示。

    curl -v http://10.129.184.190/
    
    • 1

    在这里插入图片描述

    在这里插入图片描述

    从上面的屏幕截图中观察到,我们的请求包含一个字段,该字段是目标IP的所在地地址而不是主机名。这302 Found响应,以及Location标题,指示我们请求的资源 (/) 已(暂时)移动到http://ignition.htb/。这意味着我们的假设是正确的。

    为了解决我们目前在这里面临的问题,我们将修改我们的本地 DNS 文件,名为hosts在/etc目录下面。下图所示的第一个命令的目的是输入目标的 IP在 hosts 表中带有其关联主机名的地址,这反过来又允许我们的 Web 客户端访问之前报告错误的网站。确保更换{target_IP}部分的第一行是我们自己的目标实例的实际 IP 地址以及{你的密码}的第二行是我们的 VM 的用户帐户密码,因为此操作需要超级用户权限。

    第二个命令的作用是验证我们之前的输入。读取我们的文件/etc/hosts在Linux 系统应该返回ignition.htb一个带有相关目标 IP 地址的条目。

    echo "10.129.184.190 ignition.htb" | tee -a /etc/hosts
    cat /etc/hosts
    
    • 1
    • 2

    在这里插入图片描述

    完成此配置后,我们可以继续重新加载目标网页并验证它是否加载成功。由于请求的主机名现在在我们的主机文件中具有关联,因此可以毫无问题地加载网站。从这里,我们可以开始努力争取立足点。

    http://10.129.184.190/
    
    • 1

    在这里插入图片描述

    实战

    在浏览网页很短的时间后,我们可以推断这里没有任何有用的东西可以利用。进一步探索该网站的唯一选择是使用 gobuster。

    gobuster dir --url http://ignition.htb/ --wordlist directory-list-2.3-small.txt
    
    • 1

    在这里插入图片描述

    从我们的 gobuster 脚本的输出中,我们找到了我们的目标。页面返回 200 响应码,表明它的可用性。我们可以通过将其附加到 URL 的末尾来导航到它:

    http://ignition.htb/admin
    
    • 1

    在这里插入图片描述

    向我们展示了一个登录屏幕,页面中间有一个炫耀的标志。用户名和密码被要求。通常,我们会取消通过其他方式提取的凭据,例如不安全的 FTP 服务器,如前所述。然而,这一次,我们将尝试一些 Magento 服务的默认凭据,因为没有其他可以依赖的基础。

    Magento Admin 受到多层安全措施的保护,以防止未经授权访问我们的商店、订单和客户数据。首次登录 Admin 时,我们需要输入用户名和密码并设置双重身份验证 (2FA)。
    
    根据商店的配置,我们可能还需要解决验证码挑战,例如输入一系列键盘字符、解决难题或单击具有共同主题的一系列图像。这些测试旨在识别我们是人类,而不是自动机器人。
    
    为了提高安全性,我们可以确定每个用户有权访问 Admin 的哪些部分,并限制登录尝试的次数。默认情况下,六次尝试后帐户被锁定,用户必须等待几分钟才能尝试再次。锁定的帐户也可以从管理员重置。管理员密码长度必须为七个或更多字符,并且包含字母和数字。
    
    • 1
    • 2
    • 3
    • 4
    • 5

    根据文档,我们不应该尝试暴力破解此登录表单,因为它实施了反暴力破解措施,我们需要猜测密码。由于密码长度必须为七个或更多字符并且包含字母和数字,我们可以尝试使用 2021 年最常见的密码以及常见的用户名,例如admin 。从列表中,只有以下密码满足要求。网站链接:https://cybernews.com/best-password-managers/most-common-passwords/

    admin admin123
    admin root123
    admin password1
    admin administrator1
    admin changeme1
    admin password123
    admin qwerty123
    admin administrator123
    admin changeme123
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在手动尝试了一些这些凭据后,我们成功登录。正确的组合是:admin:qwerty123。我们看到了 Magento 管理面板,其中flag可以在仪表板的部分下找到。

    admin
    qwerty123
    
    • 1
    • 2

    在这里插入图片描述

    797d6c988d9dc5865e010b9410f247e0

  • 相关阅读:
    CSS简介与CSS选择器
    HarmonyOS脚手架:快捷实现ArkTs中json转对象
    docker技术简介
    【408数据结构与算法】—栈和队列的案例引入(九)
    Java学习 - MySQL数据库中提到的 视图 是什么? 如何使用?
    基地树洞 | 自动化小系列之整合篇
    【DenseNet模型】
    CLIP:从自然语言监督中学习可迁移的视觉模型
    【MySQL】索引&事务
    SQL必需掌握的100个重要知识点:过滤数据
  • 原文地址:https://blog.csdn.net/m0_53008479/article/details/127681548