SlideShare a Scribd company logo
1 of 25
Download to read offline
ひげで学ぶ
Webアプリケーションに潜むリスク
OSC2016 Hokkaido 2016/06/18
担当:北海道情報セキュリティ勉強会(せきゅぽろ)
岸谷 隆久
使用させて頂いたスライドテンプレート:AZUSA 2号
( https://wslash.com/?p=5888 )
自己紹介
• 北海道札幌市在住
• せきゅぽろの方から来ました
• 普段は主にWebアプリケーションなどの
脆弱性診断をしている者です
活用範囲が広がり続けるWeb系技術
• Webアプリケーション(当然)
• スマートフォンや各種デバイス向けのア
プリやサーバサイドAPI(これも自然な流
れ)
• サーバソフトウェア(Node.js 等)
• デスクトップアプリケーション
(Electron、Adobe AIR 等)
不正アクセス対策を怠ると思わぬ事態に…
• 最近Webアプリケーションへの不正アクセス
として発表された事例
– 日テレ
– J-WAVE
– avex
• ECサイト開発を受注した会社がSQLイン
ジェクション対策を怠ったとして2,262万円
の損害賠償を命じられる判決も…
SQLインジェクション対策もれの責任を開発会社に問う判決 | 徳
丸浩の日記 http://blog.tokumaru.org/2015/01/sql.html
何はなくとも
安全なウェブサイトの作り方:IPA 独立行
政法人 情報処理推進機構
https://www.ipa.go.jp/security/vuln/we
bsecurity.html
入力値の処理に起因する問題
• OSコマンドインジェクション
• SQLインジェクション
etc…
細々と生き残る、OSコマンド実行につながる脆弱性
• 脆弱性が存在すれば最大級に危険(サービス
利用者にシェルアクセスを提供してしまう)
• コード内でのシェル(など)の呼び出しに起
因する旧来の典型的なタイプはほとんど見ら
れなくなったが、多少異なる形で遭遇するこ
とがある
※本日お話するのは「スクリプトインジェクション」や
「テンプレートインジェクション」と呼べるタイプの問
題ですが、ここでは細かく区別しません
典型的なOSコマンドインジェクション脆弱性の例
※「安全なウェブサイトの作り方」より引用
※詳細や対策については「安全なウェブサイトの作り
方」をご覧になることをお勧めします
$from =~ s/"|;|'|<|>||| //ig;
open(MAIL, "|/usr/sbin/sendmail -t -i -f $from");
• Perl の open 関数で Sendmail にパラメータを渡して実行する
• 1行目で $from から危険そうな文字を除去しているようだが…?
• バッククォート文字が使用できるため「`touch[0x09]/tmp/foo`」(ここ
で「[0x09]」は水平タブを表す)でコマンドが実行される例
テストしておきたい入力値は?
クォート文字?( ’ や “ や `)
セミコロン?( ; )
ひげ
( :-{|
curly brackets
{ }
Templating
• { something }
• {{ something }}
• ${ something }
• #{ something }
etc…
• テンプレートエンジン等のメタ文字としてよ
く使用され、中の文字列を式として評価する
記法に用いられるケースが多い
• “mustache”(口ひげ)というそのものずば
りな名前のテンプレートエンジンも
例:Swig (Node.js)
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<ul>
{% for user in users -%}
<li>
氏名:{{ user.name }}、
年齢:{{ user.age }}
</li>
{%- endfor %}
</ul>
</body>
</html>
<html>
<head>
<title>会員情報</title>
</head>
<body>
<ul>
<li>氏名:山田太郎、年齢:20</li>
<li>氏名:佐藤次郎、年齢:30</li>
<li>氏名:鈴木三郎、年齢:40</li>
</ul>
</body>
</html>
テンプレートファイル 処理結果
ビューとロジックの分離
ご注意ください
• 本資料で紹介する内容を他者の管理する
コンピュータに対し許可なく行うと不正
アクセス行為(違法)となる可能性があ
ります。絶対に行わないでください。
• 自分が管理するコンピュータ上で実験す
る場合、他人がアクセス可能な状態にな
らないようご注意ください。
脆弱性について見る前に
• 新しい攻撃手法というわけではありませ
ん
• 特定のテンプレートエンジンやフレーム
ワーク、言語等に脆弱性があるというお
話ではありません。
DEMO 1
Swig / Express (Node.js)
原因
router.get('/', function(req, res, next) {
users.find().toArray(function(err, users) {
// format
var tmpl = '{# some templates #}';
users.forEach(function(user){
tmpl += escapeHTML(user.name) + '{# some templates #}';
});
res.send(swig.render(tmpl));
});
});
脆弱なコードの例
原因
router.get('/', function(req, res, next) {
users.find().toArray(function(err, users) {
// format
var tmpl = '{# some templates #}';
users.forEach(function(user){
tmpl += escapeHTML(user.name) + '{# some templates #}';
});
res.send(swig.render(tmpl));
});
});
コード内での文字列連結によるテンプレート生成
user.name が {{ javascript code }} という値だったら
脆弱なコードの例
そんなコード書く?
ない訳ではないようです。以下は想像した
発生原因です。
• ちょっとフォーマットする程度だしコード内で
完結したい
• データ内の文字列加工や合成のような処理が必
要な流れで
• エスケープ処理等により実際には問題のない箇
所からの部分的流用
対策
router.get('/', function(req, res, next) {
users.find().toArray(function(err, users) {
res.render('tmpl', { title:'Hello World!', users:users });
});
});
本来はテンプレートに
オブジェクトを渡して
レンダーすればよく、
{{ }} が入ってきても
問題なし
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<ul>
{% for user in users -%}
<li>
氏名:{{ user.name }}、
年齢:{{ user.age }}
</li>
{%- endfor %}
</ul>
</body>
</html>
テンプレート名 テンプレートに渡すオブジェクト
テンプレートファイル
DEMO 2
Haml / Ruby on Rails
原因
文字列連結によるテンプレート生成
(関連)レンダーオプションに関係する脆弱性の話題
• Ruby on Railsの潜在的なリモートスクリプトインジェクション脆弱性CVE-
2016-2098 | 徳丸浩の日記
http://blog.tokumaru.org/2016/06/ruby-on-railscve-2016-2098.html
• Ruby on Rails 脆弱性解説 - CVE-2016-2098 - DARK MATTER
http://io.cyberdefense.jp/entry/2016/06/09/Ruby_on_Rails_%E8%84%8
6%E5%BC%B1%E6%80%A7%E8%A7%A3%E8%AA%AC_-_CVE-2016-
2098
class TestController < ApplicationController
def index
@tmpl = "-# some templates rn" 
+ CGI.escapeHTML(params[:str]) 
+ "rn-# some templates"
render :inline => @tmpl, :type => 'haml'
end
end
脆弱なコードの例
DEMO (OMAKE)
AngularJS
公式見解
• https://docs.angularjs.org/guide/secu
rity
• “Do not mix client and server
templates” といったようなことが推奨さ
れている
補足
• curly brackets に着目しましたが、テンプレー
トエンジン等に応じ他にも様々な文字(列)が
メタ文字として使用されています。ご利用のプ
ロダクトに合わせてご確認ください。
まとめ
• 利用するものの使い方を理解して、お作
法に従い安全に使用しましょう
• ライブラリ等は適宜安全なバージョンに
更新しましょう
• 情報セキュリティに興味のある方はぜひ
せきゅぽろへ
http://secpolo.techtalk.jp/

More Related Content

Viewers also liked

[CEDEC2017] LINEゲームのセキュリティ診断手法
[CEDEC2017] LINEゲームのセキュリティ診断手法[CEDEC2017] LINEゲームのセキュリティ診断手法
[CEDEC2017] LINEゲームのセキュリティ診断手法LINE Corporation
 
Management for Security Life Cycle (日本語版)
Management for Security Life Cycle (日本語版)Management for Security Life Cycle (日本語版)
Management for Security Life Cycle (日本語版)Akitsugu Ito
 
Ipsj77フォレンジック研究動向
Ipsj77フォレンジック研究動向Ipsj77フォレンジック研究動向
Ipsj77フォレンジック研究動向UEHARA, Tetsutaro
 
ノリとその場の勢いでPocを作った話
ノリとその場の勢いでPocを作った話ノリとその場の勢いでPocを作った話
ノリとその場の勢いでPocを作った話zaki4649
 
徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティHiroshi Tokumaru
 
CpawCTF 勉強会 Network
CpawCTF 勉強会 NetworkCpawCTF 勉強会 Network
CpawCTF 勉強会 NetworkTakaaki Hoyo
 
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010Sen Ueno
 
Metasploitでペネトレーションテスト
MetasploitでペネトレーションテストMetasploitでペネトレーションテスト
Metasploitでペネトレーションテストsuper_a1ice
 
SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向shigeki_ohtsu
 

Viewers also liked (11)

[CEDEC2017] LINEゲームのセキュリティ診断手法
[CEDEC2017] LINEゲームのセキュリティ診断手法[CEDEC2017] LINEゲームのセキュリティ診断手法
[CEDEC2017] LINEゲームのセキュリティ診断手法
 
[BurpSuiteJapan]Burp Suite回答編
[BurpSuiteJapan]Burp Suite回答編[BurpSuiteJapan]Burp Suite回答編
[BurpSuiteJapan]Burp Suite回答編
 
Management for Security Life Cycle (日本語版)
Management for Security Life Cycle (日本語版)Management for Security Life Cycle (日本語版)
Management for Security Life Cycle (日本語版)
 
Ipsj77フォレンジック研究動向
Ipsj77フォレンジック研究動向Ipsj77フォレンジック研究動向
Ipsj77フォレンジック研究動向
 
ノリとその場の勢いでPocを作った話
ノリとその場の勢いでPocを作った話ノリとその場の勢いでPocを作った話
ノリとその場の勢いでPocを作った話
 
徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ
 
[AVTOKYO 2017] What is red team?
[AVTOKYO 2017] What is red team?[AVTOKYO 2017] What is red team?
[AVTOKYO 2017] What is red team?
 
CpawCTF 勉強会 Network
CpawCTF 勉強会 NetworkCpawCTF 勉強会 Network
CpawCTF 勉強会 Network
 
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
 
Metasploitでペネトレーションテスト
MetasploitでペネトレーションテストMetasploitでペネトレーションテスト
Metasploitでペネトレーションテスト
 
SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向
 

Similar to osc2016do ひげで学ぶWebアプリケーションに潜むリスク

「最近のwebアプリケーションの脆弱性やそれを悪用する攻撃の動向」OWASP Kansai
「最近のwebアプリケーションの脆弱性やそれを悪用する攻撃の動向」OWASP Kansai「最近のwebアプリケーションの脆弱性やそれを悪用する攻撃の動向」OWASP Kansai
「最近のwebアプリケーションの脆弱性やそれを悪用する攻撃の動向」OWASP KansaiOWASP Kansai
 
コミュニケーションソフトウェアを創るということ
コミュニケーションソフトウェアを創るということコミュニケーションソフトウェアを創るということ
コミュニケーションソフトウェアを創るということKazuho Oku
 
第34回サイバーワールド研究会20161216
第34回サイバーワールド研究会20161216第34回サイバーワールド研究会20161216
第34回サイバーワールド研究会20161216義広 河野
 
20111102 研究室紹介(横田研)
20111102 研究室紹介(横田研)20111102 研究室紹介(横田研)
20111102 研究室紹介(横田研)Takeo Kunishima
 
サイバーセキュリティ向上に向けたAI技術の利活用
サイバーセキュリティ向上に向けたAI技術の利活用サイバーセキュリティ向上に向けたAI技術の利活用
サイバーセキュリティ向上に向けたAI技術の利活用Takeshi Takahashi
 
CasperJSを使って任意のWebサイトを電子書籍化する方法
CasperJSを使って任意のWebサイトを電子書籍化する方法CasperJSを使って任意のWebサイトを電子書籍化する方法
CasperJSを使って任意のWebサイトを電子書籍化する方法Masayuki Isobe
 
20180426 不正指令電磁的記録に関する罪とオンプレおよびクラウドにおけるWebネット型インシデントレスポンスについて
20180426 不正指令電磁的記録に関する罪とオンプレおよびクラウドにおけるWebネット型インシデントレスポンスについて20180426 不正指令電磁的記録に関する罪とオンプレおよびクラウドにおけるWebネット型インシデントレスポンスについて
20180426 不正指令電磁的記録に関する罪とオンプレおよびクラウドにおけるWebネット型インシデントレスポンスについてTyphon 666
 
国立51高専1法人のスケールメリットII ~情報セキュリ ティ監査、e-learning・標的型攻撃による情報倫理教育、ソフト・回線の共同調達~
国立51高専1法人のスケールメリットII ~情報セキュリ ティ監査、e-learning・標的型攻撃による情報倫理教育、ソフト・回線の共同調達~国立51高専1法人のスケールメリットII ~情報セキュリ ティ監査、e-learning・標的型攻撃による情報倫理教育、ソフト・回線の共同調達~
国立51高専1法人のスケールメリットII ~情報セキュリ ティ監査、e-learning・標的型攻撃による情報倫理教育、ソフト・回線の共同調達~Ismail Arai
 
Device WebAPI 20160407
Device WebAPI 20160407Device WebAPI 20160407
Device WebAPI 20160407陽平 山口
 
情報セキュリティCAS 第五十三回放送用スライド
情報セキュリティCAS 第五十三回放送用スライド情報セキュリティCAS 第五十三回放送用スライド
情報セキュリティCAS 第五十三回放送用スライドKumasan, LLC.
 
情報セキュリティCAS 第五十五回放送用スライド
情報セキュリティCAS 第五十五回放送用スライド情報セキュリティCAS 第五十五回放送用スライド
情報セキュリティCAS 第五十五回放送用スライドKumasan, LLC.
 
~2018年Webセキュリティ最前線セミナー~ 今や従来通りの対策ではWebセキュリティが万全ではないこれだけの理由
~2018年Webセキュリティ最前線セミナー~ 今や従来通りの対策ではWebセキュリティが万全ではないこれだけの理由~2018年Webセキュリティ最前線セミナー~ 今や従来通りの対策ではWebセキュリティが万全ではないこれだけの理由
~2018年Webセキュリティ最前線セミナー~ 今や従来通りの対策ではWebセキュリティが万全ではないこれだけの理由グローバルセキュリティエキスパート株式会社(GSX)
 
PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料Monaca
 
Owasp evening : Privacy x Design with OWASP
Owasp evening : Privacy x Design with OWASPOwasp evening : Privacy x Design with OWASP
Owasp evening : Privacy x Design with OWASPRiotaro OKADA
 
20190208 脆弱性と共生するには
20190208 脆弱性と共生するには20190208 脆弱性と共生するには
20190208 脆弱性と共生するにはOWASP Nagoya
 
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Yoshiyuki Nakamura
 
20150912わんくま大阪-Firefox OSの「いま」と「これから」
20150912わんくま大阪-Firefox OSの「いま」と「これから」20150912わんくま大阪-Firefox OSの「いま」と「これから」
20150912わんくま大阪-Firefox OSの「いま」と「これから」Takahiro Uemura
 
アジャイル品質セミナー・アジャイル開発イテレーション・学習
アジャイル品質セミナー・アジャイル開発イテレーション・学習アジャイル品質セミナー・アジャイル開発イテレーション・学習
アジャイル品質セミナー・アジャイル開発イテレーション・学習Hironori Washizaki
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Saki Homma
 

Similar to osc2016do ひげで学ぶWebアプリケーションに潜むリスク (20)

「最近のwebアプリケーションの脆弱性やそれを悪用する攻撃の動向」OWASP Kansai
「最近のwebアプリケーションの脆弱性やそれを悪用する攻撃の動向」OWASP Kansai「最近のwebアプリケーションの脆弱性やそれを悪用する攻撃の動向」OWASP Kansai
「最近のwebアプリケーションの脆弱性やそれを悪用する攻撃の動向」OWASP Kansai
 
コミュニケーションソフトウェアを創るということ
コミュニケーションソフトウェアを創るということコミュニケーションソフトウェアを創るということ
コミュニケーションソフトウェアを創るということ
 
第34回サイバーワールド研究会20161216
第34回サイバーワールド研究会20161216第34回サイバーワールド研究会20161216
第34回サイバーワールド研究会20161216
 
20111102 研究室紹介(横田研)
20111102 研究室紹介(横田研)20111102 研究室紹介(横田研)
20111102 研究室紹介(横田研)
 
サイバーセキュリティ向上に向けたAI技術の利活用
サイバーセキュリティ向上に向けたAI技術の利活用サイバーセキュリティ向上に向けたAI技術の利活用
サイバーセキュリティ向上に向けたAI技術の利活用
 
CasperJSを使って任意のWebサイトを電子書籍化する方法
CasperJSを使って任意のWebサイトを電子書籍化する方法CasperJSを使って任意のWebサイトを電子書籍化する方法
CasperJSを使って任意のWebサイトを電子書籍化する方法
 
20180426 不正指令電磁的記録に関する罪とオンプレおよびクラウドにおけるWebネット型インシデントレスポンスについて
20180426 不正指令電磁的記録に関する罪とオンプレおよびクラウドにおけるWebネット型インシデントレスポンスについて20180426 不正指令電磁的記録に関する罪とオンプレおよびクラウドにおけるWebネット型インシデントレスポンスについて
20180426 不正指令電磁的記録に関する罪とオンプレおよびクラウドにおけるWebネット型インシデントレスポンスについて
 
国立51高専1法人のスケールメリットII ~情報セキュリ ティ監査、e-learning・標的型攻撃による情報倫理教育、ソフト・回線の共同調達~
国立51高専1法人のスケールメリットII ~情報セキュリ ティ監査、e-learning・標的型攻撃による情報倫理教育、ソフト・回線の共同調達~国立51高専1法人のスケールメリットII ~情報セキュリ ティ監査、e-learning・標的型攻撃による情報倫理教育、ソフト・回線の共同調達~
国立51高専1法人のスケールメリットII ~情報セキュリ ティ監査、e-learning・標的型攻撃による情報倫理教育、ソフト・回線の共同調達~
 
Device WebAPI 20160407
Device WebAPI 20160407Device WebAPI 20160407
Device WebAPI 20160407
 
情報セキュリティCAS 第五十三回放送用スライド
情報セキュリティCAS 第五十三回放送用スライド情報セキュリティCAS 第五十三回放送用スライド
情報セキュリティCAS 第五十三回放送用スライド
 
情報セキュリティCAS 第五十五回放送用スライド
情報セキュリティCAS 第五十五回放送用スライド情報セキュリティCAS 第五十五回放送用スライド
情報セキュリティCAS 第五十五回放送用スライド
 
~2018年Webセキュリティ最前線セミナー~ 今や従来通りの対策ではWebセキュリティが万全ではないこれだけの理由
~2018年Webセキュリティ最前線セミナー~ 今や従来通りの対策ではWebセキュリティが万全ではないこれだけの理由~2018年Webセキュリティ最前線セミナー~ 今や従来通りの対策ではWebセキュリティが万全ではないこれだけの理由
~2018年Webセキュリティ最前線セミナー~ 今や従来通りの対策ではWebセキュリティが万全ではないこれだけの理由
 
PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料
 
Mix Leap 0214 security
Mix Leap 0214 securityMix Leap 0214 security
Mix Leap 0214 security
 
Owasp evening : Privacy x Design with OWASP
Owasp evening : Privacy x Design with OWASPOwasp evening : Privacy x Design with OWASP
Owasp evening : Privacy x Design with OWASP
 
20190208 脆弱性と共生するには
20190208 脆弱性と共生するには20190208 脆弱性と共生するには
20190208 脆弱性と共生するには
 
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記
 
20150912わんくま大阪-Firefox OSの「いま」と「これから」
20150912わんくま大阪-Firefox OSの「いま」と「これから」20150912わんくま大阪-Firefox OSの「いま」と「これから」
20150912わんくま大阪-Firefox OSの「いま」と「これから」
 
アジャイル品質セミナー・アジャイル開発イテレーション・学習
アジャイル品質セミナー・アジャイル開発イテレーション・学習アジャイル品質セミナー・アジャイル開発イテレーション・学習
アジャイル品質セミナー・アジャイル開発イテレーション・学習
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
 

osc2016do ひげで学ぶWebアプリケーションに潜むリスク