Upgrade to Pro — share decks privately, control downloads, hide ads and more …

202012_juiceshop

 202012_juiceshop

2019/10に「プロ生勉強会」で発表したスライドの焼き直しになります。
CentOS8のPodmanとか、k3sでjuiceshopを動かしたらどうなるかな?

https://speakerdeck.com/gplains/20191026-pronama-juiceshop

A943048c18de92902dae80a40ef7e842?s=128

ONO,Tetsuo

December 24, 2020
Tweet

Transcript

  1. OWASP Juice Shop をCentOS8で動かして ジュースを飲んだ気になってみる 大野 哲生(@g_plains) On 2020/12/24 2021/01/21訂正

  2. はじめに  当該スライドに登場するアプリケーションは、不 具合調査やその前提となる技能の習得のために作 られたものです。  構内での自習や、ウェブアプリケーションの受け 入れ検査など、利用が許可された環境でのみ実施 するようおねがいします。 

    AWSなどのクラウド上でCTF環境を構築する際に は「防災訓練」等の契約上の申請が必要なことが あります。 ※本稿は2019/10発表の資料の改訂版です CentOS7(+Docker)の手順はそちらを参照
  3. おしながき  自己紹介  ウェブサイトのライフサイクル  検査のためのの知識づくり  OWASP JuiceShopのインストール

    ◦ CentOS8(+Podman)の場合 ◦ CentOS8(+k3s)の場合  ふりかえり
  4. 自己紹介  ハンドル :こてつ(@g_plains)  出身 : 愛知で銀杏のおいしいところ  おしごと

    : 派遣社員(システム運用管理)
  5. ウェブサイトのライフサイクル  設計して、素材集めて作ります  納品前に、受け入れ検査をするよね  納品後に、周辺環境が変わったら、また検査が必 要かも?  …検査ってどうやればいいのかな?

  6. 検査のための知識?  関数だったら、「ユニットテスト」ができるよね  画面の操作で見つかるバグって、ユニットテスト で見つけられるのかなぁ…  手入力でどんなバグを見つけられるか、実際に やってみよう! …ということで、

    OWASP JuiceShopのご紹介。
  7. OWASP JuiceShop  OWASPの「やられアプリ」プロジェクト https://www2.owasp.org/www-project-juice-shop/  FBCTFやCTFdで出題する「CTF機能」もあるよ  環境作るのが大変ってときはherokuにもあるよ https://juice-shop.herokuapp.com/

     ドキュメントが全部英語(つらい)
  8. CentOS8+Podmanの場合-1  先ずPodmanをインストールします…  DockerHubからリポジトリを集めます。  juiceshop を起動するよ。 $ sudo

    dnf install podman $ sudo podman pull bkimminich/juice-shop $ sudo podman run --rm -p 3000:3000 bkimminich/juice-shop
  9. CentOS8+Podmanの場合-2  実際にブラウザで表示させてみる。 例) http://172.16.226.136:3000/#/

  10. CentOS8+k3sの場合  1台のCentOS8マシンだけで完結します  master+複数workerでも原則やり方は一緒です  Ubuntu/alpineもk3sインストール以降は一緒です master 11 VirtualBoxでのNIC

    default(bridged) 192.168.1.0/24 131 仮想化基盤(CentOS8+k3s)
  11. CentOS8+k3sの場合-1 説明の簡便化のため、以下rootで説明…  先ずk3sをインストールします…  構築直後は何もないことを確認…  Pod情報を作成します… # curl

    -sfL https://get.k3s.io | sh - # kubectl get pod # kubectl get services # vi juiceshop.yaml
  12. CentOS8+k3sの場合-2 juiceshop.yamlは以下の内容です(やっつけ…) apiVersion: v1 kind: Pod metadata: name: juiceshop namespace:

    default labels: env: study spec: containers: - name: juiceshop image: docker.io/bkimminich/juice-shop:latest
  13. CentOS8+k3sの場合-3  インスタンス起動  podの状態を確認  サービスを追加する  ローカルからcurlすればアクセスできそうだ #

    kubectl apply -f juiceshop.yaml # kubectl get pod ; kubectl get services NAME READY STATUS RESTARTS AGE juiceshop 1/1 Running 0 113s # kubectl expose -f juiceshop.yaml --port=3000 # kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE juiceshop ClusterIP 10.43.162.4 <none> 3000/TCP 10s # curl 10.43.162.4:3000
  14. CentOS8+k3sの場合-4  別のコンソールから操作したいので、サービスを修正  typeをNodePortに変更したのち、nodePort値を修正  k3sを動かしているサーバにcurlで接続 # kubectl edit

    service juiceshop spec: ports: - port: 3000 protocol: TCP targetPort: 3000 selector: env: study type: ClusterIP # curl 192.168.1.131:3000 spec: ports: - nodePort: 30001 port: 3000 protocol: TCP targetPort: 3000 selector: env: study type: NodePort
  15. CentOS8+k3sの場合-5  実際にブラウザで表示させてみる。 例) http://192.168.1.131:30001/#/

  16. [参考]CentOS8+k3sの場合の後始末  まず先にサービスを解除  Podを解除  Pod/サービスの両方が削除されたことを確認 # kubectl delete

    svc juiceshop service "juiceshop" deleted # kubectl get pod ; kubectl get services No resources found in default namespace. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 41h # kubectl delete -f juiceshop.yaml pod "juiceshop" deleted
  17. 脱線  実績解除のうち「Score-boardの表示」が地味に面倒 大抵他の実績が先に解除される  現行版(2020/12時点:v12)だと、score-boardの表示は Chromeの場合「開発者ツール」を使うとよい …って公式に書いてあるね。公式ドキュメント読もう https://bkimminich.gitbooks.io/pwning-owasp-juice- shop/content/part1/rules.html

  18. さらに脱線  CentOS8って2021/12にアップデート止まるんでしょ?今 紹介して大丈夫なんですか? →CentOS8 Streamを使いましょう Fedoraほどドラスティックではないにせよ、RHEL8と相互 にアップデートが共有されるので「塩漬けにしなければ」非 常によいディストリビューションだと思います https://centos.org/distro-faq/

    ※商用サイトで使う場合はRHEL8を契約しよう… # dnf install centos-release-stream # dnf swap centos-{linux,stream}-repos # dnf distro-sync
  19. さらに脱線...  CentOS8って2021/12にアップデート止まるんでしょ?今 紹介して大丈夫なんですか? →開発用途であれば、RHEL8が使えます Red Hat Developer Program に登録することで、最大16

    ノードまでRHELの利用権が(年次更新とはいえ)利用可能に なります(本番ノードへは2021/2から利用可能に!)。 https://www.redhat.com/en/blog/new-year-new-red- hat-enterprise-linux-programs-easier-ways-access-rhel
  20. ふりかえり  firewalldに関しては一旦disabledで検証しています →真面目に使うときは適宜ポート開放しましょう  複数人で環境を共有するときはmulti-juicerを使おう https://github.com/iteratec/multi-juicer ※Pentestじゃなくて防災訓練扱いになると思うが…  Burp

    SuiteやOWASP ZAPも併用すると幸せになれる  docker.io の大抵のコンテナ(特に知ってるコンテナ)が そのままpodmanやk8s(今回はk3s)で動くのたのしい