ログイン時に PHPSESSID トークンに特別に細工された値を指定することで、ユーザーがファイルシステム上の任意のファイルを上書きできることを読みました。また、他のセッションファイルを上書きしたり、他のシステム関連ファイルを削除したりできると述べています。
ログインしたユーザーのみがアプリケーションにアクセスできます。ファイルシステムでセッションを維持します。セッション ファイル名は、セッション ID の先頭に文字列定数を付けたものです。クライアントからのリクエストがあるたびに、PHPSESSID からセッション ID を取得し、セッション ID の先頭に文字列定数を追加して、ファイル システム内のそのセッションのファイル名として使用します。ログインしたユーザーのみ可能
例えば:
PHPSESSID = A3KJHT63XK496LSDNTJ45
セッションファイル名iファイルシステムは「STRINGA3KJHT63XK496LSDNTJ45」になります
次のようなリクエストを行うことで、既存のファイルを上書き/削除する可能性は何ですか...
POST /login HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Macintosh; ...(truncated)
Cookie: PHPSESSID=../../php.log;
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 47
login=login&username=user1&password=Password1234
上記の例から、セッション ファイルは「STRING../../php.log」という名前で作成/アクセスされます。これは、ファイル名が直接提供されるため、そのシステム ファイルが削除または上書きされる可能性があるとセキュリティ脆弱性監査が述べているものです。
この場合、最終的な文字列 "STRING../.. /php.log」が有効になります。そのようなファイル名はファイル システムに存在せず、セキュリティ上の脆弱性も存在しません。
それでも、上記の方法がもたらす他の脆弱性を知りたいですか?