Hello there, ('ω')ノ
SQLi ペイロードの Cloudflare WAF をバイパスできた方法を。
脆弱性:
SQLインジェクション
WAFバイパス
記事:
https://infosecwriteups.com/how-i-was-able-to-bypass-cloudflare-waf-for-sqli-payload-b9e7a4260026
Cloudflare は、SQL インジェクションなどの重大な脆弱性を達成したい多くの。
人にとって間違いでしたが、ほとんど/すべてのペイロードをブロックし。
まず、ブール値ベースの SQL インジェクション ペイロードを。
注入したかったのですが、バイパスする際に最も重要な段階は。
WAFがブロックする悪い文字を検出する段階であることを知っておく必要があり。
したがって、多くのことを試した後に。
ファイアウォールが次のことをブロックしていることがわかり。
・スペース
・OR / AND ⇦ すべての場合
・- ⇦ コメント
・# ⇦ コメント
・;
・=
それでは、この記事をいくつかのセクションに分けて。
それらを回避する方法を考えてみることに。
スペースをバイパス:
スペースをバイパスするために、%20 でURL エンコーディングして。
バイパスすることを考えましたが、機能せず。
次にスペースの代わりに/**/のコメントを追加すると。
WAF がバックエンド DBMS でコメントとして解析されて。
したがって、これは複数行のコメントを含むクエリの。
通常の SELECT ステートメントで。
ブール制限のバイパス:
WAF はすべてのブール演算子を大文字または小文字であってもブロックするため。
これをバイパスするための手法で。
oR / aNd などのマルチケース演算子を実行して。
残念ながら、WAF はそれらもすべてブロックするため。
標準 URL エンコーディングを考え、ブロックされる演算子は次のようになり。
oR ⇨ %6fR
しかし残念なことに、ファイアウォールがそれをブロックしたため。
非標準のエンコーディングを考えてみて。
ほとんどの場合、これは WAF によって捕捉されず。
最終的には次のような結果になり。
oR ⇨ %256fR
= 文字がブロックされているという新たな課題に直面しているので。
この WAF の弱点である非標準エンコーディングを知ったので。
非標準エンコーディングを行って、ペイロードは次のようになり。
= ⇨ %253d
残念ながら、その後に値を入力すると、単純にブロックされるので。
次のように考えました。
・ここで、ブール値ベースの SQL インジェクションを使用して。
True データ型を実現したいと考えていて。
ファイアウォールは、非標準のエンコードされた = の後のすべてを。
ブロックして。
・しかし、別の方法で True データ型を取得しなかった理由を考え。
たとえば、50!=22 の場合、50 は 22 と等しくないため。
ここでは True 値が返され。
だから、 != の非標準エンコーディングを次のようにして。
!= ⇨ %2521%253D
ペイロードの終わりをバイパス:
最後に、コメントを参照する # や -- など、ペイロードの。
終わりの文字をバイパスしたいので。
以前のペイロードと同じエンコーディング タイプを実行し。
それは次のようになり。
;# ⇨ %253B%2523
ペイロードの最終結果:
Best regards, (^^ゞ