LFI2RCE Via temp file uploads

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Перевірте повні деталі цієї техніки за посиланням https://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf

Завантаження файлів PHP

Коли движок PHP отримує POST-запит, що містить файли у форматі згідно з RFC 1867, він генерує тимчасові файли для зберігання завантажених даних. Ці файли є важливими для обробки завантаження файлів у сценаріях PHP. Функцію move_uploaded_file слід використовувати для переміщення цих тимчасових файлів до бажаного місця, якщо потрібне постійне зберігання поза виконанням сценарію. Після виконання PHP автоматично видаляє будь-які залишкові тимчасові файли.

Попередження про безпеку: Атакувальники, які знають місце розташування тимчасових файлів, можуть використовувати уразливість локального включення файлів для виконання коду, отримуючи доступ до файлу під час завантаження.

Виклик для несанкціонованого доступу полягає в передбаченні імені тимчасового файлу, яке спеціально рандомізоване.

Експлуатація на системах Windows

На Windows PHP генерує імена тимчасових файлів за допомогою функції GetTempFileName, що призводить до шаблону типу <шлях>\<префікс><uuuu>.TMP. Зокрема:

  • Типовий шлях зазвичай C:\Windows\Temp.

  • Префікс зазвичай "php".

  • <uuuu> представляє унікальне шістнадцяткове значення. Критично, через обмеження функції використовуються лише менші 16 біт, що дозволяє максимум 65 535 унікальних імен з постійним шляхом і префіксом, що робить можливим перебір.

Більше того, процес експлуатації спрощений на системах Windows. Особливість у функції FindFirstFile дозволяє використовувати маски в шляхах локального включення файлів (LFI). Це дозволяє створити шлях включення на зразок наступного для пошуку тимчасового файлу:

http://site/vuln.php?inc=c:\windows\temp\php<<

У певних ситуаціях може знадобитися більш конкретна маска (наприклад, php1<< або phpA<<). Можна систематично спробувати ці маски, щоб виявити завантажений тимчасовий файл.

Експлуатація на системах GNU/Linux

Для систем GNU/Linux випадковість у назвах тимчасових файлів є надійною, що робить їх непередбачуваними та несприятливими для атак методом перебору. Додаткові деталі можна знайти у зазначеній документації.

Last updated