SlideShare ist ein Scribd-Unternehmen logo
1 von 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 → 「#」はコメントになる(エラーになる)

Weitere ähnliche Inhalte

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

クラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampクラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampMasahiro NAKAYAMA
 
Introduce Groovy 2.3 trait
Introduce Groovy 2.3 trait Introduce Groovy 2.3 trait
Introduce Groovy 2.3 trait Uehara Junji
 
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作るgumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作るgumilab
 
20140903groonga発表資料
20140903groonga発表資料20140903groonga発表資料
20140903groonga発表資料Hironobu Saitoh
 
雰囲気実装を少し抜け出そう!RFCからPHPの実装ま でを考えるタイムゾーンとサマータイム!!!
雰囲気実装を少し抜け出そう!RFCからPHPの実装ま でを考えるタイムゾーンとサマータイム!!!雰囲気実装を少し抜け出そう!RFCからPHPの実装ま でを考えるタイムゾーンとサマータイム!!!
雰囲気実装を少し抜け出そう!RFCからPHPの実装ま でを考えるタイムゾーンとサマータイム!!!Suguru Ohki
 
StreamingAPIを使用したTwitter Bot @waketi の紹介
StreamingAPIを使用したTwitter Bot @waketi の紹介 StreamingAPIを使用したTwitter Bot @waketi の紹介
StreamingAPIを使用したTwitter Bot @waketi の紹介 kaiba d
 
Node.js with WebRTC DataChannel
Node.js with WebRTC DataChannelNode.js with WebRTC DataChannel
Node.js with WebRTC DataChannelmganeko
 
Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackTwitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackkimukou_26 Kimukou
 
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ uv4l-webrtc 軽くハックしてみたよ!
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ    uv4l-webrtc 軽くハックしてみたよ!ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ    uv4l-webrtc 軽くハックしてみたよ!
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ uv4l-webrtc 軽くハックしてみたよ!Kensaku Komatsu
 
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみた
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみたMTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみた
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみたKatsuhiro Endo
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方Yoshifumi Kawai
 
WebRTC開発者向けプラットフォーム SkyWayの裏側
WebRTC開発者向けプラットフォーム SkyWayの裏側WebRTC開発者向けプラットフォーム SkyWayの裏側
WebRTC開発者向けプラットフォーム SkyWayの裏側Yusuke Naka
 
Osc2010 tokyo fall@kaorun
Osc2010 tokyo fall@kaorunOsc2010 tokyo fall@kaorun
Osc2010 tokyo fall@kaorunKaoru NAKAMURA
 
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよSerf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよMasahito Zembutsu
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんかcch-robo
 
ぼくのかんがえたさいきょうのついったーくらいあんと
ぼくのかんがえたさいきょうのついったーくらいあんとぼくのかんがえたさいきょうのついったーくらいあんと
ぼくのかんがえたさいきょうのついったーくらいあんとYutaka Tsumori
 
20101001 5分でわかるtrac pluginの作り方_slideshare
20101001 5分でわかるtrac pluginの作り方_slideshare20101001 5分でわかるtrac pluginの作り方_slideshare
20101001 5分でわかるtrac pluginの作り方_slidesharesinsoku listy
 
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)Hiro H.
 

Ähnlich wie スコアサーバーに起きた脆弱性で学ぶ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)
 

Mehr von nomuken

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

Mehr von 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について考えてみる
 

Kürzlich hochgeladen

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Kürzlich hochgeladen (9)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

スコアサーバーに起きた脆弱性で学ぶ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 → 「#」はコメントになる(エラーになる)