Перевод: Обход загрузки файлов в RCE == $$$$

Перевод: Обход загрузки файлов в RCE == $$$$

@Ent_TranslateIB

Привет всем. Меня зовут Сагар Саджеев.

В этой статье я расскажу, как мне удалось обойти функцию загрузки файлов на цели и связать ее с RCE. Тем самым увеличивая серьезность.

Самое интересное, что команда безопасности целевого сайта 3 раза исправляла одну и ту же уязвимость, но мне удалось обойти исправления все три раза. Поэтому я также объясню все три сценария обхода в этой статье.

Также я получил 3 награды (за 3 обхода) за одну и ту же уязвимость. Таким образом, это мой первый 4-значная награда $$$$ 🤑.

Сценарий №1

  1. Полезная нагрузка с расширением .php не разрешена.
  2. Переименование полезной нагрузки из : 'payload.php' в 'payload.pHp5'. Замена расширений на произвольные верхние и нижние регистры позволяет обойти эту проблему.
  3. Но обратите внимание, что такие полезные нагрузки работают только в том случае, если цель имеет проверку только на стороне клиента. Поэтому иногда полезная нагрузка может пройти через фронтенд, но вы можете не получить обратный вызов, так как он был заблокирован IDS или брандмауэром бэкенда.
  4. В данном случае я получил обратный вызов, и RCE был установлен.
Награда №1 была получена
Команда безопасности развернула исправление и попросила меня подтвердить его.
Я смог обойти его. Как? Это подводит нас к сценарию №2.

Сценарий №2

  1. Полезная нагрузка с расширением .php не разрешена.
  2. Переименование полезной нагрузки с 'payload.php' на 'payload.php\x00.png' Добавление \x00.png в конец обошло ограничение (нулевой байт).
  3. Правый клик → просмотр изображения в новой вкладке запустил скрипт.
  4. RCE был достигнут.

Примечание:-

  • В некоторых случаях можно также использовать .inc, .phps, .phtml.
  • При их использовании убедитесь, что вы изменили content-Type соответствующим образом. P.S : Здесь также возможен хранимый XSS.
Награда №2 была получена
Команда безопасности снова развернула исправление и попросила меня подтвердить его.
Угадайте что, я снова обошел его. Как? Давайте перейдем к сценарию № 3.

Сценарий №3

  • На этот раз потребовалось время, чтобы найти подходящий обходной путь. Они установили строгое правило, разрешающее только изображения.
  • Мне не удалось выяснить, как целевое веб-приложение проверяло, действительно ли данные являются изображением. Но после долгих поисков я обнаружил, что они проверяли магические байты полезной нагрузки, чтобы убедиться в этом.
  • Иногда приложения определяют типы файлов на основе их первых сигнатурных байтов. Их добавление/замена в файле может обмануть приложение.
Магический байт - это не что иное, как первые несколько байтов файла, которые используются для распознавания файла. Он не виден при открытии файла. Для просмотра магических байтов файла нужны специальные шестнадцатеричные редакторы.
Я использую Linux. Поэтому я могу использовать встроенный шестнадцатеричный редактор и xxd для просмотра и редактирования магических байтов. Но вы можете использовать любой шестнадцатеричный редактор для достижения тех же результатов.
  • Я также обнаружил, что бэкэнд фильтрует и удаляет определенные ключевые слова. Например, он удаляет термин '.php'. Поэтому мы можем переименовать файл в 'payload.p.phphp'. Когда фильтр удалит '.php', имя файла станет 'payload.php'. Поскольку на этом этапе брандмауэр был обойден, скрипт будет выполнен. В этом мне помогло одно из видео Джона Хэммонда.
  1. 89 50 4e 47 0d 1a 0a → магические байты png-файла
  2. echo "89 50 4e 47 0d 1a 0a" | xxd -p -r >> payload.p.phphp
  3. Загрузите скрипт и получите полноценный RCE.
Награда №3 была получена
Команда безопасности снова развернула исправление.
И я не смог найти никакого обхода для него. Поэтому я остановился на этом.
Мне сообщили, что они ужесточили процессы валидации и проверки файла и внедрили среду "песочницы".

Бонусный совет

После того как команда безопасности развернет исправление уязвимости, о которой вы сообщили, она попросит вас подтвердить, действительно ли уязвимость была устранена. Поэтому постарайтесь проверить, можно ли найти обходное решение. Если да, это может даже принести вам больше вознаграждения.

Временная шкала

Отправлено : 02-08-2022

Принято : 03-08-2022

Награда #1 : 04-08-2022

Награда #2 : 06-08-2022

Награда #3 : 09-08-2022

Решено : 10-08-2022

Время от времени я делюсь некоторыми советами о Bug Bounties и связанных с ними вещах на своих страницах в Twitter и LinkedIn. Так что следите за мной там. Если у вас есть какие-либо вопросы, не стесняйтесь писать мне. Я буду более чем счастлив помочь.

LinkedIn : https://www.linkedin.com/in/sagar-sajeev-663491208/

Twitter : https://twitter.com/Sagar__Sajeev

Спасибо, что просмотрели мою статью, и я надеюсь, что она была вам полезна. Я написал еще 5 статей на своем Medium. Пожалуйста, ознакомьтесь и с ними.

Счастливой охоты!

Оригинал статьи - здесь.
Поддержите автора хлопками на Medium.


Перевод статьи был выполнен проектом перевод энтузиаста:

  • 📚 @Ent_TranslateIB - Телеграмм канал с тематикой информационной безопасности
  • 🔥 @Ent_Translate - Инстаграм проекта

Report Page