SlideShare una empresa de Scribd logo
1 de 28
学生から見た
OWASP Top10
A1:2017-インジェクション
2018/06/01
自己紹介
• 小石倉 広樹(こいしくら ひろき)
• Facebook: https://www. facebook.com/hiroki.koishikura
• Twitter : @crazytoto795
• メール : crazytoto795@gmail.com
➢ 名古屋工学院専門学校 情報総合学科 4年
➢ OWASP Nagoya Board Member
WHO is
• これからセキュリティを学びたい方
• セキュリティに興味が出てきた方
Webアプリケーションの脆弱性のうち、OWASP Top10で常に1位をキープしている
「インジェクション」について、学生の目線で解説します。
Agenda
1.インジェクションとは?
2.OWASP Top10 A1:2017-インジェクション
3.学生が活用した OWASP Top10 A1:2017
4.SQLインジェクションのデモ
5.おわりに
注意事項
• 脆弱性テストは、インターネットに接続していないロ
ーカル環境で行ってください。
特に、インターネット上のサイトに対し、興味本位で
の脆弱性テストは、絶対にしないでください。
Agenda
1.インジェクションとは?
2.OWASP Top10 A1:2017-インジェクション
3.学生が活用した OWASP Top10 A1:2017
4.SQLインジェクションのデモ
5.おわりに
1.インジェクションとは
インジェクション攻撃とは、コンピュータプログラムが無効なデータを処理し
た場合に出現するバグを、攻撃者が悪用し不正な命令を実行する攻撃手法であ
る。 出典:Wikipedia
SQLインジェクション、NoSQLインジェクション、OSコマンドインジェクシ
ョン、LDAPインジェクションといったインジェクションに関する脆弱性は、
コマンドやクエリの一部として信頼されないデータが送信される場合に発生し
ます。攻撃コードはインタープリタを騙し、意図しないコマンドの実行や、権
限を有していないデータへのアクセスを引き起こします。
出典:OWASP Top10
【インジェクション攻撃とは】
【インジェクションの影響】
対策がされていない世界だったら・・・?
• 学生証を出したら名前が違う
• ツイッターで勝手にツイートされていた
• あなたの戸籍が無くなっていた
• おにぎりの値段が5000兆円になっていた
• 学校が全日数欠席になっていた
1.インジェクションとは
Agenda
1.インジェクションとは?
2.OWASP Top10 A1:2017-インジェクション
3.学生が活用した OWASP Top10 A1:2017
4.SQLインジェクションのデモ
5.おわりに
2.OWASP Top10 A1:2017-インジェクション
2.OWASP Top10 A1:2017-インジェクション
2.OWASP Top10 A1:2017-インジェクション
2.OWASP Top10 A1:2017-インジェクション
Agenda
1.インジェクションとは?
2.OWASP Top10 A1:2017-インジェクション
3.学生が活用した OWASP Top10 A1:2017
4.SQLインジェクションのデモ
5.おわりに
3.学生が活用した OWASP Top10 A1:2017
● 会社で作ったツールが、「このままではSQLインジェ
クションを受ける可能性がある」と指摘された。
● 学校で、簡単なログインして認証するユーザーデータ
ベースを保持するチャットツールを公開した所、何者
かによってデータベースを改変されてしまった。
こんなシチュエーションで活用できます!
3.学生が活用した OWASP Top10 A1:2017
課題
SQLインジェクションが可能
なサービスがある。こいつを
セキュアなサービスにして提
出しろ。
プリペアードステートメント
(静的プレースホルダ)を理解する!
3.学生が活用した OWASP Top10 A1:2017
STEP 1 OWASP Top10 A1:2017の分割
①脆弱性の
ポイント
②攻撃シナリオ
の例
④参考資料③防止方法
3.学生が活用した OWASP Top10 A1:2017
STEP 2 ①脆弱性発見のポイント:解読
また、組織は静的ソースコード解析ツール (SAST)と動的アプリケー
ションテストツール (DAST)をCI/CDパイプラインに導入できます。こ
れにより、新たに作られてしまったインジェクション欠陥を稼働環境に
展開する前に検出できます。
次のような状況では、アプリケーションはこの攻撃に対して脆弱です:
• ユーザが提供したデータが、アプリケーションによって検証、フィ
ルタリング、またはサニタイズされない。
• コンテキストに応じたエスケープが行われず、動的クエリまたはパ
ラメータ化されていない呼出しがインタープリタに直接使用される。
• オブジェクト・リレーショナル・マッピング(ORM)の検索パラ
メータ に悪意を持ったデータが使用され、重要なレコードを追加で
抽出し てしまう。
• 悪意を持ったデータを直接または連結して使う。例えば、動的クエ
リ、コマンド、ストアド・プロシージャにおいて構文に悪意を持っ
た データを組み合わせる形でSQLやコマンドが組み立てられる。
より一般的なインジェクションとしては、SQL、NoSQL、OSコマンド、
オブジェクト・リレーショナル・マッピング(ORM)、LDAP、および
EL
式(Expression Language)またはOGNL式(Object Graph
Navigation Library)のインジェクションがあります。コンセプトはすべ
てのインタープリタで同じです。ソースコードをレビューすれば、イン
ジェクションに対してアプリケーションが脆弱であるか最も効果的に検
出できます。そして、すべてのパラメータ、ヘッダー、URL、Cookie、
JSON、SOAP、およびXMLデータ入力の完全な自動テストも効果
的です。
A.脆弱なケース
B.インジェクションの種類
C.テストツール
3.学生が活用した OWASP Top10 A1:2017
STEP 3 ①脆弱性発見のポイント:脆弱性の特定
A.脆弱なケース
次のような状況では、アプリケーションはこの攻撃に対して脆弱です:
• ユーザが提供したデータが、アプリケーションによって検証、フィルタリング、
またはサニタイズされない。
• コンテキストに応じたエスケープが行われず、動的クエリまたはパラメータ化され
ていない呼出しがインタープリタに直接使用される。
• オブジェクト・リレーショナル・マッピング(ORM)の検索パラメータに悪意を
持ったデータが使用され、重要なレコードを追加で抽出し てしまう。
• 悪意を持ったデータを直接または連結して使う。例えば、動的クエリ、コマンド、
ストアド・プロシージャにおいて構文に悪意を持ったデータを組み合わせる形で
SQLやコマンドが組み立てられる。
ここら辺の用語の内容ができてないから攻撃で
きちゃうんじゃね?
3.学生が活用した OWASP Top10 A1:2017
STEP 4 ②攻撃シナリオの例:SQLインジェクションの想定
“where uid = ‘or ‘1’ = ‘1’ -- ’ and pw = ‘ ’“
大変なことになってしまうのでは?
STEP 5 ③防止方法、④参考資料:SQLインジェクションの防止
3.学生が活用した OWASP Top10 A1:2017
STEP 5 ③防止方法、④参考資料:SQLインジェクションの防止
3.学生が活用した OWASP Top10 A1:2017
【要約】
①プリペアードステートメント(静的プレースホルダ)
を使用する。
②ストアドプロシージャを使用する。
③エスケープする。
④バリデーション(妥当性検査)を実施する。
ただし、あくまでも保険と考える。
STEP 5 ③防止方法、④参考資料:SQLインジェクションの防止
3.学生が活用した OWASP Top10 A1:2017
Parameterized Query Examples
SQL Injection is best prevented through the use of parameterized
queries. The following chart demonstrates, with real-world code
samples, how to build parameterized queries in most of the common
web languages. The purpose of these code samples is to
demonstrate to the web developer how to avoid SQL Injection when
building database queries within a web application.
パラメータ化されたクエリの例
SQLインジェクションは、 パラメータ化されたクエリを使用するこ
とで最も効果的に防止されます 。 次の図は、実際のコードサンプ
ルを使用して、一般的なWeb言語のほとんどでパラメータ化された
クエリを構築する方法を示しています。 これらのコードサンプルの
目的は、Webアプリケーション内でデータベースクエリを構築する
際にSQLインジェクションを回避する方法をWeb開発者に実証する
ことです。
STEP 6 対策の実施
3.学生が活用した OWASP Top10 A1:2017
$sql = “select email from account_t where uid = :userid
and pw = :password ”;
$st->bindValue(“:userid”,$uid);
$st->bindValue(“:password”,$pw);
$st->execute();
Agenda
1.インジェクションとは?
2.OWASP Top10 A1:2017-インジェクション
3.学生が活用した OWASP Top10 A1:2017
4.SQLインジェクションのデモ
5.おわりに
4.SQLインジェクションのデモ
OWASP BWA デモ
• OWASP BWA(Broken Web Application)とは
• “既知の脆弱性を持ったいろいろなアプリケーションを稼働させる仮想マ
シンを提供します。”
• ようするに、意図的に脆弱性を持たせたWebアプリケーションを複数導入
した状態のUbuntu(Linuxのディストリビューションの1つ)を仮想マシン
イメージにしたものです。
• https://www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project
Agenda
1.インジェクションとは?
2.OWASP Top10 A1:2017-インジェクション
3.学生が活用した OWASP Top10 A1:2017
4.SQLインジェクションのデモ
5.おわりに
3.おわりに
• OWASP Top10 A1:2017-インジェクションを活用すると、
「とりあえずこれをやっておけ」という指針が示されてい
るため、何をすべきか容易に分かる。
• ただ、学生の立場で読むと、カタカナ多すぎて目が回って
しまった。
• しかし、セキュリティに楽しさを見いだすことができた。

Más contenido relacionado

Más de OWASP Nagoya

Rethinking car security based on autonomous driving and advanced driving support
Rethinking car security based on autonomous driving and advanced driving supportRethinking car security based on autonomous driving and advanced driving support
Rethinking car security based on autonomous driving and advanced driving supportOWASP Nagoya
 
Owasp top10 2017 a4 xxe
Owasp top10 2017 a4 xxeOwasp top10 2017 a4 xxe
Owasp top10 2017 a4 xxeOWASP Nagoya
 
OWASP Nagoya_WordPress_Handson_3
OWASP Nagoya_WordPress_Handson_3OWASP Nagoya_WordPress_Handson_3
OWASP Nagoya_WordPress_Handson_3OWASP Nagoya
 
OWASP Nagoya_WordPress_Handson_2
OWASP Nagoya_WordPress_Handson_2OWASP Nagoya_WordPress_Handson_2
OWASP Nagoya_WordPress_Handson_2OWASP Nagoya
 
OWASP Nagoya_WordPress_Handson_1
OWASP Nagoya_WordPress_Handson_1OWASP Nagoya_WordPress_Handson_1
OWASP Nagoya_WordPress_Handson_1OWASP Nagoya
 
20190208 脆弱性と共生するには
20190208 脆弱性と共生するには20190208 脆弱性と共生するには
20190208 脆弱性と共生するにはOWASP Nagoya
 
20181117-一般的な脆弱性の概要・対策を知り、ZAPで見つけてみよう!
20181117-一般的な脆弱性の概要・対策を知り、ZAPで見つけてみよう!20181117-一般的な脆弱性の概要・対策を知り、ZAPで見つけてみよう!
20181117-一般的な脆弱性の概要・対策を知り、ZAPで見つけてみよう!OWASP Nagoya
 
20180601 OWASP Top 10 2017の読み方
20180601 OWASP Top 10 2017の読み方20180601 OWASP Top 10 2017の読み方
20180601 OWASP Top 10 2017の読み方OWASP Nagoya
 
WPSCanによるWordPressの脆弱性スキャン
WPSCanによるWordPressの脆弱性スキャンWPSCanによるWordPressの脆弱性スキャン
WPSCanによるWordPressの脆弱性スキャンOWASP Nagoya
 
OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築ハンズオン手順書)
OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築ハンズオン手順書)OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築ハンズオン手順書)
OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築ハンズオン手順書)OWASP Nagoya
 
OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築)
OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築)OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築)
OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築)OWASP Nagoya
 
20170909 第13回名古屋情報セキュリティ勉強会 LT
20170909 第13回名古屋情報セキュリティ勉強会 LT20170909 第13回名古屋情報セキュリティ勉強会 LT
20170909 第13回名古屋情報セキュリティ勉強会 LTOWASP Nagoya
 

Más de OWASP Nagoya (12)

Rethinking car security based on autonomous driving and advanced driving support
Rethinking car security based on autonomous driving and advanced driving supportRethinking car security based on autonomous driving and advanced driving support
Rethinking car security based on autonomous driving and advanced driving support
 
Owasp top10 2017 a4 xxe
Owasp top10 2017 a4 xxeOwasp top10 2017 a4 xxe
Owasp top10 2017 a4 xxe
 
OWASP Nagoya_WordPress_Handson_3
OWASP Nagoya_WordPress_Handson_3OWASP Nagoya_WordPress_Handson_3
OWASP Nagoya_WordPress_Handson_3
 
OWASP Nagoya_WordPress_Handson_2
OWASP Nagoya_WordPress_Handson_2OWASP Nagoya_WordPress_Handson_2
OWASP Nagoya_WordPress_Handson_2
 
OWASP Nagoya_WordPress_Handson_1
OWASP Nagoya_WordPress_Handson_1OWASP Nagoya_WordPress_Handson_1
OWASP Nagoya_WordPress_Handson_1
 
20190208 脆弱性と共生するには
20190208 脆弱性と共生するには20190208 脆弱性と共生するには
20190208 脆弱性と共生するには
 
20181117-一般的な脆弱性の概要・対策を知り、ZAPで見つけてみよう!
20181117-一般的な脆弱性の概要・対策を知り、ZAPで見つけてみよう!20181117-一般的な脆弱性の概要・対策を知り、ZAPで見つけてみよう!
20181117-一般的な脆弱性の概要・対策を知り、ZAPで見つけてみよう!
 
20180601 OWASP Top 10 2017の読み方
20180601 OWASP Top 10 2017の読み方20180601 OWASP Top 10 2017の読み方
20180601 OWASP Top 10 2017の読み方
 
WPSCanによるWordPressの脆弱性スキャン
WPSCanによるWordPressの脆弱性スキャンWPSCanによるWordPressの脆弱性スキャン
WPSCanによるWordPressの脆弱性スキャン
 
OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築ハンズオン手順書)
OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築ハンズオン手順書)OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築ハンズオン手順書)
OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築ハンズオン手順書)
 
OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築)
OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築)OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築)
OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築)
 
20170909 第13回名古屋情報セキュリティ勉強会 LT
20170909 第13回名古屋情報セキュリティ勉強会 LT20170909 第13回名古屋情報セキュリティ勉強会 LT
20170909 第13回名古屋情報セキュリティ勉強会 LT
 

20180601 学生から見た OWASP Top10 A1:2017-インジェクション