SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
初心者向け
CTFのWeb分野の強化法
2019/10/16
パナソニック株式会社
製品セキュリティセンター 検証対策部
前田 朋久
『Mix Leap Study #52 - サイバーセキュリティ最前線』
自己紹介
■氏名
前田 朋久(Maeda Tomohisa)
Twitter: @kazkiti_ctf
■経歴
機械工学研究科卒
パナソニック株式会社 入社
・設計/製造品質コンサルタント 9年
・システムエンジニア(SIer) 2年
・セキュリティエンジニア 5.5年
(現職)脆弱性診断、脅威分析、設計支援などに従事
CTFなどの経歴と実績
■CTFなど経歴と実績
準優勝 準優勝 優勝
2016 2017 2018 20192015
SECCON
国内決勝進出
医療セキュリティハッキングコンテスト
国内CTFを開始
海外CTFを開始
バグ
バウンティ
開始
弊社CTFチーム(Pwnasonic)発足
アンケート
1.CTFを知っている方?
2.CTFに参加したことがある方?
なぜCTFをやろうと思ったのか?
セキュリティエンジニアになってから
0年目~ 実は、Cookieすら知らなかった初心者…
↓
脆弱性診断業務を通じて一通りの基礎技術力を習得
1年目~ 脆弱性診断業務を1人で推進していて…
『脆弱性を漏らしていないだろうか?』と常に不安だった
『Webアプリ脆弱性診断は奥が深い』と感じていた
↓
さらなる技術向上が必要!
Webアプリにリソース集中が必要!(選択と集中)
↓
『楽しく技術向上し、業務に活かすため』に
CTFのWeb分野を手段として選択した
CTFのWeb分野をやり始めたころ
■CTFのWeb分野の特徴
・出題範囲が広すぎる!
・脆弱性の種類も多すぎる!
↓
・故に、どこから着手していいのかわからない!
PHP Python
Node.js
MySQL
SQLite
postgresql
SSTI
XSS
Apache
nginx
LFI
RFI
SSRF
html css
javascript
XXE
LDAP
SQL
OAuth2.0
SAML
Ruby
java
CVE
OIDC
JSON
windows
Linux
IIS
Perl
serialization
XML
MSSQL
oracleSSO JWT
NoSQLXPATH
AWS S3
Cloudfront
Lambda
とりあえずやってみた勉強法(失敗談)
■私の失敗談
・とりあえず、出題頻度が高い
『SQLインジェクション問題を100%解けるようになろう!』
と勉強を始めた。
↓
・しかし、SQLインジェクションは奥が深く、泥沼に陥った…
CTFを本気で始める
(2017年~)
■目的
目的/手段/リソース確保
■リソースの確保
毎週土日をCTFに捧げる覚悟
※CTFは土日開催がほとんど
数をこなすため海外CTFをやる
世界各地のCTFの開催日程まとめサイト
http://ctftime.org
■戦略
技術力を向上させて業務に活かす
■目標の数値化 ※どこまで解けるようになりたいか?
目標設定/数値化
その問題の難易度(正解率[%])=
その問題を解いたチーム数
全体で1問以上解いたチーム数
0~1%問題を解く技術力
1~5%問題を解く技術力
5~10%問題を解く技術力
10~20%問題を解く技術力
20~40%問題を解く技術力
40~100%問題を解く技術力
世界TOP10
日本トップクラス
上級者
中級者
初心者
CTF未経験者
■現在(当時)の実力把握 ※数回参加して測定
当時の私の実力は、難易度(正解率30%)なら全て解けていた
⇒初心者レベル
■技術力と難易度のおよその関係 ※数回参加して測定して定義
write-up(解法)にも正解率を記入、自分の実力把握をする
このように
正解率を記載するようにし、
自分の実力把握を日々していった
【メリット】
・得意/不得意分野が客観的指標でわかるようになったため、
対策がしやすくなった
難易度別の対策
正解率40~100%の問題
CTF未経験者
(正解率40~100%)を解けるようになるには?
■CTF未経験者
・セキュリティ技術については、そこまで保持していない
・開発技術などのIT関連技術は保持している
(開発技術の一例)
・Webサイトの基本の理解(html、css、javascriptなど)
・プログラミング言語を読み解く力
・gitの使い方
・HTTPサーバ(Apache/nginxなど)の設定
問題例:TokyoWesterns CTF 4th 2018 (1/2)
URLにアクセスすると、下記のPHPソースコードを得られる
【ゴール】Flagが表示される
問題例:TokyoWesterns CTF 4th 2018 (2/2)
【突破ポイント】
コードを読み解く力
・actionパラメータに、authにしておく
・hashed_passwordパラメータを、c019f6e5cd8aa0bbbcc6e994a54c757eにしておく
・userもしくはpassパラメータを、empty(空)にしておく( hashed_passwordを上書きさせない)
【ゴール】Flagが表示された
(詳細解説)https://ctftime.org/writeup/10891
正解率20~40%の問題
初心者
(正解率20~40%)を解けるようになるには?
■セキュリティの知識力/調査力を問われる問題
・初心者向けCTF(picoCTFなど)
・過去問と同じ問題(write-upをチェックする)
※一度出題された問題は難易度が高くても既知の問題になる
・書籍(セキュリティコンテストチャレンジブックetc…)
・既知の有名な脆弱性
※CVEが付与された脆弱性の攻撃方法を調査し、時間内に解く力
※インシデントレスポンス業務担当の方は得意
問題例:ENCRYPT CTF 2019 (1/2)
URLにアクセスすると、下記のhtmlレスポンスが得られる
【突破ポイント】
セキュリティの基本知識
・16進数32桁なので、ハッシュ値のMD5である
・MD5は逆算できないので辞書的に検索する必要がある。
問題例:ENCRYPT CTF 2019 (2/2)
先ほどの値が100だったので、
0~101のMD5値を計算して送信してみよう!
【ゴール】Flagが得られた
(詳細解説)https://ctftime.org/writeup/14332
この辺りで止まっていませんか?
そろそろ次のレベルを目指してみましょう!
正解率10~20%の問題
中級者
(正解率10~20%)を解けるようになるには?
■環境構築力
1.環境を持っていないと解けない問題
(例1)SSRF ⇒ DNSRebinding問題 ※DNSサーバが必要
(例2)XSS問題 ※HTTPサーバが必要
2.環境構築し試行錯誤すれば難易度が下げられる問題
(例1)ソースコードが与えられる問題⇒サーバ立てて試行錯誤できる
※PHP,Python,Node.jsなど
(例2)SQLインジェクション⇒SQLサーバを立てて試行錯誤できる
■対策
・AWSアカウントを持って、EC2サーバを立てる ※1年間無料
・DNSにドメイン登録する ※年間100円程度
・コンテナ技術(Dockerなど)で様々な言語のサーバの立て方を知る
日ごろからいろんなサーバを立てて試行錯誤する!
問題例:angstromCTF 2019 (1/1)
【突破ポイント】
・一度、Node.jsサーバを立てて、
NoSQLインジェクションの環境にて試行錯誤していた
(詳細解説)https://ctftime.org/writeup/14922
正解率5~10%の問題
上級者
(正解率5~10%)を解けるようになるには?
■網羅力
1.BlackList‐Bypass問題
・SQLインジェクションで使用関数制限がある
・OSコマンドインジェクションで使用関数制限がある
・SSTI(Server Side Template Injection)で使用関数制限がある
・PHP任意コード実行で使用関数制限がある
■対策
・網羅的に、事前に関数などを調べておく
・仕様書/RFCなどを事前に調べておく
問題例:TokyoWesterns CTF 4th 2018(1/2)
問題例:TokyoWesterns CTF 4th 2018(2/2)
【突破ポイント】
・SSTIから任意コード実行できる関数を網羅的に調べていた
【ゴール】Flagが得られた
Blacklist
(詳細解説)https://ctftime.org/writeup/10895
正解率1~5%の問題
日本トップクラス
(正解率1~5%)を解けるようになるには?
■攻撃シナリオを列挙する力
・稀な脆弱性(発見しづらい)
・相対パス上書き攻撃によるXSSやCSSインジェクション
・Cache-PoisoningによるXSS
・LDAPインジェクション
・バイナリ/暗号など他分野との複合問題
■対策
・全ての脆弱性は一通り知っていて発見できる状態にしておく
・日頃の最先端情報の収集
問題例:Meepwn CTF Quals 2019 (1/2)
問題例:Meepwn CTF Quals 2019 (2/2)
【ゴール】Flagが得られた
最終的な攻撃用URL
【突破ポイント】
・稀な脆弱性である相対パス上書き攻撃によるXSSを理解
※後は条件に合わせて、攻撃用URLを作成していく
(詳細解説)https://ctftime.org/writeup/10442
正解率0~1%の問題
世界TOP10
(正解率0~1%)を解けるようになるには?
人生で重要な何かを捨てる!
日々、ひたすら突き詰めて
精進する
始めはどこかの脆弱性に絞って
1点突破する
XSS Payload
<script>alert(1)</scrip>
XSTとは…
問題例:Tokyo Westerns CTF 3rd 2017 (1/2)
Proxyサーバ経由でHTTPサーバにアクセスしており、
下記のようにソースコードが与えられている
また、flagの場所は、Webサーバのネットワーク配下の
別のローカルサーバに置かれている
【突破ポイント】
・ひたすらXSSに絞って日々勉強&情報収集を2年間
・この問題を1問解くのに14時間かかった…
・人生で重要な何かを失ったような気がする…
問題例:Tokyo Westerns CTF 3rd 2017 (2/2)
▼最終攻撃コード完成までの流れ
Pythonコードが与えられていたので読む
↓
RefererヘッダにXSSの脆弱性を発見
※通常はRefererヘッダはURLエンコードされるので
XSSはありえないのだが、特殊なproxyを挟んでいるため、
XSSが発生
↓
Flagの場所は、ローカルIPアドレスなので、
XSSを利用してローカルIPアドレスをブルートフォースして
ネットワーク調査し、192.169.0.4が存在することがわかる
↓
再度XSSで、192.168.0.4のflag取得用の
最終攻撃コードを完成させる
(詳細解説)https://ctftime.org/writeup/7461
まとめ
CTFをうまく活用して
楽しみながら
技術力を向上させていきましょう!
初心者向けCTFのWeb分野の強化法

Mais conteúdo relacionado

Mais procurados

Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
moai kids
 

Mais procurados (20)

CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
とある診断員とSQLインジェクション
とある診断員とSQLインジェクションとある診断員とSQLインジェクション
とある診断員とSQLインジェクション
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
 
PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
 
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
 
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門
 

Semelhante a 初心者向けCTFのWeb分野の強化法

20181214 Semicon Japan Techspotセミナー:ディープラーニングを応用した製品不良検査ソフトウェアおよびピッキングロボットソリュ...
20181214 Semicon Japan Techspotセミナー:ディープラーニングを応用した製品不良検査ソフトウェアおよびピッキングロボットソリュ...20181214 Semicon Japan Techspotセミナー:ディープラーニングを応用した製品不良検査ソフトウェアおよびピッキングロボットソリュ...
20181214 Semicon Japan Techspotセミナー:ディープラーニングを応用した製品不良検査ソフトウェアおよびピッキングロボットソリュ...
Preferred Networks
 
A16_VB でクラサバシステムの開発をしていた平凡なチームが、どのようにクラウドネイティブプロダクト開発にシフトしアジャイル開発を進めることができたのか...
A16_VB でクラサバシステムの開発をしていた平凡なチームが、どのようにクラウドネイティブプロダクト開発にシフトしアジャイル開発を進めることができたのか...A16_VB でクラサバシステムの開発をしていた平凡なチームが、どのようにクラウドネイティブプロダクト開発にシフトしアジャイル開発を進めることができたのか...
A16_VB でクラサバシステムの開発をしていた平凡なチームが、どのようにクラウドネイティブプロダクト開発にシフトしアジャイル開発を進めることができたのか...
日本マイクロソフト株式会社
 

Semelhante a 初心者向けCTFのWeb分野の強化法 (20)

CVE、JVN番号の取得経験者になろう!
CVE、JVN番号の取得経験者になろう!CVE、JVN番号の取得経験者になろう!
CVE、JVN番号の取得経験者になろう!
 
テスト自動化クロニクル (JaSST 東海 2016)
テスト自動化クロニクル (JaSST 東海 2016)テスト自動化クロニクル (JaSST 東海 2016)
テスト自動化クロニクル (JaSST 東海 2016)
 
高信頼性を確保するソフトウェア開発手法と実践 -組込み製品の潜在的価値を今以上に高めるために-
高信頼性を確保するソフトウェア開発手法と実践-組込み製品の潜在的価値を今以上に高めるために-高信頼性を確保するソフトウェア開発手法と実践-組込み製品の潜在的価値を今以上に高めるために-
高信頼性を確保するソフトウェア開発手法と実践 -組込み製品の潜在的価値を今以上に高めるために-
 
テストマネジメントツールSquash TMを利用した継続的テスト改善
テストマネジメントツールSquash TMを利用した継続的テスト改善テストマネジメントツールSquash TMを利用した継続的テスト改善
テストマネジメントツールSquash TMを利用した継続的テスト改善
 
20181214 Semicon Japan Techspotセミナー:ディープラーニングを応用した製品不良検査ソフトウェアおよびピッキングロボットソリュ...
20181214 Semicon Japan Techspotセミナー:ディープラーニングを応用した製品不良検査ソフトウェアおよびピッキングロボットソリュ...20181214 Semicon Japan Techspotセミナー:ディープラーニングを応用した製品不良検査ソフトウェアおよびピッキングロボットソリュ...
20181214 Semicon Japan Techspotセミナー:ディープラーニングを応用した製品不良検査ソフトウェアおよびピッキングロボットソリュ...
 
A16_VB でクラサバシステムの開発をしていた平凡なチームが、どのようにクラウドネイティブプロダクト開発にシフトしアジャイル開発を進めることができたのか...
A16_VB でクラサバシステムの開発をしていた平凡なチームが、どのようにクラウドネイティブプロダクト開発にシフトしアジャイル開発を進めることができたのか...A16_VB でクラサバシステムの開発をしていた平凡なチームが、どのようにクラウドネイティブプロダクト開発にシフトしアジャイル開発を進めることができたのか...
A16_VB でクラサバシステムの開発をしていた平凡なチームが、どのようにクラウドネイティブプロダクト開発にシフトしアジャイル開発を進めることができたのか...
 
JaSST '22 Tokyo - B5「テストの素人がゲーム品管組織を作って5年で感じた、QA業界のモヤモヤ」
JaSST '22 Tokyo - B5「テストの素人がゲーム品管組織を作って5年で感じた、QA業界のモヤモヤ」JaSST '22 Tokyo - B5「テストの素人がゲーム品管組織を作って5年で感じた、QA業界のモヤモヤ」
JaSST '22 Tokyo - B5「テストの素人がゲーム品管組織を作って5年で感じた、QA業界のモヤモヤ」
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
 
ソフトウェア工学における問題提起と機械学習の新たなあり方
ソフトウェア工学における問題提起と機械学習の新たなあり方ソフトウェア工学における問題提起と機械学習の新たなあり方
ソフトウェア工学における問題提起と機械学習の新たなあり方
 
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
 
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質 SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
 
ICST 2015 まるわかりDay! "ICST2015参加報告"
ICST 2015 まるわかりDay! "ICST2015参加報告"ICST 2015 まるわかりDay! "ICST2015参加報告"
ICST 2015 まるわかりDay! "ICST2015参加報告"
 
SQuBOKの変遷 (SQuBOK V3発行記念イベント)
SQuBOKの変遷 (SQuBOK V3発行記念イベント)SQuBOKの変遷 (SQuBOK V3発行記念イベント)
SQuBOKの変遷 (SQuBOK V3発行記念イベント)
 
Tomorrow's software testing for embedded systems ~明日にでも訪れてしまう組込みシステムのテストの姿~
Tomorrow's software testing for embedded systems ~明日にでも訪れてしまう組込みシステムのテストの姿~Tomorrow's software testing for embedded systems ~明日にでも訪れてしまう組込みシステムのテストの姿~
Tomorrow's software testing for embedded systems ~明日にでも訪れてしまう組込みシステムのテストの姿~
 
Web制作者視点で理解するソフトェアテスト
Web制作者視点で理解するソフトェアテストWeb制作者視点で理解するソフトェアテスト
Web制作者視点で理解するソフトェアテスト
 
What is CompTIA
What is CompTIAWhat is CompTIA
What is CompTIA
 
ラーニング・バイ・コンテスト (Learning by Contest) ~ プログラミング学習のシフト ~
ラーニング・バイ・コンテスト(Learning by Contest)~ プログラミング学習のシフト ~ラーニング・バイ・コンテスト(Learning by Contest)~ プログラミング学習のシフト ~
ラーニング・バイ・コンテスト (Learning by Contest) ~ プログラミング学習のシフト ~
 
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略
 
世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)
世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)
世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)
 
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しようテスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
 

初心者向けCTFのWeb分野の強化法