web-dev-qa-db-ja.com

sqlmapでSQLiの脆弱性を悪用する方法

単純なブールブラインドSQLの脆弱性を発見し、sqlmapに繰り返し処理を実行させたいのですが、動作しないようです。はるかに遠いところから開始しようとしているようです。詳細はこちら。脆弱性はこんな感じ

http://Host/path?param=123

そして、私はこのようにクエリすることができます

http://Host/path?param=123' or 10 = (select len(system_user()));--

(もちろんエンコードされたURL)。 2番目のor条件がtrueの場合、「Found 1000 hits」という応答のどこかに到達します。 falseの場合、「0ヒットが見つかりました」と表示されます。だから今私は簡単にバイナリ検索を行うことができます

http://Host/path?param=123' or 100 < (select ascii(substring(system_user(), 1, 1));--

1文字あたりの文字(気付かない場合はMS SQL Serverです)。これは非常に流血に見えますが、sqlmapが「paramは注入可能ではないようです」と繰り返し通知していることを理解できません。これが私が試したsqlmap呼び出しです:

sqlmap -u "http://Host/path?param=123" -p param --current-user --dbms mssql --prefix="123' or " --suffix=";--" --risk 3 --level 2

私は、-risk、-level、-technique = B、および--string = "Found 1000 hits"を使用しました。何も役に立ちません。 sqlmapに何も検索せず、このばかげた繰り返しを実行するように指示するにはどうすればよいですか?

2
kaidentity

例のように単純な挿入ポイントは、sqlmapによって確実に取得できます。

トラブルシューティングのアイデアは次のとおりです。

  • サーバーはWAFを使用できますか、それともsqlmapユーザーエージェント(sqlmap/x.x)に反応しますか? --user-agentを使用して、ブラウザーと同じユーザーエージェント(または一般的なユーザーエージェント)を指定します。

  • サーバーは、高速で連続するHTTPリクエストに対して異なる反応をしますか? --delayを使用して、リクエスト間の遅延間隔を指定できます。

  • このような単純な注入では、通常、--prefixおよび--suffixを指定する必要はありません。 sqlmap自体の分析プロセスを混乱させないように、それらを省略した方がよいでしょう。

  • バックエンドDBMSについて100%確信がない場合は、--dbms mssqlを省略してみてください。 sqlmapは通常、それ自体を把握できます。

  • リクエストは認証されるか、知らないCookie設定に依存しますか? --cookieを使用して、ブラウザに設定されている可能性のある同じCookieを追加します。

  • Sqlmapを使用してリクエストとレスポンスをデバッグし、ブラウザで取得しているものと比較します。高い output verbosity レベル(例:-v 6)を設定して、HTTPトラフィック全体をオーバーサーブできます。

  • curlを使用して、手動注入が通常ブラウザの外部で機能することを確認します。例えば。:

    curl "http:// Host/path?param = 123 'or 10 =(select len(system_user()));-" | grep "1000ヒット"
2
Arminius

ブールベースのブラインドSQliを見つけたと述べたので、以下のようなsqlmap入力が必要になります。

#sqlmap -u "http://Host/path?param=123" --technique=B --level=5 --risk=3 --random-agent --dbms=MSSQL
  • --techniqueスイッチはブラインドSQLi攻撃のみを強制します
  • --random-agentは正当なユーザーエージェントを使用することを保証します。サイトが不明なエージェントの表示をロックアウトする可能性があるため、これを提供しない場合、ほとんどの脆弱性が悪用されることはありません。
  • レベルを上げる
  • また、クエリには他のパラメーターがないため、パラメーター部分とサフィックスとプレフィックスの指定をスキップします
3
Nipun Jaswal