Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OWASP JUICE SHOPで始める脆弱性(診断)/ Learn vulnerabilit...
Search
elmore
May 09, 2018
Programming
1
1.7k
OWASP JUICE SHOPで始める脆弱性(診断)/ Learn vulnerabilities at OWASP JUICE SHOP
第15回ゼロから始めるセキュリティ入門 勉強会
SPAなのに、SPAに関係ない話でごめんなさい。
elmore
May 09, 2018
Tweet
Share
More Decks by elmore
See All by elmore
Acunetix使ってみた/Try_used_Acunetix
elmore
0
65
Other Decks in Programming
See All in Programming
Gestaltung digitaler Lösungen – Produktions- oder Designprozess?
techstories
0
120
Jakarta EE meets AI
ivargrimstad
0
840
「今のプロジェクトいろいろ大変なんですよ、app/services とかもあって……」/After Kaigi on Rails 2024 LT Night
junk0612
5
2.2k
イマのCSSでできる インタラクション最前線 + CSS最新情報
clockmaker
5
3.7k
Enabling DevOps and Team Topologies Through Architecture: Architecting for Fast Flow
cer
PRO
0
410
Flutterを言い訳にしない!アプリの使い心地改善テクニック5選🔥
kno3a87
3
360
「天気予報があなたに届けられるまで」 - NIFTY Tech Talk #22
niftycorp
PRO
0
130
今からはじめるAndroidアプリ開発 2024 / DevFest 2024
star_zero
0
440
第5回日本眼科AI学会総会_AIコンテスト_3位解法
neilsaw
0
100
Modular Monolith Monorepo ~シンプルさを保ちながらmonorepoのメリットを最大化する~
yuisakamoto
10
3.7k
.NET のための通信フレームワーク MagicOnion 入門 / Introduction to MagicOnion
mayuki
1
3k
[Do iOS '24] Ship your app on a Friday...and enjoy your weekend!
polpielladev
0
210
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
65
4.5k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Fireside Chat
paigeccino
34
3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Become a Pro
speakerdeck
PRO
25
5k
A Philosophy of Restraint
colly
203
16k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.3k
Ruby is Unlike a Banana
tanoku
97
11k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Transcript
OWASP JUICE SHOPで学ぶ 脆弱性(診断) えるもあ
お前だれよ なまえ : えるもあ しごと : よくわからない何か ねんれい : 26歳
ついったー : @elmore_mk2 2
今日はなすこと 3 脆弱性(Web) OWASP JUICE SHOP
1. 脆弱性(Web) コンピュータのOSやソフトウェアにおいて、プログラムの不具合や設計上のミスが原 因となって発生した情報セキュリティ上の欠陥のこと 出典:http://www.soumu.go.jp/main_sosiki/joho_tsusin/security/basic/risk/11.html 4
Webにはどんな脆弱性が潜んでいる? ◈ SQLインジェクション ◈ クロスサイトスクリプティング ◆ XSS ◈ クロスサイトリクエストフォージェリ ◆
CSRF 「IPAのウェブ健康診断仕様」には他に10項目記載されている 5
2. OWASP The Open Web Application Security Project Webセキュリティなどをよりセキュアにするために情報共有などをするコミュニティ 6
OWASPってなに? ◈ 世界規模 ◈ OWASP Top 10 ◈ Mobile、IoTのプロジェクトもある ◈
OWASP Japan、Kansai etc. 7
OWASP Top 10を見てみよう 8 出典:https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
3. JUICE SHOP OWASP Projectの1つ OWASP Top 10をほぼ網羅した脆弱性のあるアプリケーション 9
OWASP JUICE SHOPを始めよう ◈ CTF形式やチャレンジ形式で脆弱性を学べ る ◈ SPA ◆ 既存のvictimアプリはサーバーレンダリン
グがほとんど ◈ インストールも簡単(Dockerなら3分未満) 10
OWASP JUICE SHOPの構成 11
SQLインジェクションを見つけよう ◈ そもそもSQLインジェクションって ◆ アプリが想定してないSQL文を発行させ る 12 For Example user_id
= "hoge" # ユーザからの入力値 sql = "select * from users where user_id = '" + user_id + "'" SPAなのにSQLインジェクションの話なのは許してヒヤシンス
SQLインジェクションを見つけよう 13
SQLインジェクションを見つけよう 14 商品検索できる ->DBからデータ 引っ張ってきて る??
SQLインジェクションを見つけよう 15 「apple'」で検索 ->構文が崩れるか 確認
SQLインジェクションを見つけよう 16 何も表示されな い。。。
SQLインジェクションを見つけよう 17 ◈ どんなHTTPレスポンスが返ってきたのか確 認したい ◆ ローカルプロキシを使おう! ◆ 今回はBurp Proxy
SQLインジェクションを見つけよう 18 ◈ 実際に見てみる
SQLインジェクションを見つけよう 19 なんかエラーとおいしそうな情報が "message": "SQLITE_ERROR: near \"'%'\": syntax error" "sql":
"SELECT * FROM Products WHERE ((name LIKE '%apple'%' OR description LIKE '%apple'%') AND deletedAt IS NULL) ORDER BY name" SQLインジェクションの脆弱性がありそう
SQLインジェクションを見つけよう 20 ◈ 文字列結合してみる 通常検索時と同じ結果に -> SQLインジェクション脆弱 性あり!
SQLインジェクションしてみよう 21 ◈ ちょっと悪いことを考える ◆ 他のテーブルからデータを取りたい ◆ 使ってるDBはSQLite ◇ SQLiteはsqlite_masterテーブルから
テーブル構造を取得してみる
SQLインジェクションしてみよう 22 HTTPレスポンスに取得データが返ってくるので、 UNIONでテーブル同士をくっつける sqlite_masterからデータの取得を試みる
SQLインジェクションしてみよう 23 juice')) union select NULL, sql,NULL,NULL, NULL,NULL,NULL,NULL from sqlite_master;
-- カラム数を合わせる必要があるので、NULLで調整 sqlite_masterからデータを取得する
SQLインジェクションしてみよう 24
SQLインジェクションをしてみよう 25 BasketItemsテーブルの構造が取れた ユーザー情報持ってそうなテーブルを探してみる juice')) union select NULL, sql,NULL,NULL, NULL,NULL,NULL,NULL
from sqlite_master LIMIT 1 OFFSET 10; -- OFFSETでとってくるデータを調整
SQLインジェクションをしてみよう 26 Usersテーブルの構造が取れた
SQLインジェクションをしてみよう 27 取れた構造をもとにユーザー一覧を取得
SQLインジェクションをしてみよう 28 ユーザのリスティングができた!
SQLインジェクションをしてみよう 29 ユーザのリスティングができた!
SQLインジェクションをしてみよう 30 パスワードはハッシュ化されているが、、、
SQLインジェクションをしてみよう 31 世の中には単純なハッシュ値を検索できるさいと があるので、、、
SQLインジェクションをしてみよう 32 取得できた情報をもとにログインしてみる
SQLインジェクションをしてみよう 33 ログインできた!!
SQLインジェクションをしてみよう 34 他人の認証情報を窃取できた!
注意 35 自身が管理しているもの、許可があるもの以外に はやってはいけないよ!!!
ほかのVictimアプリ ◈ OWASP WebGoat ◈ OWASP NodeGoat ◈ OWASP Broken
Web Application etc. 36
おわり