web-dev-qa-db-ja.com

SqlMapがSQLインジェクションのOWASP ModSecurityコアルールセットをバイパスする

DVWA(最も一般的なWebアプリケーション攻撃のいくつかに対して脆弱になるように特別に設計されたWebアプリケーション)で簡単な侵入テストを実行しようとしています。

ModSecurity WAFを使用して、このWebアプリケーションをSQLインジェクション攻撃から保護したい。 Apache Webサーバーを使用してWebアプリケーションをホストしています。この「被害者」の仮想マシンのオペレーティングシステムはWindows XP SP3です。

ModSecurity自体はほとんど保護を提供しません。そこで、OWASP ModSecurityコアルールセットプロジェクトを使用して、追加のSQLインジェクションルールを含めることにしました。

OWASPコアルールセットの「base_rules」フォルダにある「SQLインジェクション攻撃ルール」を適切な構成ファイルにコピーし、これらのルールがModSecurity自体と一緒に読み込まれるようにしました。

Kali Linuxがインストールされている他の仮想マシンからDVWAに手動でSQLインジェクション攻撃を実行しました。例えば:

%’ or 1=0 union select null, concat (first_name, 0x0a, last_name, 0x0a, user, 0x0a, password) from users #

SQLインジェクションコアルールセットを無効にすると、次の情報が表示されます。

enter image description here

ただし、これらのルールが有効になっている場合、サーバーは常に「エラー403 –アクセスは禁止されています」を返します。これは、これらのSQLインジェクションルールが正しく機能していたことを意味します。

次に、sqlmapを使用して、より高度なSQLインジェクション攻撃を実行することにしました。 cookie情報を取得するために、burp suiteを使用してセッションをハイジャックする必要がありました。そのすべての情報をKali Linux仮想マシンの.txtファイルにコピーしました。

enter image description here

IPとCookieの情報を隠しました。

これは、Kali Linux仮想マシン端末で入力したコマンドです。

enter image description here

Sqlmapは、OWASP ModSecurity SQLインジェクションルールをバイパスして、次の情報を表示しました。

enter image description here

なぜこれらのルールを迂回できたのか本当に理解できません。何か案は?

次のチュートリアルを使用して、仮想マシンでModSecurityを構成しました。

http://mewbies.com/how_to_install_mod_security_for_Apache_tutorial.htm

たぶん、sqlmap攻撃を防ぐために追加のOWASPルールセットを含める必要があったのでしょうか?

ありがとうございました

2
Alex

私はなんとかModSecurityにSQLインジェクションを検出させ、防止させました!問題は、OWASPルールセットではなく、SqlMap自体にありました。

ModSecurityを有効にする前に、前述のコマンドを使用して通常のsqlmapスキャンを実行しました。 SqlMapは、ユーザーとパスワードの値を取得および復号化することができました。 WAFが有効になっていないため、このようなことが起こると思っていました。

次のステップは、WAFおよびSQLIルールセットを有効にし、同じスキャンを実行することでした。 SqlMapは依然としてユーザーとパスワードの値を取得するように管理されています。その理由は、WAFを有効にせずに最初のSqlMapスキャンを実行した後に保存されたキャッシュ結果を取得したためです。

DVWAがホストされている特定のIPアドレスに関連するsqlmap出力フォルダー全体を削除しました。

rm -rvf /usr/share/sqlmap/output/192.168.220.128*

最後のステップは、sqlmapスキャンを再度実行することでした。これが私が得たものです。

enter image description here

2
Alex

未来と同様の問題を抱えている人々のために。 sqlmapが送信したリクエストとそのリクエストが不明な場合は、出力の詳細度(-v)をより高い数値に設定できます。

例えば。これを4に設定し、ペイロードに以下を追加します。
-v 4

sqlmapはコンソールにhttpリクエストとペイロードを表示します。これらを装備すると、リクエストを自分で再実行したり、sqlmapに挿入された異常を見つけたりすることができます。

詳細については、 https://github.com/sqlmapproject/sqlmap/wiki/Usage#output-verbosity を参照してください。

1
Denis