Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
exploit-workshop — Node.js および Java アプリケーションにおける各種脆弱性を悪用するためのステップバイステップのワークショップ | Kitploit
ツール/GitHubGitHub/snyk-labs/exploit-workshop
脆弱性分析ウェブアプリケーション悪用ペネトレーションテスト学習と教育ラボと実践
GitHubsnyk-labs/exploit-workshop

exploit-workshop

Node.js および Java アプリケーションにおける各種脆弱性を悪用するためのステップバイステップのワークショップ

リポジトリを見る
15698255年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

exploit-workshop

このステップバイステップのワークショップでは、Node.js および Java アプリケーション内の脆弱性のあるパッケージに存在する、さまざまな実際の脆弱性を悪用する方法を学びます。

このワークショップに必要なソフトウェア

このワークショップは、次の 2 つの方法で行うことができます。

  • 準備された Docker イメージ を使用する

または

  • ローカルマシン にすべてをインストールする

このワークショップの紹介

このワークショップでは、意図的に脆弱性のあるアプリケーションをいくつかインストールして悪用する手順を説明します。これらのアプリケーションは、既知の脆弱性を持つ実際のパッケージを使用します。脆弱性には次のものがあります。

  • ディレクトリトラバーサル
  • 正規表現によるサービス拒否 (ReDoS)
  • クロスサイトスクリプティング (XSS)
  • リモートコード実行 (RCE)
  • 任意のファイル上書き (Zip Slip)

これらの脆弱性は多くのアプリケーションに存在しますが、そのほとんどはローカルまたはクラウドインスタンスにインストールする必要があります。以下の手順ではローカルインストールについて説明しますが、リモートのクラウドインスタンスでも試していただいて構いません。

このワークショップの脆弱性の各セクションでは、脆弱性とそれが存在するパッケージに関する情報が提供されます。最初はヒントを読まずに、試行錯誤でアプリケーションをハッキングしてみることをお勧めします。どのようにアプリケーションのサニタイズをごまかせるか考え、ハッカーの思考を取り入れてみてください。行き詰まったときのためにヒントが用意されているので、助けが必要なときに順番に読んでください。ヒントなしでハッキングを完了できれば素晴らしいです。ただし、後でヒントを読んで、私たちと同じ方法で侵入したか確認するのも良いでしょう。さらに、そこから学ぶべき小さなヒントもあるかもしれません。

Goof のインストール

選択に応じて、適切なインストールマニュアルを選んでください。

  • Docker イメージ を使用する
  • ローカルマシン にインストールする

お好みのブラウザで http://localhost:3001 にアクセスすると、次のページが表示されます。

Goof homepage

少し時間を取ってサイトを触ってみてください。特に、通常のテキスト「Buy Milk」やマークダウン「Buy **lots** of milk」を使用していくつかの todo 項目を作成してみてください。また、ホームページ下部にある簡素な about ページにも移動してください。この about ページを作成するために使われた CSS-foo に感動してください。注意: このページを見栄え良くする PR はマージされません ;o)

Goof about page

アプリケーションのスキャン

まずは、ブルー(防御)側から見てみましょう。 goof アプリケーションを自分の GitHub アカウントにフォークしてください。アプリケーションは GitHub の https://github.com/snyk/goof にあります。 アプリケーション内に存在する直接的および間接的な依存関係、および各ライブラリの脆弱性を把握するために、アプリケーションをスキャンする必要があります。これを行うには、https://snyk.io にアクセスし、サイト右上の「Sign up」または「Log in」(すでにユーザーの場合)をクリックします。

Login button

「Log in with your GitHub」ボタンをクリックします。

Google Log in button

次に、先ほどクローンした goof プロジェクトをインポートします。GitHub リポジトリリストから goof を選択し、ウィンドウ右上の「Import Projects」ボタンをクリックします。

GitHub projects

プロジェクトがスキャンされると、ダッシュボードに表示されます。

Project Dashboard Goof

package.json リンクをクリックしてプロジェクトページを表示します。これにはセキュリティ脆弱性の完全なリストが含まれています。

Project vuln page

「Issues」および「Dependencies」タブをクリックすると、脆弱性とその修復に関する詳細情報、およびそれらがアプリケーションによってどこで導入されているかを確認できます。脆弱性リストの下部に、st パッケージのディレクトリトラバーサル脆弱性があることに気づくでしょう。これについて詳しく見ていきましょう。

st directory traversal vuln

ディレクトリトラバーサル

ディレクトリトラバーサル攻撃(パストラバーサルとも呼ばれます)は、意図されたフォルダの外部にあるファイルやディレクトリにアクセスすることを目的としています。「ドットドットスラッシュ」(../)シーケンスやそのバリエーション、または絶対ファイルパスを使用してファイルを操作することにより、ファイルシステム上の任意のファイルやディレクトリ(アプリケーションのソースコード、設定、その他の重要なシステムファイルを含む)にアクセスできる可能性があります。

ディレクトリトラバーサル 脆弱性は、一般的に2つのタイプに分類できます。

  • 情報漏洩:攻撃者がフォルダ構造に関する情報を取得したり、システム上の機密ファイルの内容を読み取ったりできるようにします。
  • 任意のファイル書き込み:攻撃者が既存のファイルを作成または置換できるようにします。このタイプの脆弱性は Zip-Slip としても知られています。

goof アプリケーション内で悪用するディレクトリトラバーサル脆弱性を含むパッケージは、st パッケージです。st のドキュメントを参照して、ライブラリについてよく理解してください。

これでディレクトリトラバーサルとは何か、st パッケージが何をするのかがわかりました。アプリケーションをハッキングしてみてください — これでレッドチームに戻りました!アプリケーション内で st パッケージが使用されている場所を探し、アクセスを許可されるべきでないディレクトリにトラバースしてみてください。

行き詰まった場合のヒントを以下に示します。自分で試した後にのみ参照するように最善を尽くしてください。

クリックして ヒント 1 を表示。

クリックして ヒント 2 を表示。

クリックして ヒント 3 を表示。

クリックして ヒント 4 を表示。

クリックして ヒント 5 を表示。

クリックして ヒント 6 を表示。

クリックして ヒント 7 を表示。

クリックして ヒント 8 を表示。

クリックして ヒント 9 を表示。

攻撃者のようにファイルシステムを探索し、機械上で攻撃者に見られたくないと思われる機密情報を3つ見つけてください。

クリックして ヒント 10 を表示。

脆弱性の説明(CVSS スコアを含む)を確認してください: https://snyk.io/vuln/npm:st:20140206。なぜこの脆弱性が高重要度ではなく中重要度だと思いますか?

脆弱性の修復

snyk のプロジェクトページに戻り、st パッケージのディレクトリトラバーサル脆弱性を見つけ、修復のアドバイスを確認してください。この脆弱性へのアプリケーション内のパスは1つだけで、st パッケージは直接依存関係であるため、修復はそれほど難しくないことがわかります。st パッケージのバージョンを 0.2.5 に更新する必要があります。これは、「Fix this vulnerability」ボタンをクリックすることで自動的に行えます。

Fix this vulnerability

脆弱性のリストが表示され、st の脆弱性のみが選択されているはずです。ページ下部までスクロールし、「Open a fix PR」をクリックします。

Open a fix PR

「Files Changed」タブでプルリクエストのコード変更を確認してください。

PR tests

新しい PR テストで新たなセキュリティやライセンスの問題が導入されていないこと、およびテストが合格していることを確認してください。これらは PR の「Conversation」タブにあります。

PR tests

PR に満足したら、変更をマージしてください。

ローカルマシンインストールの場合のみ(Docker イメージ使用時には機能しません)

アプリケーションをローカルで実行している場合は、npm start を実行したウィンドウで Ctrl+C を押して停止します。git fetch を実行して GitHub から最新のコードを取得します。npm install を実行して新しいバージョンの st をダウンロードし、その後 npm start を使用してアプリケーションを再起動します。

再度ハッキングを試してください。おめでとうございます! 脆弱性を修復しました。公開フォルダから脱出しようとするたびに、ホームページにリダイレクトされるようになります。

正規表現によるサービス拒否 (ReDoS)

Snyk スキャンで ReDoS 脆弱性の説明を確認してください。

ReDoS vuln information

ms パッケージのこの脆弱性が、goof アプリケーションで悪用するものです。以下のコマンドを使用して、時間の文字列表現を含む todo 項目を追加します。``` $ echo 'content=Call mom in 20 minutes' | http --form http://localhost:3001/create -v

msライブラリが、入力されたコンテンツ文字列内の時間パターンにマッチしました。これは、goofのウェブページ上では少し異なる形で表現されます。

![Call mom image](https://assets.kitploit.com/production/public/readmes/5352/40b26468e73dd477bb2e3b6dedbd27ac4c42fc71689044eed4e7f895c17a1cea.png)

ReDoSの仕組みに関する知識を活用して、顕著な遅延や他のユーザーに対するサービス拒否を引き起こすコンテンツ文字列を渡してみてください。リクエストが処理されている間、ウェブページは最初のリクエストが処理されるまで、それ以降のリクエストをバッファリングすることに注意してください。

Click to see [Hint 1](https://github.com/snyk-labs/exploit-workshop/blob/main/ms/hint1.md).

Click to see [Hint 2](https://github.com/snyk-labs/exploit-workshop/blob/main/ms/hint2.md).

Click to see [Hint 3](https://github.com/snyk-labs/exploit-workshop/blob/main/ms/hint3.md).

Click to see [Hint 4](https://github.com/snyk-labs/exploit-workshop/blob/main/ms/hint4.md).
ツールをダウンロード