对某SRC的渗透测试实战
字数 1544 2025-08-11 08:36:13

Sitecore CMS渗透测试实战教学文档

1. 前期准备与目标选择

1.1 目标选择策略

  • 选择没有明确测试范围的目标(无范围限制)
  • 优先选择大规模企业(暴露面广,可能有遗留系统)
  • 注意寻找"软柿子"(防护较弱或开发者遗漏的站点)

1.2 心态准备

  • 渗透测试需要耐心(案例中耗时一周多)
  • 避免过度依赖自动化工具(容易被封IP)
  • 保持手工测试与工具扫描的平衡

2. 信息收集阶段

2.1 初始侦察

  • 主域名分析
  • 搜索框识别(潜在注入点)
  • 抓包分析(识别CDN、特殊文件)

2.2 CMS识别

  • 识别Sitecore CMS特征
  • 尝试确定CMS版本(本例中失败)
  • 收集CMS已知漏洞(如CVE-2021-42237)

2.3 敏感目录探测

  • 尝试访问/Sitecore后台目录(本例中被限制)
  • 检查robots.txt文件
  • 访问/api接口(本例中403)
  • 检查Sitemap.xml

2.4 403绕过技术

  • 使用X-Rewrite-URL覆盖路径尝试绕过
  • 注意绕过后可能仍有重定向限制

2.5 端口扫描

  • 使用nmap扫描
  • 识别开放服务(本例中发现MySQL、VPN等)
  • 注意443端口的web服务

2.6 旁站与子域名收集

  • 使用FOFA、SHODAN等黑暗引擎
  • 识别同CMS站点(可能有相同漏洞)
  • 寻找空白站(可能有开发者遗漏内容)

3. 漏洞挖掘技术

3.1 Vue模板注入漏洞

  • 识别Vue.js框架特征(双大括号{{}}或v-text指令)
  • 测试Payload:{{7*7}}(本例中返回49确认漏洞)
  • 绕过WAF的Payload示例:
    {{constructor.constructor%0a(%27\u0061\u006c\u0065\u0072\u0074`1`%27)()}}
    

3.2 敏感文件泄露

  • 扫描可能泄露的文件:
    • /log/ 服务器日志
    • /data/ 数据库文件
    • /data/Setting.xml 数据库凭证
    • /old/ 服务器信息
    • /trace.axd 应用程序代码
    • /update/ 系统内部文件

3.3 Web Service接口测试

  • 识别Service.asmx等接口
  • 分析接口功能(文件上传、XML处理等)
  • 尝试调用接口(本例中IP受限)

3.4 SQL注入漏洞

  • 参数测试(本例中whcode参数)
  • 布尔型盲注技术:
    • 构造判断语句(OR 1=1等)
    • 通过返回值差异判断(0为成功,-1为失败)
  • 高级Payload示例:
    -1' OR ASCII(SUBSTRC((SELECT NVL(CAST(user AS VARCHAR(4000)),CHR(32)) FROM aaaa),1,1))>0 AND 000360=000360 --
    

4. 工具与脚本

4.1 常用工具

  • nmap(端口扫描)
  • FOFA/SHODAN(子域名收集)
  • 后台扫描工具(敏感文件发现)

4.2 自定义脚本

  • Java SOAP接口测试脚本(绕过SSL验证)
  • 布尔盲注辅助判断脚本
  • 文件上传测试脚本

5. 绕过技术

5.1 WAF绕过

  • 编码绕过(Unicode编码)
  • 换行符绕过(%0a)
  • 特殊字符插入

5.2 403绕过

  • 请求头覆盖(X-Rewrite-URL)
  • 路径混淆技术

6. 漏洞利用链构建

  1. 通过子域名收集发现测试站点(无WAF)
  2. 在测试站点确认Vue模板注入漏洞
  3. 利用相同技术尝试主站(需WAF绕过)
  4. 通过敏感文件泄露获取数据库凭证
  5. 通过Web Service接口发现SQL注入点
  6. 结合信息泄露内容验证SQL注入结果

7. 注意事项

  1. 法律合规:获得授权后再测试
  2. 敏感数据处理:不公开披露具体数据
  3. 测试强度控制:避免造成服务中断
  4. IP被封处理:使用代理、调整扫描频率
  5. 漏洞报告:注意报告内容分寸

8. 总结与经验

  1. "柿子挑软的捏":从防护弱的点入手
  2. 信息收集是关键:决定后续测试方向
  3. 手工测试不可替代:自动化工具有限制
  4. 耐心与坚持:复杂目标可能需要长时间
  5. 思路比工具重要:创造性思考解决问题

附录:常见Payload

  1. Vue模板注入检测:

    {{7*7}}
    
  2. Vue模板注入利用(绕过WAF):

    {{constructor.constructor%0a(%27\u0061\u006c\u0065\u0072\u0074`1`%27)()}}
    
  3. SQL布尔盲注判断:

    -1' OR 1=1 -- 
    -1' OR 1=2 --
    
  4. SQL高级盲注(ASCII逐字符判断):

    -1' OR ASCII(SUBSTRC((SELECT NVL(CAST(user AS VARCHAR(4000)),CHR(32)) FROM aaaa),1,1))>0 AND 000360=000360 --
    
Sitecore CMS渗透测试实战教学文档 1. 前期准备与目标选择 1.1 目标选择策略 选择没有明确测试范围的目标(无范围限制) 优先选择大规模企业(暴露面广,可能有遗留系统) 注意寻找"软柿子"(防护较弱或开发者遗漏的站点) 1.2 心态准备 渗透测试需要耐心(案例中耗时一周多) 避免过度依赖自动化工具(容易被封IP) 保持手工测试与工具扫描的平衡 2. 信息收集阶段 2.1 初始侦察 主域名分析 搜索框识别(潜在注入点) 抓包分析(识别CDN、特殊文件) 2.2 CMS识别 识别Sitecore CMS特征 尝试确定CMS版本(本例中失败) 收集CMS已知漏洞(如CVE-2021-42237) 2.3 敏感目录探测 尝试访问/Sitecore后台目录(本例中被限制) 检查robots.txt文件 访问/api接口(本例中403) 检查Sitemap.xml 2.4 403绕过技术 使用X-Rewrite-URL覆盖路径尝试绕过 注意绕过后可能仍有重定向限制 2.5 端口扫描 使用nmap扫描 识别开放服务(本例中发现MySQL、VPN等) 注意443端口的web服务 2.6 旁站与子域名收集 使用FOFA、SHODAN等黑暗引擎 识别同CMS站点(可能有相同漏洞) 寻找空白站(可能有开发者遗漏内容) 3. 漏洞挖掘技术 3.1 Vue模板注入漏洞 识别Vue.js框架特征(双大括号{{}}或v-text指令) 测试Payload: {{7*7}} (本例中返回49确认漏洞) 绕过WAF的Payload示例: 3.2 敏感文件泄露 扫描可能泄露的文件: /log/ 服务器日志 /data/ 数据库文件 /data/Setting.xml 数据库凭证 /old/ 服务器信息 /trace.axd 应用程序代码 /update/ 系统内部文件 3.3 Web Service接口测试 识别Service.asmx等接口 分析接口功能(文件上传、XML处理等) 尝试调用接口(本例中IP受限) 3.4 SQL注入漏洞 参数测试(本例中whcode参数) 布尔型盲注技术: 构造判断语句(OR 1=1等) 通过返回值差异判断(0为成功,-1为失败) 高级Payload示例: 4. 工具与脚本 4.1 常用工具 nmap(端口扫描) FOFA/SHODAN(子域名收集) 后台扫描工具(敏感文件发现) 4.2 自定义脚本 Java SOAP接口测试脚本(绕过SSL验证) 布尔盲注辅助判断脚本 文件上传测试脚本 5. 绕过技术 5.1 WAF绕过 编码绕过(Unicode编码) 换行符绕过(%0a) 特殊字符插入 5.2 403绕过 请求头覆盖(X-Rewrite-URL) 路径混淆技术 6. 漏洞利用链构建 通过子域名收集发现测试站点(无WAF) 在测试站点确认Vue模板注入漏洞 利用相同技术尝试主站(需WAF绕过) 通过敏感文件泄露获取数据库凭证 通过Web Service接口发现SQL注入点 结合信息泄露内容验证SQL注入结果 7. 注意事项 法律合规:获得授权后再测试 敏感数据处理:不公开披露具体数据 测试强度控制:避免造成服务中断 IP被封处理:使用代理、调整扫描频率 漏洞报告:注意报告内容分寸 8. 总结与经验 "柿子挑软的捏":从防护弱的点入手 信息收集是关键:决定后续测试方向 手工测试不可替代:自动化工具有限制 耐心与坚持:复杂目标可能需要长时间 思路比工具重要:创造性思考解决问题 附录:常见Payload Vue模板注入检测: Vue模板注入利用(绕过WAF): SQL布尔盲注判断: SQL高级盲注(ASCII逐字符判断):