dockerでOWASP Juice Shopのやられ環境構築
Juice Shopコンテナイメージのインストール
こちらを参考。
$ docker pull bkimminich/juice-shop
見てみる。
$ docker image ps
REPOSITORY TAG IMAGE ID CREATED SIZE
schickling/mailcatcher latest 9156fb5a15fb 8 months ago 60.1MB
起動。
$ docker run --rm -p 3000:3000 bkimminich/juice-shop
info: All dependencies in ./package.json are satisfied (OK)
info: Chatbot training data botDefaultTrainingData.json validated (OK)
info: Detected Node.js version v18.14.0 (OK)
info: Detected OS linux (OK)
info: Detected CPU x64 (OK)
info: Configuration default validated (OK)
info: Entity models 19 of 19 are initialized (OK)
info: Required file server.js is present (OK)
info: Required file index.html is present (OK)
info: Required file styles.css is present (OK)
info: Required file tutorial.js is present (OK)
info: Required file polyfills.js is present (OK)
info: Required file runtime.js is present (OK)
info: Required file main.js is present (OK)
info: Required file vendor.js is present (OK)
info: Port 3000 is available (OK)
info: Server listening on port 3000
アクセスしてみる
ブラウザから、「http://localhost:3000」にアクセス。

① ー 以下の様な注意書きが書いてあるので、次回から表示させないように「Dismiss」をクリック。
OWASP Juice Shop へようこそ! 膨大な数の意図的なセキュリティ脆弱性を持つウェブアプリケーションであるため、OWASPジュースショップは、ウェブ開発者のためのベストプラクティスやテンプレートアプリケーションとは対極にあるものであるはずです。これは、最新のウェブアプリケーションにおけるセキュリティリスクに対する認識、トレーニング、デモンストレーション、演習のためのツールです。OWASP Juice Shopは、非営利団体Open Web Application Security Project(OWASP)が主催するオープンソースプロジェクトで、ボランティアによって開発・維持されています。プロジェクトの詳細とドキュメントについては、以下のリンクをチェックしてください。
② ー クッキーを受け入れろと言っているので、「Me want it!」をクリック。 これで環境構築は完了です。
とりあえず触る
「WappeLyzer」で、技術スタックのチェック。dockerでインストールしたので何も気にしてなかったけど、Apacheだと解る。あと、昔どっかで、vueっていう記事も見たけど、Angularか。

何をしたらいいのかわからないため、とりあえず左上のメニューボタンをクリックして、「ヘルプを読んで始める」をクリック。

なにやら、「Score Board」のページを自ら見つけろと言うことらしい。
なんか、ソース見ながら「score」で検索してたら怪しいのあった。多分、vueやreactでいうルーティングを、Angularでも定義しているっぽい。

直接URLにパスを入れてみる。
なんか出た!

なんか出た後の画面。

メニューにも「スコアボード」が表示されて、いつでもこの画面に行けるようになりました。これで迷うこと無く、webアプリのハッキングを進めていくことができそうです。

FFUF
とりあえず今回は心置きなく、ffufを使える環境を作ることが目的でした。
なので早速、kaliから今回dockerで起動している「https://192.168.1.99:3000」に、実行してみる。
$ ffuf -w /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt -u http://192.168.1.99:3000/FUZZ -fs 1987
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v1.5.0 Kali Exclusive <3
________________________________________________
:: Method : GET
:: URL : http://192.168.1.99:3000/FUZZ
:: Wordlist : FUZZ: /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200,204,301,302,307,401,403,405,500
:: Filter : Response size: 1987
________________________________________________
.well-known/security.txt [Status: 200, Size: 403, Words: 47, Lines: 6, Duration: 7ms]
Video [Status: 200, Size: 10075518, Words: 0, Lines: 0, Duration: 0ms]
api [Status: 500, Size: 3016, Words: 235, Lines: 50, Duration: 75ms]
api/experiments/configurations [Status: 500, Size: 3070, Words: 235, Lines: 50, Duration: 75ms]
apis [Status: 500, Size: 3018, Words: 235, Lines: 50, Duration: 75ms]
api/experiments [Status: 500, Size: 3040, Words: 235, Lines: 50, Duration: 75ms]
assets [Status: 301, Size: 179, Words: 7, Lines: 11, Duration: 16ms]
ftp [Status: 200, Size: 11083, Words: 1558, Lines: 357, Duration: 269ms]
profile [Status: 500, Size: 1247, Words: 162, Lines: 50, Duration: 182ms]
promotion [Status: 200, Size: 6586, Words: 560, Lines: 177, Duration: 270ms]
redirect [Status: 500, Size: 3119, Words: 244, Lines: 50, Duration: 132ms]
rest [Status: 500, Size: 3018, Words: 235, Lines: 50, Duration: 127ms]
restore [Status: 500, Size: 3024, Words: 235, Lines: 50, Duration: 127ms]
restored [Status: 500, Size: 3026, Words: 235, Lines: 50, Duration: 127ms]
restricted [Status: 500, Size: 3030, Words: 235, Lines: 50, Duration: 126ms]
restaurants [Status: 500, Size: 3032, Words: 235, Lines: 50, Duration: 127ms]
robots.txt [Status: 200, Size: 28, Words: 3, Lines: 2, Duration: 33ms]
security.txt [Status: 200, Size: 403, Words: 47, Lines: 6, Duration: 54ms]
snippets [Status: 200, Size: 707, Words: 1, Lines: 1, Duration: 35ms]
video [Status: 200, Size: 10075518, Words: 0, Lines: 0, Duration: 0ms]
:: Progress: [4713/4713] :: Job [1/1] :: 170 req/sec :: Duration: [0:00:17] :: Errors: 0 ::
いいねー、「Video」とか「ftp」とか「security.txt」とか「robots.txt」とか気になる。スコアボードとか一旦無視して、好き放題ペネトレ進めてみます笑