|
Antes de analisarmos como o e-mail injection funciona, precisamos ver como a função mail() do php funciona. Aqui está a sintaxe básica desta função:
<?php mail($destinatario,$assunto,$mensagem,$cabecalho); ?>
Utilizando o exemplo acima, os seguintes resultados serão obtidos:
To: $destinatario
Subject: $assunto
$cabecalho
$mensagem
Sabendo disso, podemos assumir a hipótese de que um usuário malicioso tenha a intenção de incluir campos adicionais ao cabeçalho, como "cc" e "bcc", ou até mesmo outro "to". Então, se um spammer conhece uma maneira de inserir qualquer coisa o seu cabeçalho, ele pode facilmente utilizar seu formulário para enviar spam para quem desejar.
Para compreender isso, imagine que o conteúdo a seguir é inserido no campo "to" (para) do seu formulário:
To understand, assume that the following is inserted in the "to" field of your form:
you@place.www%0Acc:any1@site.xxx%0Abcc:some1@host.yyy,person@blah.zzz%0Ato:guy@server.jjj
Os dados reais do e-mail seriam:
To: you@place.www
cc: any1@site.xxx
bcc: some1@host.yyy,person@blah.zzz
to: guy@server.jjj
Diante desta situação, o spammer teria conseguido enviar a mensagem para quatro pessoas de sua escolha com sucesso.
Note que não são apenas estes campos que são manipuláveis, mas também o subject, a mensagem e tudo mais que o usuário malicioso desejar. Logo, o spammer pode enviar qualquer mensagem, com qualquer subject para qualquer pessoa. Para completar, caso o spammer manipule o campo MIME "Content-type" ele pode até separar a mensagem em partes para que apenas o que ele deseja seja processado e fique visível para as vítimas.
Parece um problemão? Realmente é, se você não sabe como se proteger.
Clique aqui para descobrir maneiras de tornar seus scripts mais seguros.
|