
友人が、私が使用しているアプリケーションに SQL インジェクションの脆弱性があることを指摘しました。
この検索パラメータ:
'; exec xp_cmdshell 'dir'; --
メッセージを返しました:
The EXECUTE permission was denied on the object
'xp_cmdshell', database 'mssqlsystemresource', schema 'sys'.
検索は、いくつかのテーブルとストアド プロシージャに対する選択権限のみを持つアカウントから実行されるためです。
悪意のあるユーザーが SQL Server の管理者アカウントのログイン情報を知っていた場合、その資格情報を使用して、cmd シェル経由でマシンにルート アクセスしたり、その他の不正行為を行ったりできるのでしょうか?
答え1
SQL インジェクションにより、 を使用して SQL サーバー上のより高い権限を持つユーザーに変更される可能性がありますexec as {credentials}
。 ただし、クエリを実行している元のユーザーは、切り替え先のユーザーに対する権限を持っている必要がありますIMPERSONATE
。 これはデフォルトの構成ではないため、追加する必要があります (これも追加するのはかなり奇妙です)。
答え2
それが可能かどうかは問題ではありません。ここには解決すべき正当な問題があります。このコマンドはサーバーにポストバックされるべきではありませんでした。