sonickun.logスマートフォン用の表示で見るsonickun.log備忘録この広告は、90日以上更新していないブログに表示しています。セキュリティGoogleが公開したXSS(クロスサイトスクリプティング)脆弱性をつくハッキングゲームに、XSSの勉強がてら挑戦してみました。gameレベルは1~6まであり、それぞれXSS攻撃によりアラートを表示させるコードを実行させるとクリアになります。すべてクリアするとGoogleからケーキのご褒美があるそうです。問題の下にはソースコードとヒント(3~4つまで)があります。1入力欄に適当に文字を入れて「Search」を押すと、次の画面にその文字が表示されます。試しに<h1>hoge</h1>というHTMLコードを入れてみると、大きな見出し文字として表示されました。文字を変換するといったXSS対策がなされていないことが分かります。したがって、直接Javascriptのコードをぶち込んでやればいいわけです。アラートで表示させる文字は何でもいいようです。そこで、入力欄に以下のコードを入れて「Search」を押すとアラートが表示されます。2レベル2はチャット画面のようです。文字を入力するとどんどん表示されていきます。レベル1の時と同じコードを入れてもアラートはなりません。そこで今回はスクリプトタグではなく、imgタグを使ってみようと思います。src="XSS">という文字を入れると、チャット画面に画像のアイコンが現れるのでこれは使えるようです。このコードの後ろにonerrorというエラー処理を追加して、以下の様なコードを入力するとアラートが表示されました。3レベル3では古いコンピュータの画像が現れます。上のImageタブをクリックすると画像が切り替わります。変わっていくことに注目です。URLの数字を書き換えるだけでもページを切り替えることができます。3</div>とあり、Imageの番号をchooseTabに渡していることが分かります。/>";このようにimgタグで画像を表示させているようです。/>";が実行され、アラートが表示されます。4レベル4では、数字を指定して実行するとタイマーが作動する仕組みになっています。/>となっていて、"{{timer}}"のところに入力の内容が入るようになっていることが分かります。/>となり、アラートが表示されます。5レベル5では、なにかのログイン画面が現れます。メールアドレスを入力してログインすると元のページヘリダイレクトされます。メールアドレスを入力するページのURLの末尾が"signup?next=confirm"になっていることに注目です。"Next"をクリックするとconfirm.htmlが呼び出されています。}}にconfirmが入ることになっています。ここで、以下のようにURLのconfirmをjavascript:alert('XSS');に変えて、Goを押し、Nextをクリックするとアラートが表示されます。6レベル6は...何をしたいのかわからない(笑)。/static/gadget.jsから何かのガジェットをロードしているようです。http://www.google.com/jsapi?callback=alert↑こちらのjavascriptのAPIのcallback関数でalertを表示させようとしましたが、以下のコードにより"http"が入ってると無効化されてしまいます。return;}ただしhttp:は省略可能なため、URLの#以下を以下のように書き換えるとアラートを表示させることができます。http://xss-game.appspot.com/level6/frame#//www.google.com/jsapi?callback=alertまた、別解として、以下のようにURLを変更すればアラートを表示させることができました。http://xss-game.appspot.com/level6/frame#data:,alert('XSS')すべてクリアすると...Googleからケーキがもらえます。問題を通して、かなりXSSの勉強になりました。最初の問題こそ簡単でしたが、レベルと難易度は必ずしも比例しないような感覚でした。XSSは任意のコードを実行できるようになってからが本番ですから、その先の、データを抽出したりなどの攻撃までやってみたかったです。ConoHaに参加した。(1)月別アーカイブ参加グループはてなブログをはじめよう!sonickunさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。