Email-инъекция
E-mail-инъекция — это техника атаки, используемая для эксплуатации почтовых серверов и почтовых приложений, конструирующих IMAP/SMTP выражения из выполняемого пользователем ввода, который не проверяется должным образом. В зависимости от типа операторов, используемых злоумышленником, выделяют два типа инъекций: IMAP инъекция и SMTP инъекция.
IMAP / SMTP инъекции позволяют получить доступ к почтовому серверу, к которому ранее доступа не было. В некоторых случаях эти внутренние системы не имеют того же уровня безопасности, что и остальная инфраструктура. Таким образом, злоумышленники могут обнаружить, что почтовый сервер, дает лучшие результаты с точки зрения эксплуатации. Этот метод позволяет избежать возможных ограничений, которые могут существовать на уровне приложений (CAPTCHA, максимальное количество обращений и т. д.).
Типичная структура IMAP / SMTP инъекции заключается в следующем:
Header: окончание ожидаемой команды Body: инъекция новых команд Footer: начало ожидаемой команды
Важно отметить, что для того, чтобы выполнились IMAP / SMTP команды, предыдущие команды должны были прекращены с CRLF (% 0d% 0a) последовательностью.
Некоторые примеры нападений с использованием IMAP / SMTP инъекции техники являются:
- Эксплуатация уязвимостей IMAP/SMTP протокола;
- Уклонение от ограничений приложений;
- Уклонение от антиробота;
- Утечка информации;
- Спам.
Примеры сценариев атак
[править | править код]IMAP инъекции Поскольку инъекция проводится на сервере IMAP, формат и характеристики этого протокола должны соблюдаться. Почтовые приложения обычно взаимодействуют с сервером IMAP, чтобы выполнять свои функции в большинстве случаев и, следовательно, более уязвимы для атак такого типа.
Давайте посмотрим на пример IMAP инъекции, использующей функциональные возможности чтения сообщений. Предположим, что приложение использует параметр веб-почты «message_id», чтобы сохранить идентификатор сообщений, которые пользователь желает прочитать. Когда запрос, содержащий идентификатор сообщения отправляется, это будет выглядеть следующим образом:
http:// <webmail> / read_email.php? message_id = <номер>
Предположим, что php-скрипт «read_email.php», отвечающий за показ связанного с ним сообщения, передает запрос на сервер IMAP, не выполняя никаких проверок на значение <номер>, указанное пользователем. Команда, отправленная на почтовый сервер будет выглядеть следующим образом:
FETCH <number> BODY[HEADER]
В связи с этим, злоумышленник может попытаться провести атаку IMAP инъекции через параметр «message_id», используемый приложением для связи с сервером. Например, команда IMAP «CAPABILITY» может быть введена, используя следующую последовательность:
http://<webmail>/read_email.php?message_id=1 BODY[HEADER]%0d%0aV001 CAPABILITY%0d%0aV002 FETCH 1
Это позволит произвести следующую последовательность команд IMAP на сервере:
???? FETCH 1 BODY[HEADER] V001 CAPABILITY V002 FETCH 1 BODY[HEADER]
где:
Header = 1 BODY[HEADER] Body = %0d%0aV100 CAPABILITY%0d%0a Footer = V101 FETCH 1
SMTP инъекции Поскольку инъекция команд производится под сервером SMTP, формат и характеристики этого протокола должны соблюдаться. В связи с ограничением операций приложений, использующих протокол SMTP, мы в основном ограничены отправкой электронной почты. Использование SMTP инъекций требует, чтобы пользователь прошел проверку подлинности ранее, поэтому необходимо, чтобы злоумышленник имел действующую веб-почту.
Предположим, что приложение электронной почты ограничивает количество электронных писем, отправленных в выбранный период времени. SMTP инъекция позволит уклониться от этого ограничения, просто добавляя команды RCPT, как направления, в нужном злоумышленнику количестве:
POST http://<webmail>/compose.php HTTP/1.1 -----------------------------134475172700422922879687252 Content-Disposition: form-data; name="subject" Test . MAIL FROM: external@domain1.com RCPT TO: external@domain1.com RCPT TO: external@domain2.com RCPT TO: external@domain3.com RCPT TO: external@domain4.com Data This is an example of SMTP Injection attack . -----------------------------134475172700422922879687252 ...
Это создаст следующую последовательность SMTP команд, которые будут отправлены на почтовый сервер:
MAIL FROM: <mailfrom> RCPT TO: <rcptto> DATA Subject: Test . MAIL FROM: external@domain.com RCPT TO: external@domain1.com RCPT TO: external@domain2.com RCPT TO: external@domain3.com RCPT TO: external@domain4.com DATA This is an example of SMTP Injection attack . ...
Ссылки
[править | править код]- Command Injection. Project: WASC Threat Classification. Threat Type: Attack. Reference ID: WASC-30»
- 0821: Simple Mail Transfer Protocol» (недоступная ссылка)
- 3501: Internet Message Access Protocol — Version 4rev1» (недоступная ссылка)
- «CRLF Injection by Ulf Harnhammar» (недоступная ссылка)
- Injection — Injecting email headers» (недоступная ссылка)
- Mail Functions discussions»
- «E-mail Spoofing and CDONTS.NEWMAIL», David Litchfield
- for IMAP/SMTP Injection», Vicente Aguilera. (недоступная ссылка)
- «MX Injection : Capturing and Exploiting Hidden Mail Servers», Vicente Aguilera.