1.絶対パスと相対パス
過去問(H25年秋FE午後問11)では、絶対パスと相対パスに関して、以下の記載があります。
「パスは,木構造をもつファイルシステムにおいてディレクトリを特定するために利用される文字列であり,ディレクトリの名前を“/”で区切って並べて表す。“/”で始まるパスを絶対パスという。絶対パスはルートディレクトリを起点として表したパスである。“/”で始まらないパスを相対パスという。相対パスは任意のノードを起点として表したパスである。」
相対パスは、現在の場所を起点としてファイルの場所を示す書き方です。
たとえば、status.cgiの場所を示す絶対パスが以下とします。
http://192.168.0.1/images/status.cgi
現在、imagesフォルダにいる場合、status.cgiの相対パスは以下です。
./status.cgi
1.ディレクトリトラバーサルとは
トラバーサル(traversal)とは「横断」という意味である。
横断歩道は、本来は車のために縦方向にある流れを歩行者のために横に断ち切る。ディレクトリトラバーサルも同様で、横断的にファイルにアクセスする。
具体例で見てみましょう。以下のディレクトリ構造を見てください。
例えば、htmlディレクトリは公開していいファイル、secretディレクトリは非公開のファイルが格納されているとします。
また、現在のディレクトリが上記のhtmlだったとします。
ここで、相対パスとして「../../secret/secret.txt」を指定します。「../」は、上位のディレクトリを意味する文字列です。
こうすると、非公開のファイルであるsecret.txtファイルにアクセスすることができるのです(ただし、アクセス権が許可されている場合)。
過去問(H27秋AP)では、「入力文字列からアクセスするファイル名を組み立てるアプリケーションに対して,攻撃者が,上位のディレクトリを意味する文字列を入力して,非公開のファイルにアクセスする。」とあります。
「入力文字列からアクセスするファイル名を組み立てるアプリケーションに対して」ってどういう意味ですか?
IPAの以下の資料の「ディレクトリトラバーサル攻撃 」の部分が参考になります。https://www.ipa.go.jp/security/awareness/vendor/programmingv1/b07_07.html
以下のサイトがかなり重要。他にもたくさん大切なページがある
http://www.ipa.go.jp/security/vuln/vuln_contents/dt.html
では、過去問を見てみよう。
過去問(H24FE春 午前問45) |
---|
問45 ディレクトリトラバーサル攻撃に該当するものはどれか。 ア Webアプリケーションの入力データとしてデータベースへの命令文を構成するデータを入力し,想定外のSQL文を実行させる。 イ Webサイトに利用者を誘導した上で,Webサイトの入力データ処理の欠陥を悪用し,利用者のブラウザで悪意のあるスクリプトを実行させる。 ウ 管理者が意図していないパスでサーバ内のファイルを指定することによって,本来は許されないファイルを不正に閲覧する。 エ セッションIDによってセッションが管理されるとき,ログイン中の利用者のセッションIDを不正に取得し,その利用者になりすましてサーバにアクセスする。 |
↓
↓
↓
↓
↓
正解はウである。
もう一問。これの正解は「ディレクトリトラバーサル」であるが、以下を見ると、どのように不正な操作をするのかが分かると思う。
過去問(H22SC春午後Ⅱ問2設問3(1)) |
---|
[ ]に入れる適切な字句を15字以内で答えよ 図5 5021番の脅威と判定したパケットに含まれていた文字列 パケットに含まれる文字列からすると、CGIプログラムに含まれる[ ]の脆弱性を利用して、パスワードファイルを取得することをねらったもののようです。 |
有名な事件として、2003年に、某協会のホームページから個人情報1184人分が流出した。
http://www.itmedia.co.jp/enterprise/0401/23/epn14.html
原因は、サイト側の脆弱性ではあったが、そこをついて情報を公開した大学の研究者は、不正アクセス禁止法で逮捕されることになった様子。