POJIA破甲
地图 / 绕过技巧

绕过技巧

防护措施失效的常见方式。每一条都在公开报告中反复出现过。

跨站脚本

WAF 关键字过滤

大多数规则匹配的是固定字符串,换一种等价写法往往就能通过。

  • 大小写混写:<sVg OnLoAd=...>
  • 使用不常见事件:onpointerenter、onanimationstart
  • 用 HTML 实体编码属性值
查看相关报告 →

跨站脚本

CSP 白名单域名

如果 script-src 包含托管任意 JS 的 CDN 或带 JSONP 端点的域名,CSP 就形同虚设。

  • 查找白名单域名上的 JSONP 回调
  • 利用允许的 CDN 加载旧版 AngularJS
查看相关报告 →

服务端请求伪造

SSRF 地址过滤

黑名单通常只检查字面量,换一种 IP 表示方式或借助 DNS 重绑定即可绕过。

  • 十进制 / 八进制 / 十六进制 IP
  • 指向 127.0.0.1 的自有域名
  • 先通过校验再 302 跳转到内网地址
查看相关报告 →

开放重定向

开放重定向校验

使用 startsWith / contains 检查域名的实现几乎总能被绕过。

  • https://target.example.attacker.example
  • https://attacker.example#target.example
  • /\attacker.example
查看相关报告 →

路径遍历

路径遍历过滤

只替换一次 ../ 或者在解码之前校验,都会留下缺口。

  • ....//....//etc/passwd
  • 双重 URL 编码
  • 利用绝对路径直接读取
查看相关报告 →

业务逻辑

速率限制

限流往往按 IP 或某个请求头计数,而这些都可以被客户端控制。

  • 轮换 X-Forwarded-For
  • 在参数中加入大小写或空白变化
  • 使用批量接口或 GraphQL 别名
查看相关报告 →

身份认证

双因素认证

第二因素校验经常只在前端完成,或者某些备用登录路径根本没有检查。

  • 直接请求登录后的页面
  • 修改响应中的 mfa 状态字段
  • 通过 OAuth / 移动端接口登录
查看相关报告 →

访问控制

访问控制路径匹配

网关与应用对 URL 的规范化方式不同,造成授权规则匹配不到真正的处理器。

  • /admin;foo=bar
  • /ADMIN
  • /api/v1/../v2/admin
查看相关报告 →

SQL 注入

SQL 注入过滤

过滤空格和关键字并不能阻止注入,SQL 语法提供了大量等价写法。

  • 用 /**/ 或括号代替空格
  • SeLeCt 混写与内联注释
  • 使用 JSON 运算符绕过 WAF 解析
查看相关报告 →

代码执行

文件上传校验

只校验扩展名或 Content-Type 时,可以借助解析差异让文件以可执行形式落地。

  • shell.php.jpg / shell.pHp
  • 修改 Content-Type 为 image/png
  • 上传 .htaccess 改变解析规则
查看相关报告 →