パストラバーサルの例を動画で解説!【デモ動画シリーズ第4回】

シェア ツイート

脆弱性のデモ動画作ってみたよ、シリーズ4回目の今回は「パストラバーサル」です。

この動画シリーズの記事はこちら

パストラバーサル(Path Traversal)は、別名ディレクトリトラバーサル(Directory Traversal)といい、公開していないファイルが参照されてしまう脆弱性です。プログラムの開発者が想定していない方法でファイルを指定して、本来見られないはずのファイルの中身を見ようとする攻撃のことです。

パストラバーサル、イメージできたでしょうか?

  • パストラバーサルの脆弱性があった時、どんな感じで攻撃されてしまうんだろう?
  • 実際に攻撃されていく様子を見てみたいんだよなぁ

ワタクシもちゃじ、このように思いますが皆さんはいかがですか?

脆弱性のデモ動画をこれまで三つ(先輩が)作ってくれましたが、字面で理解していたことでも、実際に画面が動いている様子を見ると、理解が早まるんですよね。(もちゃじ調べ、もちゃじの実感)

ということで、今回も文章と動画の両方を同じ内容でご用意しましたので、テキスト派の方、動画派の方、それぞれお好みの方をご覧ください。

注意事項
この記事では、脆弱性への理解を深めていただくことを目的にパストラバーサルの具体的な手順や内容を紹介しています。ここで紹介していることを実際にお試しになる場合は、一般公開されていないご自身で開発したWebサイトでお試しください。一般公開されている、もしくは他者のWebサイトに対して、行うことのないようにお願いいたします。

動画で見る「パストラバーサル」のデモ

文章で読む「パストラバーサル」のデモ

※以下、動画と同じ内容です。

パストラバーサルとは、公開していないファイルが参照されてしまう脆弱性です。情報漏洩や改ざんの他、さらなる攻撃への足がかりとされてしまうことがあります。

このデモでは、「特定のパラメータの値を改ざんして攻撃、サーバーの設定情報を抜き出す」ことを行います。

では、実際に見てみましょう。

1.ターゲット:架空のフルーツショップ

このWebサイトは、デモ用に開発したものです。フルーツを購入できる「架空のフルーツショップ」の通販サイトです。このサイトでは、キャンペーン情報を、個々のファイルで管理して表示しています。

2.キャンペーン情報の取得

現在は、春のキャンペーン情報をspring.htmlファイルから取得しています。

夏のキャンペーン情報はsummer.htmlファイルに準備していますので、キャンペーンを切り替えるときは、このパラメータの値をsummer.htmlにするだけで、簡単に表示を変えることができます。

攻撃者は、このような動作から別ファイルを読み込んでいる仕様であることを想定します。では、このパラメータの値を改ざんしてみましょう。

3.パラメータの値を改ざんして攻撃を仕掛ける

このパラメータに、このような攻撃値を設定します。

攻撃値

../../../../../../../xampp/apache/conf/httpd.conf

これは、「相対パス」 によるファイル指定です。
相対パスは、現在のディレクトリを基準として、そこからのパスを指定する方法です。他にも「絶対パス」という一番上のディレクトリからパスを指定する方法があり、それぞれファイルにたどり着くまでのアプローチが違います。

例:
絶対パス「c:/temp/acho/file.txt」
相対パス「../../../temp/file.txt」

「../」が現在のディレクトリの「ひとつ上へ」という意味です。「../」をたくさん入れることで、一番上のディレクトリに到達、そこからWebサーバーであるApacheのディレクトリ構造を理解していれば、設定ファイルまでたどり着くことができます。

先ほどの攻撃値を設定すると、このようにサーバー内部の設定情報が表示されます。キャンペーン情報が表示されるべきところに、このように書かれていますね。

# # This is the main Apache HTTP server configuration file.

訳すと、「これは HTTPサーバー Apache の設定ファイル」であることが分かります。

この情報が見えることで直ちに危険が及ぶ訳ではありませんが、サーバーの内部情報を基に、さらなる攻撃の足がかりに利用される恐れがあります。今回は、デモ用に特に問題のなさそうなapacheの設定ファイルを開いていますが、実際の攻撃では、パスワードを保存しているようなファイルに対しても攻撃を仕掛けることが予想されます。

以上が、パストラバーサルの攻撃手法の一例です。

まとめ

今回は、パストラバーサルの脆弱性を悪用して、本来見られるはずのなかったファイルの中身が流出してしまった、という内容でした。

非公開のはずだった情報ファイルが公開されてしまう、恐ろしい脆弱性ですね、これ、個人情報やID、パスワードが含まれていた場合、最悪システムが乗っ取られてしまう恐れもありますよね。対策は、basename関数を用いるなど、直接入力された文字列をそのまま使用されないようにすることが有効です。

それについてはまた機会があれば書きたいなと思っています。

ふう、書き終えた

唐突にデフラグを思い出しました。卒論の時期に意味も分からずとりあえずやってましたが、あの画面、あの音、懐かしや。もちゃじの頭もデフラグしたらスッキリするかしら。

ライター/もちゃじ

IT業界に縁なく秘書畑をさすらい、前職はインドで社長秘書。ほぼ日本語とパッションのみで乗り切ったずうずうしさはスキルの一つか。完全なインドア派ながらたまにふらりと旅に出る。行き場のない母性を持て余し、友人の犬を溺愛するもほえられる。体が硬く、インドでヨガティーチャーに笑われたことに深く傷つく一面も。

ITド素人の私がWebセキュリティについて学び、レベルアップしていく(予定です)様子をお届けします。学びを発信することで、少しでもWebセキュリティに関する「難しそう」というイメージが下がり、苦手意識のある方たちに届いたらうれしいです。

シェア ツイート

カテゴリー

キーワード

人気の記事