Возможность произвольной записи файла на сервер через токен php сессии

Я прочитал, что пользователь может перезаписать произвольные файлы в файловой системе, указав специально созданное значение для токена PHPSESSID при входе в систему. И он заявляет, что может перезаписать другие файлы сеанса или удалить другие системные файлы.

Только авторизованный пользователь может получить доступ к приложению. Мы поддерживаем сессию в файловой системе. Имя файла сеанса - это идентификатор сеанса с префиксом строковой константы. Когда есть запрос от клиента, мы берем идентификатор сеанса из PHPSESSID и добавляем строковую константу к идентификатору сеанса и используем его в качестве имени файла для этого сеанса в файловой системе. Только авторизованный пользователь может

Например:

PHPSESSID = A3KJHT63XK496LSDNTJ45

имя файла сеанса и файловая система будет "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". Это то, что в ходе аудита уязвимостей безопасности говорится, что, поскольку имя файла указывается напрямую, существует возможность удаления или перезаписи этого системного файла.

В этом случае любая созданная строка через идентификатор сеанса (например, "../../php.log"), которая имеет префикс с некоторой другой строковой константой, такой как "STRING", чтобы получить окончательную строку "STRING../.. /php.log ", который становится действительным. Имена файлов с таким именем не существует в файловой системе и не может быть никакой уязвимости безопасности.

Тем не менее, я хотел бы знать, какую еще уязвимость представляет вышеуказанный метод?

0 ответов

Другие вопросы по тегам