セキュリティ 2023.10.23

ディレクトリトラバーサルとは?攻撃手法と対策方法5つを解説

この記事を書いた人

土井 純也

WordPressスペシャリスト・エンジニア/株式会社e2e 取締役 / CTO

1985年北海道生まれ。
200社以上の大手上場企業のWordPressサイトの制作、保守・セキュリティをサポートしている。

【 展開しているサービス一覧 】
■WordPress開発サービス「wp.make
■WordPress保守/運用サービス「wp.support
■WordPressハッキング/緊急復旧対応サービス「wp.rescue
■WordPressバージョンアップ代行サービス「wp.versionup

ディレクトリトラバーサルとは、不正なパラメータを入力することでサーバー上のファイルへ不正アクセスできるという脆弱性です。この脆弱性を悪用した攻撃では情報漏洩や不正改ざんなどの重大な被害を生むリスクがあるので注意が必要です。

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

ディレクトリトラバーサル(directory traversal)とは、不正なパスを挿入することでサーバーから非公開のファイルやディレクトリが操作または閲覧できてしまう脆弱性のこと。

ディレクトリを横断(トラバーサル)して非公開のディレクトリへ不正にアクセスすることから、この名称がつけられています。

この脆弱性を悪用し、本来非公開のファイルを操作する攻撃をディレクトリトラバーサル攻撃(パストラバーサル攻撃)と呼びます。主な攻撃対象は、外部からのパラメーターを用いてサーバー上のファイルを直接指定する構造のWebサイトやWebアプリケーションです。

ディレクトリトラバーサル攻撃の手口とは

攻撃者は、機密情報が含まれたファイルの位置を相対パスで指定して、非公開ファイルへのアクセスを試みます。

例えば、あるWebサーバーでは、「companies」フォルダに各企業の情報が書き込まれたファイル(ファイル名は企業コードと一致)を保存しているとします。また「etc」フォルダには、企業のパスワード情報が書き込まれたpasswdファイルが保存されています。

ディレクトリトラバーサル攻撃の手口とは

ユーザーが自社の企業コード「0012」を入力すると、その企業コードと同じ名前の0012ファイルを表示するプログラムが記述されています。

脆弱性が放置されていたり適切な処理が行われていない状況だった場合、攻撃者が企業コードではなく「../etc/passwd」という相対パス入りのパラメータを入力することで、サーバーが相対パスを変換(正規化)してしまい、非公開であるはずのpasswdファイルへアクセスできてしまいます。

その結果、攻撃者はファイルを盗み見たり削除したりすることができるようになります。

絶対パスと相対パス

ディレクトリトラバーサル攻撃が成立する理由は、パスの記述方法にあります。

そもそも「パス」とは、フォルダやファイルの位置を表す文字列のことで、ファイルやプログラムが別の場所にあるファイルを参照する際に使用します。

例えば、以下のパスであれば、「sample-web.com」の下層フォルダである「news」フォルダの下層フォルダ「images」内にある「image.jpg」というファイルを示しています。

https://www.sample-web.com/news/images/image.jpg

パスの書き方には、絶対パスと相対パスの2種類があります。

上記のように、全てのパスを省略せずに表記する方法が絶対パスです。

一方相対パスは、その名のとおり基準となる場所からの位置を相対的に表記します。例えば、上記のimage.jpgをhttps://www.sample-web.com/news/index.php から参照する場合は、

./images/image.jpg

と表記します。
先頭の「./」という文字列が、現在のディレクトリ「https://www.sample-web.com/news/」を表しているんですね。

「./」は現在のディレクトリを表しますが、現在のディレクトリのひとつ上の階層は「../」という文字列で表されます。
この「../」という相対パスの記述が絶対パスに置き換えられる(正規化される)ことで、攻撃者は設定ファイルなどのターゲットとなるファイルへアクセスすることができます。

ディレクトリトラバーサル攻撃は、このように相対パスから絶対パスへの正規化の仕組みを悪用したものです。

WordPressサイトが狙われる理由

ディレクトリトラバーサル攻撃は、WordPressサイトが狙われるケースもあります。

他の脆弱性と比較すると、ディレクトリトラバーサルの報告数はそれほど多くはありません。しかし、年間で数件〜10件程度は報告されており、攻撃を受けた際の被害の大きさを考えると無視はできない状況です。

WordPressサイトが狙われる理由としては、以下が挙げられます。

プラグインでディレクトリトラバーサルの脆弱性が報告されている

WordPressでは機能を追加できるプラグインが多数提供されています。
無料で導入できるため、複数個のプラグインを利用するケースが多いです。

このプラグインにディレクトリトラバーサルの脆弱性が見つかることがあります。

WordPress本体だけでなく、WordPressライブラリに公開されているプラグインもオープンソースであるため、ソースコードだけでなく脆弱性情報も開示され、悪意のあるユーザーも認識できます。

多くの場合、脆弱性発見と同時にセキュリティアップデートも公開され、バージョンアップを行うことで脆弱性を解消することが可能です。

ただし、WordPressは世界で最も人気のあるCMSであり、個人や中小企業などリテラシーが低いユーザーも一定数存在します。

攻撃者はそうしたユーザーを狙うことで、苦労することなく攻撃を成功させることが可能になります。

逆に言えば、最新のバージョンを利用する、脆弱性情報公開時にセキュリティバージョンアップに対応する、更新日が古いプラグインを使用しないなど、基本的な推奨ルールを守っていればリスクは最小限に抑えることができます。

プラグインでディレクトリトラバーサルの脆弱性が報告されている

システム構成が共通なのでファイルを推測しやすい

WordPressは、フォルダの階層やファイル名が基本的に共通しています。このため、攻撃者にとってはディレクトリを推測しやすく、どの情報がどのファイルに保存されているかが容易に把握できます。

特に、WordPressではwp-config.phpファイルに重要な情報が多く含まれることがよく知られています。そのため、wp-config.phpファイルへの相対パスを指定する攻撃が頻繁に行われています。

ディレクトリトラバーサル攻撃による影響

ディレクトリトラバーサル攻撃を受けることで、情報漏洩やファイル改ざんなどの被害を受ける可能性があります。

情報漏洩

ユーザーのID・パスワード情報やシステム関連の重要情報などが漏洩する可能性があります。パスワード流出により、不正ログインなどさらなる被害につながるリスクもあります。

WordPressでは、ユーザーのID・パスワードなどはデータベースで管理されますが、wp-config.php等のファイルを閲覧することで、データベースへのアクセス情報も漏洩する可能性があります。

情報漏洩はユーザーへの2次被害が懸念されることに加え、サイト・ブランド・会社に対するユーザーの信頼が大きく損なわれるリスクもあります。

ファイルの改ざん、データ削除

設定ファイルやソースコードを改ざんされたり、データを削除される可能性があります。

ソースコードが改ざんされると、プログラムの内容が書き換えられたり、ダウンロードファイルの参照先やリンク先が不正なサイトに変更される可能性があります。

これによりWebサイトを閲覧しているユーザーが知らないうちに別の不正サイトへ転送され、マルウェアに感染する危険性があります。また、フォーム送信のプログラムを改ざんされた場合はユーザーがフォームに入力した内容が外部に流出する危険性があります。

ソースコードの改ざんは被害が起きるまで気付かないケースも多く、問題が発覚した時には既に大規模な被害が発生している場合もあります。

ディレクトリトラバーサル攻撃を防ぐ5つの対策

ディレクトリトラバーサル攻撃を防止するため、以下の5つの対策を行うことが有効です。

外部からファイル名を指定できないようにする

攻撃者は不正なパラメータを指定して攻撃を行います。このため、そもそも外部からのパラメータでWebサーバー上のファイルを指定できないようにすることで、ディレクトリトラバーサル攻撃が実行できないようにします。

ファイルのアクセス権限を設定する

非公開のディレクトリは、外部からのアクセスを制限します。アクセスが制限されていれば、万が一攻撃された場合でもファイルへアクセスされる事態を防げます。同様に、他のファイルにもアクセス権限を設定しておきましょう。

入力内容をチェックする

入力パラメータの内容をチェックし、ディレクトリを指定できる文字列が含まれている場合には、該当の文字列を置換するなどの処理を行うようにするのも有効です。

具体的には、パスを区切る「/」や上位ディレクトリへ遡る「../」などの文字列をチェックし、影響のない文字列に置換(サニタイズ)します。例えば、「/」を「%2F」という文字列に変換することで、プログラムがパスを区切るという意味を解釈できないようにします。

WAFを導入する

WAF(Web Application Firewall:ワフ)は、Webサーバーの通信を検査・解析して攻撃を遮断してくれるセキュリティの一種です。

主にWebサーバーの前段に設置し、Webサービス・Webアプリケーションのセキュリティ的に弱い部分である「脆弱性」を狙った攻撃から包括的にWebサイトを守るために利用します。

通信内容を事前に定義したリストを元に検査することで、サイバー攻撃などの危険な通信を遮断することが可能です。

WAFに関しては、以下の記事で詳しく解説していますので、こちらも参考にしてください。

おすすめのWAF製品9選!選び方のポイント

脆弱性が発見された場合は速やかにバージョンアップする

ディレクトリトラバーサル攻撃は、Webアプリケーションの脆弱性を悪用した攻撃です。そのため脆弱性を放置せず、サイトを安全な状態に保つことがもっとも基本的な対策です。WordPress本体、プラグイン、テーマなどを最新バージョンにアップデートするほか、不要なプラグインは削除するなどの対策が有効です。

まとめ

Webサイトのセキュリティ維持は、ユーザーに信頼感を与え、企業の評判を保つうえで不可欠です。

ディレクトリトラバーサルは、情報漏洩などの深刻な被害に繋がる可能性があるうえ、攻撃を受けたことに気づきづらい脆弱性です。

この記事を参考に対策を行って安全なサイト運用を心がけましょう。

最新の脆弱性情報を追うことが難しかったり、WordPress・プラグイン等のバージョンアップに対応することが難しい場合は、WordPress保守サービスを利用するのも有効です。

WordPress保守・運用のパートナーなら「wp.support」にお任せ!

WordPressサイトを運用していて、以下のようなお悩みはありませんか?

  • 管理画面を使いやすくしたいけれど、カスタマイズする時間や技術がない…
  • サイトのUI/UXを改善したいけれど、自社内では難しい…
  • WordPressサイトを高速化したいけれど、ノウハウがない…
  • セキュリティ対策をしたいけれど、知識のある人材がいない…
  • 日々の業務に追われて、バージョンアップなどの保守業務が放置気味…
  • ちょっとしたトラブルを気軽に相談できる相手が欲しい…

「wp.support」は、WordPressのプロフェッショナル集団によるWordPress保守サービスです。
「セキュリティ対策」「バージョンアップ対応」「定期バックアップ」はもちろん、「電話サポートが無制限」なのでカスタマイズの方法やトラブル発生時にも気軽にプロに相談できます。

既に導入済みのお客様からも、
「些細なことでも気軽に相談できるパートナー的な存在」
「困ったら相談していいんだ、と気持ちが楽になった」
と大変ご好評をいただいています。

WordPress保守・運用のパートナーをお探しなら、ぜひお気軽にお問合せください。

>> wp.supportに無料相談する

バージョンアップが面倒だと思ったら WordPress保守・セキュリティ対策は『wp.support』にお任せ!

wp.support資料

WordPressのバージョンアップやセキュリティ対策にお悩みではないですか?

面倒な保守・運用作業は全て任せて、コア事業に集中してください。
大手・上場企業100社以上のWebサイトの安全を守る、WordPressのプロフェッショナル集団が、あなたのWordPressサイトを守ります!

【対応範囲】
・WordPress、プラグインのバージョンアップ ・セキュリティ対策 ・継続的なバックアップ ・緊急時の復旧対応 ・技術サポート・電話/メールサポート無制限 etc...

WordPressに関することなら何でもご相談ください!