やられアプリ BadTodo - 19 ディレクトリ・リスティング

前回:やられアプリ BadTodo - 18 クローラへの耐性 - demandosigno

前回で「ウェブ健康診断仕様」を終えたつもりだったのですが、一つ漏れていました。

ディレクトリ・リスティング

Webサーバの機能の一つで、末尾が「/」で終わるURLを指定されそこにデフォルトページ(index.htmlなど)が存在しない場合、ディレクトリに含まれるファイル名やサブディレクトリを一覧にしてWebブラウザに送信する機能があります。

ディレクトリリスティングとは - 意味をわかりやすく - IT用語辞典 e-Words
ソフトウェアの配布サイトなど、Webサーバを利用者に提供するファイルの集積場のように使う場合には、存在するファイルの一覧をWebページの形でいちいち作らなくてもサーバが自動的に一覧表示してくれるため便利である。

こういうのですね。

一方、サーバ上に管理用のシステムや外部には非公開の情報、設定ファイルなどを置いている場合、その位置や内容も閲覧者に公開してしまうため、情報漏洩や不正操作の原因となる。明確に必要な用途でない限り、Webサーバ導入時には最初にディレクトリリスティング機能を無効に設定することが推奨されている。

これを手動で網羅的に探すのは大変なため ZAPなどのクローラーを使います。
結果を見ると「ディレクトリブラウジング」として3つ検出されています。

一覧

https://todo.example.jp/api/

https://todo.example.jp/api/v1/


https://todo.example.jp/attachment/

重要情報が記載された非公開のファイル

/attachment/ において「64e13114-memo.txt」をクリックすると、重要情報が記載されていました。

このファイルは本来は「非公開」となっているファイルです。

(実はURLhttps://todo.example.jp/attachment/64e13114-memo.txtさえ分かれば誰でも閲覧できてしまうので「アクセス制御や認可制御の欠落」の問題でもあります。)

その他

「proxy.php」はTodoを新規登録する際にURL欄に入力すると流れるリクエストで、プレビュー画面を表示するためのもののようです。

何か悪さできそうな気もしますが……。後日にします。
BadTodo - 21 サーバーサイドリクエストフォージェリ(SSRF)脆弱性がありました。

/icons/

また icons ディレクトリも閲覧できました。

同じように icons が閲覧できるサイトをたまに見かけますが、

ウェブ健康診断仕様 p.13「ディレクトリ・リスティング」には
icons 等、明らかに無害なものは報告しません。」とあります。

次回:やられアプリ BadTodo - 20 A4:2017 - XML外部エンティティ参照 (XXE) - demandosigno

/* -----codeの行番号----- */