Валидатор URL-адресов веб-перехватчиков Firefly III (IsValidWebhookUrl.php) фильтрует большинство частных/зарезервированных диапазонов IPv4, но содержит явный ранний возврат, который разрешает любой разрешенный адрес в 127.0.0.0/8, позволяя аутентифицированному пользователю (с включенными веб-перехватчиками, которые по умолчанию отключены) настроить веб-перехватчик, нацеленный на службы обратной связи на сервере. Кроме того, валидатор разрешает целевое имя хоста один раз с помощью gethostbyname() во время проверки, но фактический исходящий запрос (StandardWebhookSender.php, через Guzzle) повторно разрешает имя хоста независимо во время отправки, позволяя злоумышленнику, перепривязывающему DNS, пройти проверку на общедоступный IP-адрес и доставить реальный запрос на частный или внутренний адрес. Тело ответа веб-перехватчика записывается только в журнал отладки на стороне сервера, а не возвращается инициирующему пользователю, поэтому это слепой примитив SSRF, а не примитив с прямым обратным считыванием ответа.
Показать оригинальное описание (EN)
Firefly III's webhook URL validator (IsValidWebhookUrl.php) filters most private/reserved IPv4 ranges but contains an explicit early-return that allows any resolved address in 127.0.0.0/8, permitting an authenticated user (with webhooks enabled, which is off by default) to configure a webhook targeting loopback services on the server.
Характеристики атаки
Последствия
Строка CVSS v3.1