SlideShare une entreprise Scribd logo
1  sur  50
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
練習問題のScoreServerで学ぶ
ウェブセキュリティ
@nomuken
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
Agenda(このスライドの)
1. 自己紹介
2. 楽しいインターネット
3. Webの脆弱性のお話
4. 練習問題の答え合わせ
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
1.自己紹介
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
自己紹介
●
Nomuken (@nomuken)
●
ArchLinuxとごちうさと初音ミクが好き
●
CTFとか面白いけどマジわからない系男子
●
調子乗ってmlabCTFやったらTDUCTFの主催になっていた
●
大学2年生 (あと3日で3年生)
●
好きな脆弱性はディレクトリトラバーサルとOSコマンドイン
ジェクション
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
2.楽しいインターネット
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
楽しいインターネット
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
楽しいインターネット
●
練習問題を公開して沢山のアクセスが来ました
●
GEKI-YABA
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
来訪者の皆様
●
ShellShock
●
機械的なアクセス
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
来訪者の皆様
●
何らかのペネトレーションツール(と思われる物)の利用
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
来訪者の皆様
●
SQLi勢(とXSS勢)
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
来訪者の皆様
●
alert勢
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
来訪者の皆様
●
CSRF勢
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
来訪者の皆様
●
admin勢
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
_人人人人人人人人人人人人人_
> 後半,同じ人じゃねぇか <
 ̄Y Y Y Y Y Y Y Y Y Y Y Y Y^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ̄
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
感想
●
…… ……あぁ 狙われているなぁ
●
攻撃成立しちゃってんじゃねぇか,やだー
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
極めつけ
●
"GET /question/?%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E9%96%8B
%E5%82%AC%E3%80%81%E3%81%8A%E5%BE
%85%E3%81%A1%E3%81%97%E3%81%A6%E3%81%8A%E3%82%8A%E3%81%BE
%E3%81%99%E2%98%86%EF%BC%88%E3%82%9D%CF%89%E3%83%BB%EF
%BC%89v HTTP/1.1"
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
……つまり
●
「リモート開催、お待ちしております☆(ゝω・)v」
●
結構スマートかつさり気なくてカッコいい
●
……もしかして?
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
余談
●
載せてるとキリがない量で攻撃がありました
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
……というわけで
●
スコアサーバーのWebっぽい脆弱性からXSSとSQLiについて話
します
●
やぎはしゅ先生によるXSSとSQLiの話はCTF4bで聞こう!
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
3.Webの脆弱性のお話
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
……の前に
●
攻撃者は何がしたい?
●
例えば,先ほど見せた攻撃は何のためにする?
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
攻撃者の目的(Web関連において)
●
サーバーを奪取する
→自分の操作を増幅してくれるbotにしたい,bitcoinマイニングに使
……いたい
●
情報を奪いたい
……→クレジットカード番号,個人情報,パスワード
●
実力誇示
→これをする実力があると見せつける(過激派組織に多い?)
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
……目的を達成するために
●
” ”ご存知の通り, 作者の粗 を探し,そこを踏み台にする.
→その粗が「XSS」だったり「SQLi ……」だったり
●
その粗こそ脆弱性
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
XSS
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
XSS(クロスサイトスクリプティング)
●
javascriptでよしなにする
●
解説はどう考えたってxss.moeな人がやるべきかもしれない
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
どういったものか
●
ウェブページ内で好きなjavascriptが実行できる.
→つまりブラウザでできることは大抵できる
●
目的としては,ページの書き換え,Cookieを盗んだり等
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
……ところで
●
これ好きな人いますか?(例をphpで書きます)
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
_人人人人人人人人_
> 目を背けない <
 ̄Y^Y^Y^Y^Y^Y^Y ̄
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
phpのコード
(略)
<body>
<h1>xss</h1>
<hr>
<form method="get">
<input type="text" name="s" value="<?php echo $_GET["s"];?>">
<button type="submit">Go</button>
</form>
</body>
(略)
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
……つまり
●
GETで与えられたパラメータ(?s=hoge)をvalueに表示するプ
ログラム.
→検索機能とかがあるけれどサイトでよくある
●
適切にエスケープされてないがためにhtmlコードを渡すことが
できる
→javascriptを埋め込める
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
こんな値で送信する
●
「” autofocus onfocus=”alert('yagihashoo');」
→送信してページを開いた瞬間にXSSと表示される
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
Demo
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
原理
●
<input type="text" name="s" value=" $_GET['s'] ">に注目
●
先ほどの入力を含めると
<input (略)value="" autofocus onfocus="alert('yagihashoo');">
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
出来上がったものを考える
●
valueの中身は今のところ興味ないのでひとまず終了("を入れ
る)する
●
autofocusでロードするとすぐに選択されるようになっている
●
イベントハンドラのonfocusで,対象のフォームが選択された
時,任意のjavascriptを実行する
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
……結果的に
●
ページ開いた瞬間にjavascript実行できちゃいますね
●
ちなみに,単純にscriptタグを埋め込むことも出来ます.
→ "><script>alert('yagihashoo');</script><!--
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
原因
●
文字のエスケープ漏れによって発生します.
→適切にエスケープをしましょう
→でも,オレオレなエスケープ関数は作らないこと.漏れが
あったらどうする?
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
……攻撃者的には
●
フォームに「特別な意味を持つ文字」を送信して表示された結
果からどのような文字を入れるべきかを考えます.
平均的な一般(?)攻撃者
" ' >< & ...
&#039; &quot; &gt; &lt; &amp;
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
まとめ
●
XSSとはページにjavascriptを埋め込めてしまう脆弱性
●
原因はユーザの入力文字列をエスケープできていないこと
●
そもそもあるライブラリもしくは,フレームワークを利用して
安全にエスケープしていきましょう
●
ユーザーはほぼ全員が敵と考えるほうが無難か?
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
SQLi
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
SQLi(SQLインジェクション)
●
データベースを扱うSQLに起因する脆弱性です.
●
xss.moeなh(ry
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
どういったものか
●
存在するSQL文を全く別の意味に変え,想定するものとは別の
操作を出来てしまう脆弱性
●
目的としては,脆弱なWebアプリからユーザとパスワードを盗
……む,認証を通過する 等
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
phpのコード
$sql = "SELECT * FROM users WHERE id='".$_GET['s']."';";
$stmt = $pdo->query($sql);
foreach( $r as $stmt){
$article['title'] = $s['title']
...
}
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
……つまり
●
一応記事を検索するプログラムのつもり.タイトルからキー
ワードが含まれる記事を探してきて表示をする.
●
適切にエスケープがされていないため,SQL文を改変すること
ができる.
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
こんな値を送信する
●
「' union all select 1,sql,1 from sqlite_master;--」
→データベース内に登録されている全てが表示された後,sql文
が表示される.
●
なお,ここではsqliteを想定します
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
Demo
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
何が起きた?
●
クエリに注目
SELECT * FROM users WHERE id='' union all select 1,sql,1
from sqlite_master;--';
●
任意のテーブルからデータを取り出せた!
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
解説
●
「' 」でidに対する検索文字列を終了する
●
「union all select 」でテーブルの連結を行う
→他のテーブルから値を取り出し連結する
●
「1,sql,1」で1という値とsqlカラムの内容を取り出す
→ちなみに,3つカラムを指定しているのは,そもそものusersと数を合わせ
ているため
●
「from sqlite_master;--」でsqliteの各種データを持つテーブルにアクセス
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
原因
●
XSSと同様で文字列に対して適切にエスケープされていない
→なお,XSSへのエスケープとSQLへのエスケープは全く違う
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
対策
●
適切なエスケープを行いましょう
→SQLを書かなくても扱えるようなものを利用すると良いです
→でなくても,プリペアードステートメントの利用を!
→オレオレエスケープは絶対にダメ!
●
SQL文を覚えることも大切です
→攻撃が分かれば対策も取れるはず
TDU CTF 2014 Satellite in ConoHa
HashTag - #tductf
……攻撃者としては
●
SQLにとって特別な文字を入力しその反応を見るのが良いです
→多くの場合「'」や「"」 ……でエラーが出る はず.
● どのデータベースを利用しているか調べるのも重要です
→コメント文字の扱いを見るのも良いです.
sqliite → 「#」はコメントにならない(エラーにならない)
mysql → 「#」はコメントになる(エラーになる)

Contenu connexe

Similaire à スコアサーバーに起きた脆弱性で学ぶWebセキュリティ

Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
 
Osc2010 tokyo fall@kaorun
Osc2010 tokyo fall@kaorunOsc2010 tokyo fall@kaorun
Osc2010 tokyo fall@kaorun
Kaoru NAKAMURA
 
20101001 5分でわかるtrac pluginの作り方_slideshare
20101001 5分でわかるtrac pluginの作り方_slideshare20101001 5分でわかるtrac pluginの作り方_slideshare
20101001 5分でわかるtrac pluginの作り方_slideshare
sinsoku listy
 

Similaire à スコアサーバーに起きた脆弱性で学ぶWebセキュリティ (20)

25th nov2014 52thhtml5j
25th nov2014 52thhtml5j25th nov2014 52thhtml5j
25th nov2014 52thhtml5j
 
クラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampクラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccamp
 
Introduce Groovy 2.3 trait
Introduce Groovy 2.3 trait Introduce Groovy 2.3 trait
Introduce Groovy 2.3 trait
 
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作るgumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
 
20140903groonga発表資料
20140903groonga発表資料20140903groonga発表資料
20140903groonga発表資料
 
雰囲気実装を少し抜け出そう!RFCからPHPの実装ま でを考えるタイムゾーンとサマータイム!!!
雰囲気実装を少し抜け出そう!RFCからPHPの実装ま でを考えるタイムゾーンとサマータイム!!!雰囲気実装を少し抜け出そう!RFCからPHPの実装ま でを考えるタイムゾーンとサマータイム!!!
雰囲気実装を少し抜け出そう!RFCからPHPの実装ま でを考えるタイムゾーンとサマータイム!!!
 
StreamingAPIを使用したTwitter Bot @waketi の紹介
StreamingAPIを使用したTwitter Bot @waketi の紹介 StreamingAPIを使用したTwitter Bot @waketi の紹介
StreamingAPIを使用したTwitter Bot @waketi の紹介
 
Node.js with WebRTC DataChannel
Node.js with WebRTC DataChannelNode.js with WebRTC DataChannel
Node.js with WebRTC DataChannel
 
Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackTwitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hack
 
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ uv4l-webrtc 軽くハックしてみたよ!
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ    uv4l-webrtc 軽くハックしてみたよ!ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ    uv4l-webrtc 軽くハックしてみたよ!
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ uv4l-webrtc 軽くハックしてみたよ!
 
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみた
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみたMTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみた
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみた
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
 
WebRTC開発者向けプラットフォーム SkyWayの裏側
WebRTC開発者向けプラットフォーム SkyWayの裏側WebRTC開発者向けプラットフォーム SkyWayの裏側
WebRTC開発者向けプラットフォーム SkyWayの裏側
 
eBPFを用いたトレーシングについて
eBPFを用いたトレーシングについてeBPFを用いたトレーシングについて
eBPFを用いたトレーシングについて
 
Osc2010 tokyo fall@kaorun
Osc2010 tokyo fall@kaorunOsc2010 tokyo fall@kaorun
Osc2010 tokyo fall@kaorun
 
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよSerf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんか
 
ぼくのかんがえたさいきょうのついったーくらいあんと
ぼくのかんがえたさいきょうのついったーくらいあんとぼくのかんがえたさいきょうのついったーくらいあんと
ぼくのかんがえたさいきょうのついったーくらいあんと
 
20101001 5分でわかるtrac pluginの作り方_slideshare
20101001 5分でわかるtrac pluginの作り方_slideshare20101001 5分でわかるtrac pluginの作り方_slideshare
20101001 5分でわかるtrac pluginの作り方_slideshare
 
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
 

Plus de nomuken (6)

CTFトラックの報告的なもの(公開版)
CTFトラックの報告的なもの(公開版)CTFトラックの報告的なもの(公開版)
CTFトラックの報告的なもの(公開版)
 
Dendai is Secure?
Dendai is Secure?Dendai is Secure?
Dendai is Secure?
 
TDU CTFのお話
TDU CTFのお話TDU CTFのお話
TDU CTFのお話
 
Tductf
TductfTductf
Tductf
 
オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)
 
自作CTFについて考えてみる
自作CTFについて考えてみる自作CTFについて考えてみる
自作CTFについて考えてみる
 

Dernier

Dernier (10)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

スコアサーバーに起きた脆弱性で学ぶWebセキュリティ

  • 1. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 練習問題のScoreServerで学ぶ ウェブセキュリティ @nomuken
  • 2. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf Agenda(このスライドの) 1. 自己紹介 2. 楽しいインターネット 3. Webの脆弱性のお話 4. 練習問題の答え合わせ
  • 3. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 1.自己紹介
  • 4. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 自己紹介 ● Nomuken (@nomuken) ● ArchLinuxとごちうさと初音ミクが好き ● CTFとか面白いけどマジわからない系男子 ● 調子乗ってmlabCTFやったらTDUCTFの主催になっていた ● 大学2年生 (あと3日で3年生) ● 好きな脆弱性はディレクトリトラバーサルとOSコマンドイン ジェクション
  • 5. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 2.楽しいインターネット
  • 6. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 楽しいインターネット
  • 7. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 楽しいインターネット ● 練習問題を公開して沢山のアクセスが来ました ● GEKI-YABA
  • 8. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 来訪者の皆様 ● ShellShock ● 機械的なアクセス
  • 9. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 来訪者の皆様 ● 何らかのペネトレーションツール(と思われる物)の利用
  • 10. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 来訪者の皆様 ● SQLi勢(とXSS勢)
  • 11. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 来訪者の皆様 ● alert勢
  • 12. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 来訪者の皆様 ● CSRF勢
  • 13. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 来訪者の皆様 ● admin勢
  • 14. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf _人人人人人人人人人人人人人_ > 後半,同じ人じゃねぇか <  ̄Y Y Y Y Y Y Y Y Y Y Y Y Y^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ̄
  • 15. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 感想 ● …… ……あぁ 狙われているなぁ ● 攻撃成立しちゃってんじゃねぇか,やだー
  • 16. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 極めつけ ● "GET /question/?%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E9%96%8B %E5%82%AC%E3%80%81%E3%81%8A%E5%BE %85%E3%81%A1%E3%81%97%E3%81%A6%E3%81%8A%E3%82%8A%E3%81%BE %E3%81%99%E2%98%86%EF%BC%88%E3%82%9D%CF%89%E3%83%BB%EF %BC%89v HTTP/1.1"
  • 17. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf ……つまり ● 「リモート開催、お待ちしております☆(ゝω・)v」 ● 結構スマートかつさり気なくてカッコいい ● ……もしかして?
  • 18. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 余談 ● 載せてるとキリがない量で攻撃がありました
  • 19. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf ……というわけで ● スコアサーバーのWebっぽい脆弱性からXSSとSQLiについて話 します ● やぎはしゅ先生によるXSSとSQLiの話はCTF4bで聞こう!
  • 20. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 3.Webの脆弱性のお話
  • 21. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf ……の前に ● 攻撃者は何がしたい? ● 例えば,先ほど見せた攻撃は何のためにする?
  • 22. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 攻撃者の目的(Web関連において) ● サーバーを奪取する →自分の操作を増幅してくれるbotにしたい,bitcoinマイニングに使 ……いたい ● 情報を奪いたい ……→クレジットカード番号,個人情報,パスワード ● 実力誇示 →これをする実力があると見せつける(過激派組織に多い?)
  • 23. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf ……目的を達成するために ● ” ”ご存知の通り, 作者の粗 を探し,そこを踏み台にする. →その粗が「XSS」だったり「SQLi ……」だったり ● その粗こそ脆弱性
  • 24. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf XSS
  • 25. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf XSS(クロスサイトスクリプティング) ● javascriptでよしなにする ● 解説はどう考えたってxss.moeな人がやるべきかもしれない
  • 26. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf どういったものか ● ウェブページ内で好きなjavascriptが実行できる. →つまりブラウザでできることは大抵できる ● 目的としては,ページの書き換え,Cookieを盗んだり等
  • 27. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf ……ところで ● これ好きな人いますか?(例をphpで書きます)
  • 28. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf _人人人人人人人人_ > 目を背けない <  ̄Y^Y^Y^Y^Y^Y^Y ̄
  • 29. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf phpのコード (略) <body> <h1>xss</h1> <hr> <form method="get"> <input type="text" name="s" value="<?php echo $_GET["s"];?>"> <button type="submit">Go</button> </form> </body> (略)
  • 30. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf ……つまり ● GETで与えられたパラメータ(?s=hoge)をvalueに表示するプ ログラム. →検索機能とかがあるけれどサイトでよくある ● 適切にエスケープされてないがためにhtmlコードを渡すことが できる →javascriptを埋め込める
  • 31. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf こんな値で送信する ● 「” autofocus onfocus=”alert('yagihashoo');」 →送信してページを開いた瞬間にXSSと表示される
  • 32. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf Demo
  • 33. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 原理 ● <input type="text" name="s" value=" $_GET['s'] ">に注目 ● 先ほどの入力を含めると <input (略)value="" autofocus onfocus="alert('yagihashoo');">
  • 34. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 出来上がったものを考える ● valueの中身は今のところ興味ないのでひとまず終了("を入れ る)する ● autofocusでロードするとすぐに選択されるようになっている ● イベントハンドラのonfocusで,対象のフォームが選択された 時,任意のjavascriptを実行する
  • 35. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf ……結果的に ● ページ開いた瞬間にjavascript実行できちゃいますね ● ちなみに,単純にscriptタグを埋め込むことも出来ます. → "><script>alert('yagihashoo');</script><!--
  • 36. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 原因 ● 文字のエスケープ漏れによって発生します. →適切にエスケープをしましょう →でも,オレオレなエスケープ関数は作らないこと.漏れが あったらどうする?
  • 37. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf ……攻撃者的には ● フォームに「特別な意味を持つ文字」を送信して表示された結 果からどのような文字を入れるべきかを考えます. 平均的な一般(?)攻撃者 " ' >< & ... &#039; &quot; &gt; &lt; &amp;
  • 38. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf まとめ ● XSSとはページにjavascriptを埋め込めてしまう脆弱性 ● 原因はユーザの入力文字列をエスケープできていないこと ● そもそもあるライブラリもしくは,フレームワークを利用して 安全にエスケープしていきましょう ● ユーザーはほぼ全員が敵と考えるほうが無難か?
  • 39. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf SQLi
  • 40. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf SQLi(SQLインジェクション) ● データベースを扱うSQLに起因する脆弱性です. ● xss.moeなh(ry
  • 41. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf どういったものか ● 存在するSQL文を全く別の意味に変え,想定するものとは別の 操作を出来てしまう脆弱性 ● 目的としては,脆弱なWebアプリからユーザとパスワードを盗 ……む,認証を通過する 等
  • 42. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf phpのコード $sql = "SELECT * FROM users WHERE id='".$_GET['s']."';"; $stmt = $pdo->query($sql); foreach( $r as $stmt){ $article['title'] = $s['title'] ... }
  • 43. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf ……つまり ● 一応記事を検索するプログラムのつもり.タイトルからキー ワードが含まれる記事を探してきて表示をする. ● 適切にエスケープがされていないため,SQL文を改変すること ができる.
  • 44. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf こんな値を送信する ● 「' union all select 1,sql,1 from sqlite_master;--」 →データベース内に登録されている全てが表示された後,sql文 が表示される. ● なお,ここではsqliteを想定します
  • 45. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf Demo
  • 46. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 何が起きた? ● クエリに注目 SELECT * FROM users WHERE id='' union all select 1,sql,1 from sqlite_master;--'; ● 任意のテーブルからデータを取り出せた!
  • 47. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 解説 ● 「' 」でidに対する検索文字列を終了する ● 「union all select 」でテーブルの連結を行う →他のテーブルから値を取り出し連結する ● 「1,sql,1」で1という値とsqlカラムの内容を取り出す →ちなみに,3つカラムを指定しているのは,そもそものusersと数を合わせ ているため ● 「from sqlite_master;--」でsqliteの各種データを持つテーブルにアクセス
  • 48. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 原因 ● XSSと同様で文字列に対して適切にエスケープされていない →なお,XSSへのエスケープとSQLへのエスケープは全く違う
  • 49. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf 対策 ● 適切なエスケープを行いましょう →SQLを書かなくても扱えるようなものを利用すると良いです →でなくても,プリペアードステートメントの利用を! →オレオレエスケープは絶対にダメ! ● SQL文を覚えることも大切です →攻撃が分かれば対策も取れるはず
  • 50. TDU CTF 2014 Satellite in ConoHa HashTag - #tductf ……攻撃者としては ● SQLにとって特別な文字を入力しその反応を見るのが良いです →多くの場合「'」や「"」 ……でエラーが出る はず. ● どのデータベースを利用しているか調べるのも重要です →コメント文字の扱いを見るのも良いです. sqliite → 「#」はコメントにならない(エラーにならない) mysql → 「#」はコメントになる(エラーになる)