ユーザ用ツール

サイト用ツール


サイドバー

ctf:lesson:第4回

**以前のリビジョンの文書です**

第4回資料

  • 2018/06/19 (予定)
  • Linux環境はまだ必要ありません
  • Discord(ボイスチャット)グループを作りました
    • わざわざ集まってやる意味ないよね〜と考えた結果です
    • 水曜日(6/20) 20:00からもう一度ここの内容をやろうと思います

脆弱性って何?

  • 「ぜいじゃくせい」と読みます
  • システムのセキュリティが弱いところ、セキュリティホール

XSSって何?

  • Cross Site Scriptingの略で、脆弱性の一種
  • 主にJavaScriptを使ったものを指します

    ## JavaScriptって何?

  • ~~何?~~ すいません
  • Webブラウザ(FirefoxとかChrome)上で動くプログラミング言語です
  • <script>タグの中に書くことが多い
  • <img src="" onerror="alert(0);"> こういう形もよくある
    • <img>は画像を読み込むタグで、onerror=は画像が読み込めなかったときに実行される
  • ブラウザのコンソールを開いて
    • 右クリックして「調査」みたいなやつ
      • 英語版→Inspect 日本語わかりません
    • Consoleタブから自分でJavaScriptを動かせます
  • 試しにいくつか打ってみよう
snippet.javascript
alert("nunununu")
location.href = "http://google.com"
document.body.style.backgroundColor = "#09f"

やってみよう

snippet.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兆円がゴージャスになります
    • こんなのが出てきたらLoad unsafe scriptsを押してください
  • どうすれば攻撃できるか考えてみよう
    • もうちょっと具体的にいうと、「ユーザーがブックマークを開くと同時にalert(0)が実行されるようなページを作る」のが目標です
    • ページはHTMLで作れますね
  • ヒント
snippet.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  
	}
}

答え合わせ(ネタバレ注意)

  • view-source:http://o0i.es/5000tri/poc.html とアドレスバーに打つとソースコードが見られます
  • &quot;とかを勝手に変換しちゃうんですね〜

脆弱性になる仕組み

  • まずJavaScriptで何ができるか考えてみる
    • alert()
    • Cookieの操作

発展

    • XSSをやってみるサイト。ヒントもあるよ
  • XSSを防ぐ手段にはなにがあるだろう?
    • ↓のワードをググってみましょう
    • プログラムでできること
      • エスケープ・サニタイジング(無毒化)
    • サーバーでできること
      • Content Security Policy
      • Same Origin Policy
    • ブラウザでできること
  • XSSの分類
    • DOM based XSS
    • Reflected XSS
    • Self XSS
ctf/lesson/第4回.1529305265.txt.gz · 最終更新: 2018/08/15 16:50 (外部編集)