これは何?
Nginxを使ってディレクトリトラバーサルを試せる環境を作成しました。
GitHub Repository
Nginx Alias Traversalとは
Nginxは設定ミスによりディレクトリトラバーサルの脆弱性が発生します。
In the pattern where this location is used in combination with alias, a critical vulnerability arises when two conditions are met:
- no trailing slash at the end of the URL specified in the location
- a trailing slash at the end of the path specified in the alias
# correct nginx.conf settings
location /good/ {
alias /var/img/;
}
# vulnerble nginx.conf settings
location /bad {
alias /var/img/;
}
locationで指定するパスが/
で終わっておらず,aliasで指定するパスが/で終わる条件が満たされるとディレクトリトラバーサルが可能になります。
デモを動かす
-
GitHub Repositoryをクローンします。
-
Dockerコンテナを起動します。
cd directory_traversal/ docker compose up
-
http://localhost:82にアクセス
-
下のリンクをクリックすると本来ユーザからはアクセスできないはずのaccess.logのサンプルにアクセスでき,ダウンロードされます。