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
 .
 ...