LFI2RCE via phpinfo()
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Отримайте перспективу хакера на ваші веб-додатки, мережу та хмару
Знайдіть і повідомте про критичні, експлуатовані вразливості з реальним бізнес-імпактом. Використовуйте наші 20+ спеціальних інструментів для картографування поверхні атаки, знаходження проблем безпеки, які дозволяють вам підвищити привілеї, і використовуйте автоматизовані експлойти для збору важливих доказів, перетворюючи вашу важку працю на переконливі звіти.
Щоб експлуатувати цю вразливість, вам потрібно: Вразливість LFI, сторінка, на якій відображається phpinfo(), "file_uploads = on" і сервер повинен мати можливість записувати в директорію "/tmp".
https://www.insomniasec.com/downloads/publications/phpinfolfi.py
Tutorial HTB: https://www.youtube.com/watch?v=rs4zEwONzzk&t=600s
Вам потрібно виправити експлойт (змінити => на =>). Для цього ви можете зробити:
Вам також потрібно змінити payload на початку експлойту (наприклад, для php-rev-shell), REQ1 (це має вказувати на сторінку phpinfo і містити заповнення, тобто: REQ1="""POST /install.php?mode=phpinfo&a="""+padding+""" HTTP/1.1), та LFIREQ (це має вказувати на вразливість LFI, тобто: LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r -- Перевірте подвійну "%" під час експлуатації нульового символу)
Якщо завантаження дозволено в PHP і ви намагаєтеся завантажити файл, цей файл зберігається в тимчасовому каталозі, поки сервер не закінчить обробку запиту, потім цей тимчасовий файл видаляється.
Тоді, якщо ви знайшли вразливість LFI на веб-сервері, ви можете спробувати вгадати назву тимчасового файлу, що створюється, і експлуатувати RCE, отримуючи доступ до тимчасового файлу до його видалення.
У Windows файли зазвичай зберігаються в C:\Windows\temp\php
У linux назва файлу зазвичай випадкова і розташована в /tmp. Оскільки назва випадкова, потрібно витягти звідкись назву тимчасового файлу і отримати до нього доступ до його видалення. Це можна зробити, прочитавши значення змінної $_FILES всередині вмісту функції "phpconfig()".
phpinfo()
PHP використовує буфер 4096B, і коли він повний, він надсилається клієнту. Тоді клієнт може надсилати багато великих запитів (використовуючи великі заголовки) завантажуючи php зворотний shell, чекати на першу частину phpinfo(), що повертається (де знаходиться назва тимчасового файлу) і намагатися отримати доступ до тимчасового файлу до того, як php сервер видалить файл, експлуатуючи вразливість LFI.
Скрипт Python для спроби брутфорсити назву (якщо довжина = 6)
Отримайте перспективу хакера щодо ваших веб-додатків, мережі та хмари
Знайдіть і повідомте про критичні, експлуатовані вразливості з реальним бізнес-імпактом. Використовуйте наші 20+ спеціальних інструментів для картографування поверхні атаки, знаходження проблем безпеки, які дозволяють вам підвищити привілеї, і використовуйте автоматизовані експлойти для збору важливих доказів, перетворюючи вашу важку працю на переконливі звіти.
Вчіться та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вчіться та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)