0x00 概要
最近、sqlmap をインジェクション テストに使用しているときに、上位バージョンの sqlmap ではインジェクションを検出できませんが、下位バージョンではインジェクションを検出でき、漏洩したデータは誤報ではありませんが、sqlmap のソース コードを比較テストしてチェックした結果、2 つの小さな落とし穴が見つかりました。
0x01 シナリオ再現
注入ポイント形式: json
..."whereparams":[{"name":"keyWord","value": "test"}]}
注入可能なパラメータ: 値
sqlmap コマンド:
python sqlmap.py -r sqlpk.txt –flush-session -vv
sqlmap v1.2.11 は注入できません
sqlmap v1.2 は正常に挿入されました
同様に、v1.2.10 は挿入できませんv1.1.12 は注入可能です
分析後、2 つの落とし穴は次のとおりです:
(1) v1.2.11 のbounders.xml (/v1.2.10/v1.2.9/master) いいえファジー クエリ (% ) のターゲットが長くなりましたが、v1.2 (/v1.1.12/1.1.4/1.2.2) はターゲットになりました。
(2) v1.2.11 (/v1.2.10/1.2.9/master) は、このパラメータを注入するために、json の特定のパラメータを * に手動で設定する必要があります (y-inject inside が選択されている場合でも)。ペイロードは直接 json に従うと注入できなくなりますが、v1.2 (/v1.1.12) ではデフォルトで Enter (y) を押して json の特定のパラメーターを注入できます。
0x02 詳細テスト
落とし穴 (1):
まず sqlmap のペイロード構成を理解します:
//画像ソース https://www.freebuf.com/colum...
v1.2 のテスト ペイロードを見てください:
# 使用されるペイロード: %' と 5731=5731 および '%'='
これは非常に一般的な検索ボックス インジェクションです
V1.2 のbounders.xml を確認してください:
v1.2.11 のboundaries.xml には、ファジー クエリの注入テストがありません。
https://github.com/sqlmapproj...
そこで、v1.2.11 のファイルにファジー クエリ インジェクション テストを追加し、インジェクション パラメーター (値など) に * を手動で追加すると、正常に実行できます。注入してください!
追加されたバージョンを添付します:
https://github.com/theLSA/sql...
pr が返信を受け取りました。誤検知が多かったので関連するペイロードは削除されましたが、回復には限界があります。
https://github.com/sqlmapproj...
落とし穴 (2):
v1.2 と v1.2.11 のペイロードを比較します:
v1.2.11 ではペイロードが json の末尾に直接接続されていることがわかります。
正常に注入するには、*
"whereparams":[{"name":"keyWord","value":"*"}]}
を注入パラメータ値に手動で追加します。
0x03 結論
個人的には、ファジー クエリ テスト ペイロードを追加することをお勧めします。偽陽性は偽陰性よりも優れており、これは非常に一般的です。ファジークエリインジェクション。
json パラメーターが見つかった場合は、手動で追加してみてください* (sqlmap の一部のバージョンの場合)。
sqlmap を使用してテストする場合は、-vv を追加することをお勧めします。
ツールに頼りすぎず、安全を確保するためにツールの手動テストを使用するようにしてください。
以上がsqlmap を使用して問題を分析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。