Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
70
Other Decks in Programming
See All in Programming
20250708_JAWS_opscdk
takuyay0ne
2
130
Google Agent Development Kit でLINE Botを作ってみた
ymd65536
2
260
AI時代のソフトウェア開発を考える(2025/07版) / Agentic Software Engineering Findy 2025-07 Edition
twada
PRO
99
37k
GPUを計算資源として使おう!
primenumber
1
250
マッチングアプリにおけるフリックUIで苦労したこと
yuheiito
0
190
AIと”コードの評価関数”を共有する / Share the "code evaluation function" with AI
euglena1215
1
180
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
11
1.6k
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
680
“いい感じ“な定量評価を求めて - Four Keysとアウトカムの間の探求 -
nealle
2
12k
The Niche of CDK Grant オブジェクトって何者?/the-niche-of-cdk-what-isgrant-object
hassaku63
1
610
The Modern View Layer Rails Deserves: A Vision For 2025 And Beyond @ RailsConf 2025, Philadelphia, PA
marcoroth
2
730
DMMを支える決済基盤の技術的負債にどう立ち向かうか / Addressing Technical Debt in Payment Infrastructure
yoshiyoshifujii
3
410
Featured
See All Featured
KATA
mclloyd
30
14k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Agile that works and the tools we love
rasmusluckow
329
21k
A better future with KSS
kneath
238
17k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
700
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.2k
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
おわり