内容へ移動
情研Wiki
ユーザ用ツール
ユーザー登録
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ユーザー登録
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
ctf:lesson:第4回
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
# 第4回資料 - 2018/06/19 - Linux環境はまだ必要ありません - Discord(ボイスチャット)グループを作りました - わざわざ集まってやる意味ないよね〜と考えた結果です - ここから→[https://discord.gg/vR8PBkm](https://discord.gg/vR8PBkm) - 水曜日(6/20) 20:00からもう一度ここの内容をやろうと思います ## 脆弱性って何? - 「ぜいじゃくせい」と読みます - システムのセキュリティが弱いところ、セキュリティホール - 雑にいうとバグ ## XSSって何? - Cross Site Scriptingの略で、脆弱性の一種 - 主にJavaScriptを使ったものを指します - ![](https://www.trendmicro.com/content/dam/trendmicro/global/ja/security-intelligence/research-reports/threat-solution/xxs/figure-xss-20130912.png) - [ トレンドマイクロのページ ](https://www.trendmicro.com/ja_jp/security-intelligence/research-reports/threat-solution/xss.html)より引用 ## JavaScriptって何? - Webブラウザ(FirefoxとかChrome)上で動くプログラミング言語です - `<script>`タグの中に書くことが多い - `<img src="" onerror="alert(0);">` こういう形もよくある - `<img>`は画像を読み込むタグで、`onerror=`は画像が読み込めなかったときに実行される - ブラウザのコンソールを開いて - 右クリックして「調査」みたいなやつ - 英語版→Inspect 日本語わかりません - Consoleタブから自分でJavaScriptを動かせます - ![](https://i.gyazo.com/4965f0df64a1b22c650b49f83401fbe7.png) - 試しにいくつか打ってみよう ```javascript alert("nunununu") location.href = "http://google.com" document.body.style.backgroundColor = "#09f" ``` ## やってみよう - [ Chrome拡張「5000兆円コンバーター」にXSS脆弱性 最新版にアップデートを ](http://www.itmedia.co.jp/news/articles/1806/15/news108.html)がTwitterで流れてきたので実際にやってみたくなりました - ![](https://i.gyazo.com/80203831227a946ff5fb87562420ca66.png) - 草 - でも脆弱性はすでに修正されていて試せません(そりゃそうだ) - どこかのページをブックマークしてください(アドレスバーにある☆のマークを押す) - Chromeなら「More...」などを押してURLの欄にこれをコピペしてください ```javascript javascript:(function(d,s){s=d.createElement('script');s.src='http://o0i.es/5000tri/poc.js';d.getElementsByTagName('head')[0].appendChild(s);})(document); ``` - これでブックマークを開くとJavaScriptが実行され、5000兆円がゴージャスになります - ![](https://i.gyazo.com/931152b42b391e24d180f7b41e23716a.png) - こんなのが出てきたらLoad unsafe scriptsを押してください - どうすれば攻撃できるか考えてみよう - もうちょっと具体的にいうと、「ユーザーがブックマークを開くと同時に`alert(0)`が実行されるようなページを作る」のが目標です - ページはHTMLで作れますね - ヒント - 上のスクリプト(=プログラム)では [http://o0i.es/5000tri/poc.js](http://o0i.es/5000tri/poc.js) の内容を読みこんで実行しています ```javascript for (let elm of document.querySelectorAll("span,div")) { let textToConvert = elm.innerText // ← 注目 if (textToConvert.includes("5000兆円") || textToConvert.includes("5000兆円")) { let replaced = textToConvert.replace(/(5000|5000)兆円/g, "<img src='//o0i.es/5000tri/5000tri.png' style='height:80px;'>") elm.innerHTML = replaced } } ``` ## 答え合わせ(ネタバレ注意) - [ http://o0i.es/5000tri/poc.html ](http://o0i.es/5000tri/poc.html) - `view-source:http://o0i.es/5000tri/poc.html` とアドレスバーに打つとソースコードが見られます - `"`とかを勝手に変換しちゃうんですね〜 ## 脆弱性になる仕組み - JavaScriptで何ができるか考えてみる - `alert()` - Cookieの操作 - Cookieにはログイン情報(セッションID)などが保管されている - Ajaxで外部にCookieを送信してなりすまし - 実際にどういう情報が保存されているかは`document.cookie`と打つと確認できます ## Self XSS - Self…自分でやるXSS??? - 上のコードをペーストするときにこんなの出ませんでしたか - ![](https://prod-cdn.sumo.mozilla.net/uploads/images/2014-09-23-07-44-27-0bf57d.png) - XSSが(下の「発展」で述べているような手段で)対策される→「ユーザーをだまして自分でコンソールから実行させればいいじゃん!」という発想 - 「こんなのに騙される人いるのかな?」と思うかもしれません。一応いるみたいです。 - 気をつけようね - 対処:Facebookでコンソールを開くとこんなメッセージが出ます - ![](https://i.gyazo.com/ddb0dc34ec74ce4222beadc92cec23b6.png) - https://qiita.com/amoO_O/items/c63f7227730f3c15bb2f に詳しい ## 発展 - [http://xss-game.appspot.com/](http://xss-game.appspot.com/) - XSSをやってみるサイト。ヒントもあるよ - XSSを防ぐ手段にはなにがあるだろう? - ↓のワードをググってみましょう - プログラムでできること - エスケープ・サニタイジング(無毒化) - サーバーでできること - Content Security Policy - Same Origin Policy - ブラウザでできること - ![](https://i.gyazo.com/931152b42b391e24d180f7b41e23716a.png) - XSSの分類 - DOM based XSS - Reflected XSS - Self XSS
ctf/lesson/第4回.txt
· 最終更新: 2018/08/15 16:49 (外部編集)
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ