2011-03-17 7 views
14

AFAIK istnieje tylko luka w nagłówkach wiadomości e-mail, jeśli dane użytkownika są poprawne?Czy w treści wiadomości e-mail występuje luka spowodowana wstrzyknięciem?

Używam poniższej funkcji do dezynfekcji moich danych, jednak mam pewne pola textarea na stronie & dlatego mogą one zawierać łamanie linii .. więc zastanawiałem się, czy te dane użytkownika zostaną umieszczone tylko w ciele e-mail, czy to nie przeszkadza w odkażaniu - oprócz oczywiście oczyszczenia html?

Oto funkcja:

function is_injected($str) { 

    $injections = array('(\n+)', 
    '(\r+)', 
    '(\t+)', 
    '(%0A+)', 
    '(%0D+)', 
    '(%08+)', 
    '(%09+)' 
    ); 

    $inject = join('|', $injections); 
    $inject = "/$inject/i"; 

    if (preg_match($inject,$str)) { 
     return true; 
    } else { 
     return false; 
    } 

} 

Na marginesie, zaskoczony nie było obecnie tag dla poczty e-mail/wtrysku wtrysku.

+0

Czy wyświetlania danych z wiadomości e-mail na stronie, lub dokonywania formularz pozwalający wysłać jeden? – Fluffy

+0

Nie ... tworząc formularz do wysłania e-maila. :) – Brett

Odpowiedz

10

Istnieje możliwość wstrzyknięcia w treść, jeśli mówisz natywnym SMTP na serwerze pocztowym.

Pojedyncza . na własną rękę kończy bieżące ciało w SMTP, więc teoretycznie można mieć łatwy dostarczane wejście tak:

some body text 
. 
MAIL FROM: <...> 
RCPT TO: <...> 
DATA 
Subject: here's some spam 

here's a new body 

a serwer SMTP może pozwolić na drugą wiadomość poprzez.

Niektóre serwery SMTP można skonfigurować w taki sposób, aby zapobiegać temu, nie zezwalając na potokowanie komend SMTP (tj. Wymagając od klienta odczytania odpowiedzi przed zezwoleniem na następne polecenie).

+0

Więc, co powinienem sprawdzić? linia z pojedynczym "." na tym? – Brett

+0

@Brett - Tak. Jeśli zostanie znaleziony, ISTR, że konwencja ma go zastąpić dwoma kropkami. – Alnitak

+0

Ok, dziękuję! :) – Brett

4

Jeśli wiadomość e-mail jest pocztą HTML, a zwłaszcza jeśli odbiorca będzie ją wyświetlać w internetowej wiadomości e-mail (Hotmail, Gmail, Yahoo, itp.) Lub klienta poczty elektronicznej obsługującego widoki HTML, a następnie wtrysku w ciało jest zdecydowanie problemem - XSS może się zdarzyć wszędzie.

+0

Większość klientów nie pozwoli na takie rzeczy javascript/flash/css, które należy uwzględnić, tak dalece jak wyświetlanie wiadomości e-mail w zdalnych klientów obawia się, nie ma zagrożenia. – Dunhamzzz

+0

Większość klientów poczty twierdzą, że to nie pozwoli - ale czy naprawdę chcesz polegać na kompetencji grupy Hotmail/Yahoo/Gmaila złapać każdą możliwą drogę tym wrogie treści? Zawsze jest kolejna dziura. –

+0

Więc co sugerujesz, aby temu przeciwdziałać? – Brett

3

Coś, co może się zdarzyć, to dynamiczna zmiana MIME. Kiedy wysłać pocztę zazwyczaj określić Content-type w naszym skrypcie przykład:

Content-type: text/html;charset=UTF-8 

Połów jest - „Content-Type” Nagłówek może być ponownie zdefiniowane jako wieloczęściowy/mieszany (lub wieloczęściowy/alternatywne lub multipart/related), mimo że zostało wcześniej zdefiniowane.

przykład - wyobraź sobie, że typy ten ktoś do pola treści wiadomości na swojej stronie kontaktowej:

[email protected]%0AContent-Type:multipart/mixed;%20boundary=frog;%0A--frog%0AContent-Type:text/html%0A%0AMy%20Message.%0A--frog-- 

Co to zrobi - kiedy użytkownik otrzymuje komunikat, że on tylko zobaczyć wiadomość spamera (jeden ograniczony przez "--frog"), zgodnie ze specyfikacją multipart/mieszania mime. Oryginalna wiadomość "kontakt", którą programista prawdopodobnie utworzył na twardym dysku - znajdzie się również w e-mailu, ale nie będzie wyświetlana odbiorcy.

W ten sposób spamerzy mogą wysyłać spam z domen innych osób. Zwłaszcza, jeśli jest to pewnego rodzaju: "wyślij to do swojego przyjaciela". Formularz.

także - podczas filtrowania nagłówków poczty używam (nieco krótszy Chyba niż to, co tam masz):

preg_replace('/\s+/', "", $text) 
0

można również wstrzykiwać granicę MIME w wieloczęściowe wiadomości, jeśli granica nie jest losowa. W ten sposób możesz wstrzyknąć dowolną zawartość (np. Załączniki ze złośliwym oprogramowaniem).

Przykład (nie bezpośrednio związane z e-maila, ale wciąż): https://bugzilla.mozilla.org/show_bug.cgi?id=600464

Powiązane problemy