Загрузка...

Обход защиты SSRF

Тема в разделе Статьи создана пользователем доза 25 апр 2025. 238 просмотров

Загрузка...
  1. доза
    доза Автор темы 25 апр 2025 Заблокирован(а) 388 4 июл 2022
    [IMG]
    [IMG]
    Механизмы защиты SSRF

    Компании действительно осознали риск атак SSRF. В результате большинство внедрило некоторую форму защиты SSRF в своих веб-приложениях. Существуют два основных типа механизмов защиты SSRF: черные и белые списки.
    Черные списки относятся к запрещённой практике для определенных адресов и приводит к блокировки запроса, если черный список был получен в качестве входных данных.
    Белые списки означают, что сервер будет разрешать только те запросы, которые содержат URL-адреса в заранее заданном списке, и будет отклонять все остальные запросы.

    Обход белых списков

    Белые списки, как правило, труднее обойти, потому что они по умолчанию более защищены, чем черные списки. Но это возможно, если в доменах из белого списка есть уязвимость открытого перенаправления (Open Redirect).
    Если вы можете найти открытое перенаправление, вы можете запросить URL-адрес из белого списка, который перенаправляет вас на внутренний URL-адрес.
    Если белый список не реализован правильно (например, с помощью плохо сконструированного регулярного выражения), его также можно обойти, используя субдомен или каталог в качестве доменного имени в белом списке (например ,tims.com.attacker.com или attacker.com/victim. com).


    Обход чёрных списков

    Если вы столкнулись с черным списком, существует множество способов обмана сервера:

    Обман с перенаправлением

    Заставьте сервер запросить URL-адрес, которым вы управляете, который перенаправляет на черный список. Например, вы можете разместить файл со следующим содержимым на вашем веб-сервере:​
    <?php header(“location: http://127.0.0.1"); ?>
    Допустим, этот файл размещен по адресу http://attacker.com/redirect.php . Таким образом, когда вы делаете запрос целевого сервера http://attacker.com/redirect.php , целевой сервер фактически перенаправляется на http://127.0.0.1 внутренний адрес с ограниченным доступом.

    Измените запись A / AAAA для домена, которым вы управляете, и сделайте так, чтобы он указывал на внутренние адреса сети жертвы. Например, скажем, http://attacker.com - это ваш поддомен. Вы можете создать собственное сопоставление имени хоста с IP-адресом и разрешить http://subdomain.attacker.com использование 127.0.0.1. Теперь, когда целевой сервер запрашивает http://attacker.com , он подумает, что ваш домен расположен по адресу 127.0.0.1, и запросит данные с этого адреса!

    Использование адресов IPv6

    Попробуйте использовать адреса IPv6 вместо IPv4. Механизмы защиты, реализованные для IPv4, возможно, они не были реализованы для IPv6.

    Переключение кодировки

    Существует много разных способов кодирования URL-адреса или адреса, который не изменяет способ интерпретации сервером своего местоположения, но могут позволить ему ускользнуть из-под контроля черного списка. К ним относятся шестнадцатеричное (hex), восьмеричное (octal), двойное (dword) кодирование, URL-кодирование и смешанное кодирование.

    Шестнадцатеричное кодирование

    Шестнадцатеричное кодирование - это способ представления символов в формате base 16 (символы в диапазоне от 0 до F), а не в base 10 (десятичное, символы в диапазоне от 0 до 9). Оказывается, что серверы могут понимать IP-адреса, когда они в шестнадцатеричном коде. Чтобы преобразовать десятичный форматированный IP-адрес в шестнадцатеричный, вам необходимо рассчитать каждый раздел IP-адреса в его шестнадцатеричный эквивалент. (Или, может быть, просто используйте калькулятор ...) Вот пример:​
    27.0.0.1 translates to 0x7f.0x0.0x0.0x1
    «0x» в начале каждого раздела обозначает его как шестнадцатеричное число.

    Восьмеричное кодирование

    Восьмеричное кодирование - это способ представления символов в формате base 8. Аналогично тому, как вы переводите адрес в шестнадцатеричный формат, вы переводите IP-адрес в восьмеричную форму, пересчитывая каждый раздел IP-адреса. Например:​
    127.0.0.1 translates to 0177.0.0.01
    В этом случае ведущие нули необходимы, чтобы передать, что этот раздел является восьмеричным числом.

    Кодировка DWord


    «Dword» означает «двойное число», которое представляет собой 32-разрядное целое число. IP-адрес - это в основном 32-битное число, разделенное на четыре Октала (Восьмеричных числа) (группы по восемь битов) и записанное в десятичном формате. Например, 127.0.0.1 на самом деле является десятичным представлением 01111111.00000000.00000000.00000001. И когда мы переводим все число (01111111000000000000000000000001) в одно десятичное число, мы получаем IP-адрес в формате dword!
    Так что же такое 127.0.0.1 в dword? Это ответ для 127 * 256³ + 0 * 256² + 0 * 256¹ + 1 * 256⁰, получилось 2130706433. (Используйте обычный калькулятор! Или просто используйте конверт чисел.) Это означает, что если вы введете http: / / 2130706433 вместо http://127.0.0.1 , то ответ останется прежним! Довольно круто, верно?

    Кодировка URL

    Каждый отдельный символ в URL-адресе может быть представлен своим назначенным шестнадцатеричным номером, если ему предшествует символ%. Например, слово «localhost» может быть представлено его эквивалентом в кодировке URL, «% 6c% 6f% 63% 61% 6c% 68% 6f% 73% 74». Поэтому, когда сервер блокирует запросы ко внутренним именам хостов, таким как «localhost», попробуйте использовать его закодировнный URL-адрес!

    Смешанное кодирование

    Время смешивать и сочетать ! Вы также можете использовать комбинацию методов кодирования, чтобы попытаться обмануть сервер: возможно, это сработает?​
    127.0.0.1 translates to 0177.0.0.0x1
    Заключение

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

    Счастливого ХакингА!
     
    Этот материал оказался полезным?
    Вы можете отблагодарить автора темы путем перевода средств на баланс
    Отблагодарить автора
    25 апр 2025 Изменено
  2. exepert
    exepert 25 апр 2025 Заблокирован(а) 4920 25 ноя 2018
    приятное оформление темы кста
     
    1. Посмотреть предыдущие комментарии (1)
    2. доза Автор темы
      0nil, и тебе спасибо за рубль
  3. Пингвиниак
    Пингвиниак 29 апр 2025 Я пингвнин, добрый, красивый! 45 15 апр 2025
    Полезная тема автору спасибо, хорошая информация и оформление тоже классное!
     
Top