- Регистрация
- 13 Июн 2025
- Сообщения
- 26
- Реакции
- 1
- Баллы
- 3
Что такое CRLF Injection?
CRLF (Carriage Return + Line Feed) Injection — это уязвимость, позволяющая злоумышленнику вставлять управляющие символы (
Как работает уязвимость?
Веб-приложение некорректно обрабатывает пользовательский ввод, что позволяет добавить в ответ сервера произвольные заголовки или контент.
Пример уязвимого кода (PHP):
Атакующий может отправить запрос:
И сервер отправит ответ:
Это приведет к перенаправлению на вредоносный сайт.
Чем опасна эта уязвимость?
• Подмена HTTP-ответов (например, добавление
• XSS через заголовки (если ответ выводится без экранирования)
• Обход CSP (внедрение
• Кеш-отравление (вставка вредоносных заголовков
Как обнаружить?
1. Ищите параметры, влияющие на заголовки (
2. Пробуйте вставлять
3. Проверяйте, можно ли добавить произвольные заголовки.
Методы защиты
• Фильтруйте
• Используйте стандартные функции для кодирования (
• Запрещайте управляющие символы в заголовках.
Примеры из реальной жизни (CVE)
• CVE-2021-29472 — CRLF Injection в Next.js
• CVE-2019-9740 — Уязвимость в Python urllib
• CVE-2018-1002105 — Подобная атака в Kubernetes
⚠ Используйте эти знания только в образовательных целях и в рамках ответственного разглашения!
CRLF (Carriage Return + Line Feed) Injection — это уязвимость, позволяющая злоумышленнику вставлять управляющие символы (
%0D%0A
) в HTTP-запросы, чтобы модифицировать заголовки ответа или тело страницы. Как работает уязвимость?
Веб-приложение некорректно обрабатывает пользовательский ввод, что позволяет добавить в ответ сервера произвольные заголовки или контент.
Пример уязвимого кода (PHP):
Код:
<?php
$user_input = $_GET['param'];
header("X-User-Data: " . $user_input);
?>
Атакующий может отправить запрос:
Код:
https://example.com/?param=test%0D%0ALocation:%20https://evil.com%0D%0A%0D%0A
И сервер отправит ответ:
Код:
HTTP/1.1 200 OK
X-User-Data: test
Location: https://evil.com
(пустая строка)
Это приведет к перенаправлению на вредоносный сайт.
Чем опасна эта уязвимость?
• Подмена HTTP-ответов (например, добавление
Set-Cookie
или Location
) • XSS через заголовки (если ответ выводится без экранирования)
• Обход CSP (внедрение
Content-Security-Policy
с ослабленными настройками) • Кеш-отравление (вставка вредоносных заголовков
Cache-Control
) Как обнаружить?
1. Ищите параметры, влияющие на заголовки (
?redirect=
, ?lang=
, ?session_id=
). 2. Пробуйте вставлять
%0D%0A
и смотрите, разбивается ли ответ. 3. Проверяйте, можно ли добавить произвольные заголовки.
Методы защиты
• Фильтруйте
\r
(%0D
) и \n
(%0A
) в пользовательском вводе. • Используйте стандартные функции для кодирования (
urlencode()
, htmlspecialchars()
). • Запрещайте управляющие символы в заголовках.
Примеры из реальной жизни (CVE)
• CVE-2021-29472 — CRLF Injection в Next.js
• CVE-2019-9740 — Уязвимость в Python urllib
• CVE-2018-1002105 — Подобная атака в Kubernetes
⚠ Используйте эти знания только в образовательных целях и в рамках ответственного разглашения!