あなたの家にはさまざまなドアのある部屋がたくさんあり、そのいくつかは個人オフィスや金庫室などの安全なエリアに通じていると想像してください。では、誰かが通常のルートを迂回してこれらの部屋に直接アクセスし、419 カラットの金のチェーン、高価な香水、ビンテージの Kolo ボックスなどの貴重品を盗んだり改ざんしたりするトリックを知っていたらどうでしょうか。これが基本的にパス トラバーサル攻撃で起こることです。
パストラバーサルとは何ですか?
パス トラバーサル (ディレクトリ トラバーサルとも呼ばれる) は、Web アプリケーションに見られる脆弱性の一種です。これにより、攻撃者は Web ルート フォルダー外に保存されているファイルやディレクトリにアクセスできるようになります。通常、これらのファイルやディレクトリには攻撃者がアクセスできないはずで、アクセスするのはシェフ (つまりバックエンド エンジニア) です。これらのファイルには、アプリケーション コード、ユーザー データ、資格情報、さらにはシステム ファイルなどの機密情報が含まれている可能性があり、これを悪用すると、サーバーをさらに制御できるようになります。
パストラバーサルの仕組み
ダークマーケットのような、違法取引に使われるヤフーヤフーのオンラインショッピングストアというWebアプリケーションがあるとします。その名前は実際には ヤッホーヤッホー!バカなのは分かってる、平原に隠れることと関係がある 視力 現在刑務所にいる管理者によるものです :)。
アプリケーションは次のような URL を使用して画像を読み込みます。
バックエンドでは、サーバーはファイル名をベース ディレクトリに追加してこの要求を処理します。
/var/www/images/218.png
しかし、パストラバーサルに対する防御がなければ、攻撃者(この場合はEFCC)は、 ファイル名パラメータ ユーザーのアカウント情報など、サーバー上の他のファイルにアクセスします。
たとえば、次のようなことを試してみましょう。
https://yahooyahoo.com/loadImage?filename=../../../etc/passwd
このリクエストは、サーバーに、ベースパスから3つのディレクトリレベルをステップアップしてファイルをロードし、次に /etc/passwd
ファイル、Unix 系システム上の重要なシステム ファイル。
サーバーは次のようにパスを構築します。
/var/www/images/../../../etc/passwd
の ../
シーケンスは 1 つのディレクトリ レベルに移動します。したがって、パスは次のように解決されます。
/etc/passwd
の力と威力 ../
順序
聞いたら 順序 Web-Secでは、 ナビゲーション。
のことを考える ../
はしごを登って上の階に行くのと同じように、ディレクトリ構造内で 1 レベル上に移動する方法として、次のようになります。
- 独身者
../
1レベル上がります。 ../../
2レベル上がります。../../../
3 レベル上がります。
コンピュータのファイル システムでは、次のようになります。
- 最低価格
/home/user/documents/projects
、../
に連れて行ってくれる/home/user/documents
。 ../../
連れて行ってくれる/home/user
。../../../
あなたを連れて行きます/home
。
これをよりよく理解するために:
大きなホテル、ホテル3FCCにいると想像してください。419号室(4階、19番目の部屋)からスタートします。 ../
:
../
廊下に出る(ディレクトリの用語では 1 階上)ことを意味します。../../
エレベーターで3階まで降りることを意味します。../../../
2階に降りることを意味します。
ホテルのレイアウト:
Hotel:
---------------------
(Floors)
|
|
+---------------------------------------------+
| 1st Floor | 2nd Floor | 3rd Floor | 4th Floor |
| | | | |
+-------------+-------------+-------------+-------------+
| | Room 219 | | Room 419 |
| | | | (Your Room)|
| +-------------+ +-------------+
| | Room 220 | | Room 420 |
| | | | |
+-------------+-------------+-------------+-------------+
| | Room 319 | | |
| | | | |
| +-------------+ +-------------+
| | Room 320 | | |
| | | | |
+-------------+-------------+-------------+-------------+
パストラバーサルの手順:
-
初期位置: 4階419号室
-
現在のパス:
/home/user/documents/projects
-
ホテルのアナロジー: あなたは4階の419号室にいます
+———————————————+ | 1階 | 2階 | 3階 | 4階 | | | | | | +————-+————-+————–+—————+ | | 219号室 | | 419号室 | | | | | (あなた) | | +————–+ +————–+ | | 220号室 | | 420号室 | | | | | | +————-+————–+————–+—————+ | | 319号室 | | | | | | | | | +————-+ +————–+ | | 320号室 | | | | | | | | | +————-+————–+————–+————–+
-
-
ステップ1: 使用
../
4階の廊下に上がる-
新しい道:
/home/user/documents
-
ホテルのアナロジー: 4階の廊下に出ると
+———————————————+ | 1階 | 2階 | 3階 | 4階 | | | | | | +————-+————-+————–+—————+ | | 219号室 | | (廊下) | | | | | | | | +————-+ +————–+ | | 220号室 | | 419号室 | | | | | (空) | +————–+————–+—————+—————+ | | 319号室 | | | | | | | | | +————-+ +————–+ | | 320号室 | | | | | | | | | +————-+————–+————–+————–+
-
-
ステップ2: 使用
../../
2階上の3階へ移動する-
新しい道:
/home/user
-
ホテルのアナロジー: エレベーターで3階へ
+———————————————+ | 1階 | 2階 | 3階 | 4階 | | | | | | +————-+————-+————–+————–+ | | 219号室 | (あなた) | (廊下) | | | | | | | | +————–+ +————–+ | | 220号室 | 319号室 | 419号室 | | | | (空) | (空) | +————–+————–+————–+—————+ | | 320号室 | | | | | | | | | +————-+ +————–+ | | | | | +————-+————–+————–+————–+
-
-
ステップ3: 使用
../../../
3階上の2階へ移動する-
新しい道:
/home
-
ホテルのアナロジー: エレベーターで2階へ降りる
+———————————————+ | 1階 | 2階 | 3階 | 4階 | | | (あなた) | (空) | (廊下) | +————-+————–+————–+————–+ | | 部屋219 | 部屋319 | 部屋419 | | | | (空) | (空) | | +————–+ +————–+ | | 部屋220 | 部屋320 | 部屋420 | | | | | | +————-+————–+————–+————–+
-
防御とバイパス
これらの攻撃を防ぐために、多くのアプリケーションではユーザー入力からディレクトリ トラバーサル シーケンスを削除します。しかし、巧妙な攻撃者はこれらの防御を回避する方法を見つけることがよくあります。
たとえば、ルートからの絶対パスを直接使用する場合があります。
filename=/etc/passwd
あるいは、ネストされたトラバーサルシーケンスを使用することもできます。 ....//
削除後も有効なトラバーサルシーケンスが残ります。
https://yahooyahoo.com/loadImage?filename=....//etc/passwd
ネストされたシーケンスの動作は次のとおりです。
- ユーザー入力:
....//etc/passwd
- アプリケーションストリップ
../
: シーケンス....//
に戻る../
- 結果のパス:
/var/www/images/../etc/passwd
- 最終パスは次のように解決されます:
/etc/passwd
URL エンコードのコツ
もう1つのトリックはURLエンコードです(URLエンコードについては近々記事を書く予定です)。 ../
エンコードされた形式で表現されます(%2e%2e%2f
)。 例えば:
filename=%2e%2e%2f%2e%2e%2fetc/passwd
これにより、アプリケーションがそれを有効な入力として処理してしまう可能性があります。
パストラバーサルからの保護
パストラバーサルを防御するには:
- ファイルシステムAPIでユーザー入力を使用しない いつでも可能なとき。
- ユーザー入力を厳密に検証する:
- 許可された値のホワイトリストを使用します。
- 特定の文字(英数字など)のみを許可します。
- パスを正規化する:
- 解決されたパスが期待されるベース ディレクトリから始まることを確認します。
パストラバーサル攻撃の実際の例
1. Apache Struts CVE-2017-5638
2017 年、人気の高いオープンソースの Web アプリケーション フレームワークである Apache Struts に重大な脆弱性が発見されました。この脆弱性 (CVE-2017-5638) により、攻撃者はパス トラバーサルを悪用してサーバー上の任意のファイルを読み取って実行できるようになりました。これは、1 億 4,700 万人を超える個人情報が漏洩した大規模な Equifax データ侵害で使用された攻撃ベクトルの一部でした。攻撃者はこの脆弱性を利用してリモート コードを実行し、機密データにアクセスしました。
2. Fortinet FortiOS パストラバーサル (CVE-2018-13379)
2018 年、Fortinet の FortiOS SSL VPN Web ポータルでパス トラバーサルの脆弱性 (CVE-2018-13379) が発見されました。この欠陥により、認証されていない攻撃者が特別に細工された HTTP リソース要求を介してシステム ファイルをダウンロードできるようになりました。これを悪用すると、攻撃者はパスワード ファイルや VPN セッションの詳細などの機密情報にアクセスし、ネットワーク全体のセキュリティを侵害する可能性があります。
3. Magento eコマースプラットフォーム
人気の電子商取引プラットフォームである Magento は、長年にわたり複数のパス トラバーサル脆弱性にさらされてきました。そのような脆弱性の 1 つにより、攻撃者はファイル アップロード メカニズムを悪用して、ディレクトリ制限を回避し、悪意のあるファイルをアップロードできるようになりました。これにより、リモート コード実行が起こり、攻撃者が Web サーバーを乗っ取って機密性の高い顧客情報や支払いデータにアクセスできるようになります。
4. Nokia ストア アプリ
2012 年、Nokia Store アプリに重大なパス トラバーサルの脆弱性が見つかりました。この問題により、攻撃者はサーバーから任意のファイルをダウンロードできるようになりました。URL パラメータを操作することで、攻撃者は制限されたディレクトリや機密ファイルにアクセスでき、ユーザー データや内部構成が公開される可能性があります。
5. Rubygems.org パストラバーサル (CVE-2020-25613)
2020 年、Ruby コミュニティの gem ホスティング サービスである Rubygems.org でパス トラバーサルの脆弱性が特定されました。この脆弱性 (CVE-2020-25613) により、攻撃者はファイル パスを操作してサーバーから任意のファイルをダウンロードできるようになりました。これにより、サーバーに保存されている機密構成ファイルや資格情報が潜在的に公開される可能性があるため、重大なリスクが生じます。
6. Cisco ASA パス トラバーサル脆弱性 (CVE-2018-0296)
2018 年に、シスコの Adaptive Security Appliance (ASA) ソフトウェアに重大なパス トラバーサル脆弱性 (CVE-2018-0296) があることが判明しました。これにより、認証されていない攻撃者が細工した HTTP リクエストを送信して、機密性の高いシステム ファイルにアクセスできるようになりました。この欠陥を悪用すると、攻撃者はデバイス構成に関する情報を入手し、ネットワークに対するさらなる攻撃に利用される可能性があります。
7。 GitHub Enterprise Server パストラバーサル (CVE-2020-10546)
2020 年、GitHub Enterprise Server にパス トラバーサル脆弱性 (CVE-2020-10546) が発見されました。この脆弱性により、攻撃者は URL パスを操作することでサーバー上の任意のファイルにアクセスできます。これを悪用すると、攻撃者はリポジトリ ファイルや構成データなどの機密情報にアクセスでき、影響を受ける企業に重大なセキュリティ リスクをもたらす可能性があります。
8. WordPress プラグインの脆弱性
多くの WordPress プラグインがパス トラバーサル攻撃に対して脆弱であることが判明しています。たとえば、人気のプラグイン「Duplicate Page」には、攻撃者がサーバーから任意のファイルを読み取ることができるパス トラバーサルの脆弱性がありました。広く使用されているプラグインのこのような脆弱性は、多数の Web サイトに影響を与え、機密データを公開してさらなる攻撃を可能にする可能性があるため、重大なリスクをもたらします。
最後に
これを伝える記事を書くつもりはなかったのですが (笑)、最も安全なドアには隠し鍵があることがあります。Web セキュリティの世界では、パス トラバーサルは絶対に悪人の手に渡ってほしくない鍵の 1 つです。
パス トラバーサルの脆弱性は、ここで示したものを超えていますが、これは出発点として考えてください。優れたマジシャンは決して秘密を明かしません :)。
パス トラバーサルの脆弱性は要塞の隠し通路のようなもので、攻撃者が防御をすり抜けて大混乱を引き起こす可能性があります。これらの攻撃の仕組みを理解し、防御策を実装することで、デジタル要塞を不正アクセスからより適切に保護できます。ユーザー入力を常に検証してサニタイズし、定期的に、つまり定期的にコードとサーバー構成を確認して、潜在的な悪用を阻止してください。
いたずらは管理されました。
リソース:
Portswigger (Web セキュリティ アカデミー)
ウィキペディア