sqlmap
がHTTPヘッダーでSQLの脆弱性をテストできるかどうか疑問に思っていました。 --level>=3
を使用すると、User-AgentおよびReferrer HTTPヘッダーが自動的にチェックされることはわかっていますが、他のHTTPヘッダーもチェックしたいと思います。
リクエストで送信されるヘッダーを指定するために使用できる--header
オプションを見つけましたが、sqlmap
がそれらのヘッダーを実際にテストするかどうかはわかりません。ヘッダーを追加したいとしましょう:
CustomHeader: testing
httpリクエストに。 --headers="CustomHeader: testing"
をsqlmap
コマンドラインに追加し、sqlmap
に-p
オプションを使用してCustomHeader HTTPヘッダーのSQLの脆弱性をテストするよう具体的に指示できます。このような:
Testable parameter(s)
Switch: -p
By default sqlmap tests all GET parameters and POST parameters. When the value of --level is >= 2 it tests also HTTP Cookie header values. When this value is >= 3 it tests also HTTP User-Agent and HTTP Referer header value for SQL injections. It is however possible to manually specify a comma-separated list of parameter(s) that you want sqlmap to test. This will bypass the dependence on the value of --level too.
For instance, to test for GET parameter id and for HTTP User-Agent only, provide -p id,user-agent.
したがって、コマンドは次のようになります。
-p customheader
誰かが実際にカスタムHTTPヘッダーをsqlmap
でテストする方法を知っていますか?
以下は、./sqlmap/lib/controller.py
の動作を定義する--level
のコードスニペットです。
カスタム表示されます ヘッダーインジェクションがサポートされています (ちょうど1週間前-git pullを実行します):
今、このようなことをすることが可能です:
--user-agent="sqlmap*"
または--referer="target.com*"
または--headers="User-Agent:test*\nReferer:bla"
または--headers="Foo:bar*"
または(要求ファイル内でアスタリスク文字*を使用してマーク):-r request.txt
または
..
SQLmapは現在3つのヘッダーフィールドのテストのみをサポートしていると私は理解しています。マニュアルから:
テストはGETパラメーター、POSTパラメーター、HTTP Cookieヘッダー値、HTTP User-Agentヘッダー値、およびHTTPリファラーヘッダー値を提供し、SQLインジェクションの脆弱性を特定して悪用しました。コンマを指定することも可能です-テストする特定のパラメーターの区切られたリスト
つまり、UserAgent、Cookie、Refererです。 headers = HEADERSオプションを使用してカスタムヘッダーフィールドを設定できますが、私のテストでは、これは指定されたフィールドの注入をテストせず、提供された値を送信しただけです。
最近、すべてのHTTPヘッダーフィールドを監査するツールを作成しましたが、それが実行するテストの数は、SQLmapに比べるとわずかです。現在、エラーベースのSQLiをテストするだけですが、ヘッダーフィールドにもいくつかのnullバイトをスローします。ただし、カスタムフィールドを含むすべてのヘッダーフィールドをテストします。あなたがそれをチェックアウトしたいなら、あなたはここでコードを見つけることができます:
https://github.com/nopslip/pyLobster
また、このツールはあなたが探している機能のいくつかを提供していると思います。
http://code.google.com/p/enema/
現在、すべてのヘッダーフィールドをテストするとは思わないが、100%確実ではない。私の推測では、EnemaのSQLiテストはpyLobsterを使用する場合よりもはるかに広範囲にわたると思います。