
ジャンクデータを挿入することでWAFをバイパスするBurpプラグイン
ほとんどのWebアプリケーションファイアウォール(WAF)には、リクエストボディが送信されたときに処理できるデータ量に制限があります。つまり、リクエストボディを含むHTTPリクエスト(POST、PUT、PATCHなど)では、先頭にジャンクデータを付加するだけでWAFをバイパスできることがよくあります。
リクエストにこのジャンクデータが詰め込まれると、WAFはリクエストの先頭からX KBまでを処理して分析しますが、WAFの制限を超えた部分はそのまま通過します。
nowafplsは、Repeaterタブ内のHTTPリクエストに、このジャンクデータをコンテキストに応じて挿入するシンプルなBurpプラグインです。挿入するジャンクデータの量をプリセットから選択するか、「Custom」オプションを選択して任意の量のジャンクデータを挿入できます。
このツールはPythonで80行程度の非常にシンプルなものですが、ほとんどのWAFで機能します(笑)。
| WAFプロバイダー | リクエストボディ検査サイズの上限 |
|---|---|
| Cloudflare | ルールセットエンジンで128 KB、エンタープライズで最大500 MB |
| AWS WAF | 8 KB - 64 KB (サービスに応じて設定可能) |
| Akamai | 8 KB - 128 KB |
| Azure WAF | 128 KB |
| Fortiweb by Fortinet | 100 MB |
| Barracuda WAF | 64 KB |
| Sucuri | 10 MB |
| Radware AppWall | クラウドWAFで最大1 GB |
| F5 BIG-IP WAAP | 20 MB (設定可能) |
| Palo Alto | 10 MB |
| Cloud Armor by Google | 8 KB (128 KBまで引き上げ可能) |
nowafplsはJythonベースのBurpプラグインです。
https://github.com/assetnote/nowafpls/assets/5241936/dad77c3a-d550-4e5d-894d-027256137148
nowafplsは、リクエストのタイプ(URLEncoded/XML/JSON)に応じて、ジャンクデータを自動的に挿入します。
このプラグインのCaido版は@Rhynoraterによってメンテナンスされており、以下のgistにあります:
https://gist.github.com/Rhynorater/ace68d4976357ca0937cb4669f303306
または、EvenBetter Workflow Library にあります。
MIT