SqlmapインジェクションタンパーはWAFファイアウォールフィルタリングをバイパスします
Sqlmap Injection Tamper Bypasses Waf Firewall Filtering
SqlmapインジェクションタンパーはWAFファイアウォールフィルタリングをバイパスします
このゴキブリのプロンプトボックスを見ると、何百万頭もの草泥馬が心臓を走っていました。
しかし、多くの場合、フィルタリングシステムによってフィルタリングされるパラメータと、それらをバイパスする方法を落ち着かせて分析する必要があります。
sqlmapの改ざんは、非常に実用的な多くのアンチフィルタリングスクリプトをもたらします。一部の友人は、改ざんスクリプトを最も効果的に使用する方法を知らない可能性があります。
もちろん、スクリプトを使用する前に決定する必要があるのは、一重引用符、スペース、select、union、adminなど、システムによってフィルタリングされるキーワードです。
そのため、インジェクションは成功したものの、ダンプがデータを生成しない場合や、選択がフィルタリングされている場合などがあります。
使用するスクリプトを決定する方法
最も簡単な方法は、urlパラメータにキーワードを手動で入力して、フィルタリングされているかどうかを判断することです。
図:
フィルタリングする一重引用符を直接追加します。これは、挿入時に一重引用符を使用できないことを示します。
スペースと等号はフィルタリングされず、エラーは正常に報告されます。
選択はフィルタリングされます。
同様に、データがないなどのsqlmapインジェクションに問題がある場合は、対応するキーワードがフィルタリングされているかどうかを確認する必要があります。
たとえば、スペースはspace2comment.pyを使用するようにフィルタリングでき、フィルタリングシステムでは大文字と小文字が区別されます。 randomcase.pyなどを使用できます。
以下は、sqlmapの改ざんパラメータの詳細な説明です。
指示
参照: Sqlmapユーザーマニュアルの詳細[ユーティリティバージョン]
実際の状況に応じて、同時に複数のスクリプトを使用できます。 -vパラメーターを使用すると、ペイロードの変更を確認できます。
sqlmap.py -u“ http://www.target.com/test.php?id=12” –dbms mysql –tamper“ space2commet、versionedmorekeywords.py” -v 3 –dbs
スクリプト名:apostrophemask.py
役割:引用符の代わりにutf8を使用する
1 |
|
テスト対象:すべて
スクリプト名:equaltolike.py
役割:等号の代わりに
1 二 3 4 5 |
|
ケース1:http://wooyun.org/bugs/wooyun-2010-087296
ケース2:http://wooyun.org/bugs/wooyun-2010-074790
ケース3:http://wooyun.org/bugs/wooyun-2010-072489
スクリプト名:space2dash.py
役割:フィルター「=」をバイパスすると、スペース文字( ')、(' – ‘)が置き換えられ、その後にダッシュコメント、ランダムな文字列、および改行(' n ')が続きます。
1 |
|
テスト対象:* MSSQL * SQLite
ケース1:http://wooyun.org/bugs/wooyun-2010-062878
スクリプト名:greatst.py
役割:フィルター '>'をバイパスし、より大きい数値をGREATESTに置き換えます。
1 |
|
スクリプト名:space2hash.py
役割:スペースは##に置き換えられますランダムな文字列と改行
1 二 3 4 |
|
要件:
- MySQLのテスト対象:
- MySQL 4.0、5.0
スクリプト名:apostrophenullencode.py
役割:二重引用符をバイパスし、文字と二重引用符を置き換えます。
1 |
|
テスト対象:
- MySQL 4、5.0および5.5
- Oracle 10g
- PostgreSQL 8.3、8.4、9.0
スクリプト名:halfversionedmorekeywords.py
役割:データベースがmysqlの場合はファイアウォールをバイパスし、各キーワードの前にmysqlバージョンコメントを追加します
1 二 3 |
|
要件:
- MySQL<5.1
テスト対象:
- MySQL 4.0.18、5.0.22
スクリプト名:space2morehash.py
役割:スペースは##以上のランダムな文字列に置き換えられます
1 二 3 4 5 |
|
要件:* MySQL> = 5.1.13テスト済み
に対して:* MySQL 5.1.41
ケースナンバーワン: 91ri記事
スクリプト名:appendnullbyte.py
役割:ペイロードの最後にゼロバイトの文字エンコードをロードします
1 |
|
要件:
- Microsoft Access
スクリプト名:ifnull2ifisnull.py
役割:IFNULLフィルターをバイパスします。同様の「IFNULL(A、B)」を「IF(ISNULL(A)、B、A)」に置き換えます
1 二 3 |
|
要件:
- MySQL
- SQLite(おそらく)
- SAP MaxDB(おそらく)
テスト対象:
- MySQL5.0および5.5
スクリプト名:space2mssqlblank.py(mssql)
役割:スペースが他の空のシンボルに置き換えられました
例:*入力:SELECT id FROM users *出力:SELECT%08id%02FROM%0Fusers
要件:* Microsoft SQL Serverのテスト対象:* Microsoft SQL Server 2000 * Microsoft SQL Server 2005
ASCIIテーブル:
ケース1:wooyun.org/bugs/wooyun-2010-062878
スクリプト名:base64encode.py
役割:base64エンコーディングに置き換えます例:( '1' AND SLEEP(5)# ')‘ MScgQU5EIFNMRUVQKDUpIw == ’要件:すべて
ケース1:http://wooyun.org/bugs/wooyun-2010-060071
ケース2:http://wooyun.org/bugs/wooyun-2010-021062
ケース3:http://wooyun.org/bugs/wooyun-2010-043229
スクリプト名:space2mssqlhash.py
役割:スペースを交換してください
1 |
|
スクリプト名:modsecurityversioned.py
役割:完全なクエリバージョンのコメントを含むフィルタースペース
1 |
|
要件:* MySQL
テスト対象:
- MySQL 5.0
スクリプト名:space2mysqlblank.py
役割:他の空白記号を置き換えるスペース(mysql)
1 二 3 4 5 |
|
要件:
- MySQL
テスト対象:
- MySQL 5.1
ケース1:wooyun.org/bugs/wooyun-2010-076735
スクリプト名:between.py
役割:大なり記号(>)をbetweenに置き換えます
1 |
|
テスト対象:
- Microsoft SQL Server 2005
- MySQL 4、5.0、および5.5 * Oracle 10g * PostgreSQL 8.3、8.4、9.0
ケース1:wooyun.org/bugs/wooyun-2010-068815
スクリプト名:space2mysqldash.py
役割:スペース文字( ')(' – ‘)を置き換え、その後にダッシュを続けて改行に注釈を付けます(’ n ’)
注:これがmysqlになる前にmssqlがあります
1 |
|
要件:
- MySQL
- MSSQL
スクリプト名:multiplespaces.py
役割:SQLキーワードの前後に複数のスペースを追加します
1 |
|
テスト対象:すべて
ケース1:wooyun.org/bugs/wooyun-2010-072489
スクリプト名:space2plus.py
役割:スペースを+に置き換えます
1 |
|
スクリプト名:bluecoat.py
役割:SQLステートメントでスペース文字を有効なランダム空白文字に置き換えます。次に、replace = like
1 |
|
テスト対象:
- MySQL 5.1、SGOS
スクリプト名:nonrecursivereplacement.py
二重クエリステートメント。事前定義されたSQLキーワードを代替(例:.replace( 'SELECT'、 ')))フィルターの手段に置き換えます
1 |
|
スクリプト名:space2randomblank.py
役割:ランダムな空白文字からのスペース文字( '')の代わりに、オプションの文字の有効なセット
1 |
|
テスト対象:すべて
スクリプト名:sp_password.py
役割:DBMSログの自動難読化のペイロードの最後からsp_password 'を追加します
1 |
|
スクリプト名:chardoubleencode.py
役割:二重URLエンコード(エンコードするために処理されません)
1 二 3 4 5 |
|
スクリプト名:unionalltounion.py
役割:UNION ALL SELECT UNIONSELECTを置き換えます
例:( ‘-1 UNION ALL SELECT’) ‘-1 UNION SELECT’
要件:すべて
スクリプト名:charencode.py
役割:URLエンコード
1 二 3 4 5 |
|
テスト対象:
- Microsoft SQL Server 2005
- MySQL 4、5.0および5.5
- Oracle 10g
- PostgreSQL 8.3、8.4、9.0
スクリプト名:randomcase.py
役割:ランダムケース例:
- 入力:INSERT
- 出力:InsERt
テスト対象:
- Microsoft SQL Server 2005
- MySQL 4、5.0および5.5
- Oracle 10g
- PostgreSQL 8.3、8.4、9.0
スクリプト名:unmagicquotes.py
役割:ワイド文字バイパスGPCアッドラッシュ
1 二 3 4 5 |
|
スクリプト名:randomcomments.py
役割:use / ** / splitsqlキーワード
1 二 3 |
|
スクリプト名:charunicodeencode.py
役割:文字列Unicodeエンコーディング
1 二 3 4 5 |
|
要件:
- ASP
- ASP.NET
テスト対象:
- Microsoft SQL Server 2000
- Microsoft SQL Server 2005
- MySQL 5.1.56
- PostgreSQL 9.0.3
ケース1:wooyun.org/bugs/wooyun-2010-074261
スクリプト名:securesphere.py
役割:特別な文字列を追加します
1 |
|
テスト対象:すべて
スクリプト名:versionmorekeywords.py
役割:コメントバイパス
1 二 3 4 5 |
|
要件:
- MySQL> = 5.1.13
スクリプト名:space2comment.py
役割:スペース文字( ‘‘)をコメント ‘/ ** /’に置き換えます
1 二 3 4 5 |
|
テスト対象:
- Microsoft SQL Server 2005
- MySQL 4、5.0および5.5
- Oracle 10g
- PostgreSQL 8.3、8.4、9.0
ケース1:wooyun.org/bugs/wooyun-2010-046496
スクリプト名:halfversionedmorekeywords.py
役割:キーワードの前にコメントを追加します
1 二 3 4 5 |
|
要件:
- MySQL<5.1
テスト対象:
- MySQL 4.0.18、5.0.22