初始侦察
端口扫描
nmap扫描发现两个开放端口:
- SSH (22)
- HTTP (80)
|
|
网站重定向到artificial.htb,将其添加到/etc/hosts文件。
网站分析 - TCP 80
技术栈识别
网站是一个AI"赋能"平台,使用TensorFlow运行模型。技术要求文件显示:
|
|
Dockerfile配置了相应的Python 3.8和TensorFlow环境。
目录爆破
使用feroxbuster未发现有趣路径。
获取app用户shell
漏洞识别
TensorFlow 2.13.1在保存和加载h5模型文件时存在反序列化漏洞,允许远程代码执行。
载荷生成
创建恶意TensorFlow模型:
|
|
执行利用
上传恶意h5文件后,点击"View Predictions"触发反向shell连接。
横向移动到gael用户
数据库枚举
在instance/users.db中发现用户哈希:
|
|
使用CrackStation破解MD5哈希,得到gael用户的密码。
提权到root
本地服务发现
发现本地监听服务:
- 5000: Flask应用
- 9898: Backrest备份服务
Backrest配置获取
从/var/backups/backrest_backup.tar.gz中提取配置:
- jwt-secret文件
- config.json包含base64编码的bcrypt哈希
密码破解
解码并破解bcrypt哈希:
|
|
提权方法
方法1:通过SSH密钥
- 创建Backrest仓库和计划
- 备份/root目录
- 通过快照浏览器下载文件
- 获取root的SSH私钥
方法2:通过钩子命令
在备份计划中添加命令钩子:
|
|
方法3:通过Restic命令注入
在"Run Command"中执行:
|
|
三种方法均能成功获取root权限,完成整个渗透测试过程。