You are on page 1of 2

Daca aveti un site si un formular de mail in sectiunea contact, probabil ati fos t deja victima unui "E-Mail Injection".

La ce e bun ? E-Mail injection se refera la o vulnerabilitate care apare in foarte multe siteuri si care permite unui atacator sa "injecteze" headere in scriptul care trimit e mail. Tehnica e folosita in majoritata cazurilor de spameri sau de persoane ca re dintr-un motiv sau altul vor sa trimita un mesaj 100% anonim. Cum functioneaza ? Pentru a injecta mail avem nevoie o victima cu un formular vulnerabil care trimi te mail prin functia mail() din PHP. Sa luam urmatorul scenariu: 1. Formularul: Ceva simplu cu un camp From (sau 'Mailul dv.') si un camp text in care sa puteti scrie mesajul. Probabil ati vazut asa ceva pe multe site-uri.

Cod: <form method="GET" action="mailer.php"> From:<input type="text" name="from" /> Message:<textarea name="message" cols="20" rows="7"></textarea> <input type="submit" value=" Send! " /> </form>

2. Scriptul: Un script simplu care ia datele si le trimite:

Cod: $from = $_GET['from']; mail('adresa la care se trimite','subiect',$_GET['message'],"From: $from");

3. Concret: Dupa cum vedeti, functia mail trimite mail la o anumita adresa iar expeditorul e ste adresa care o introduceti in campul 'from'. OK, nu e chiar asa, dar asa pare la prima vedere. Daca al patrulea camp al functiei mail() (campul corespunzator headerelor) contine cuvantul cheie From:, clientul de mail considera ca mesajul vine de la adresa specificata in campul 'from'. Nimic iesit din comun pana acum, nu ? Asa e... dar in simplitatea lui, scriptul poate fi exploatat. Dupa cum se vede campul 'from' nu este filtrat. Asta inseamn a ca se pot "injecta" date care vor fi trimise ca headere in mesaj. Ganditi-va c e s-ar intampla daca dupa adresa de mail am adauga urmatorul text: Cc%3A%20victi ma @ server.com. Ca sa lamuresc putin textul, formularul trimite prin GET, ceea ce inseamna ca unele caractere sunt "codate" pentru a nu aparea erori. Astfel, c aracterul ':' este transformat in '%3A' iar caracterul ' ' (spatiu) este transfo rmat in '%20'. Deci, ce am pus acolo este echivalent cu: "Cc: victima @ server.c

om". Daca trimitem datele din formular vom vedea in bara de adresa un camp de o forma asemanatoare cu: http : //server.com/mailer.php?from=mail%40domeniu.com&message =mesaj. Asta, bineinteles, pentru ca am trimis prin metoda GET. Ca sa injectam u n header va trebui sa editam manual adresa respectiva si sa o facem de forma: ht tp : //server.com/mailer.php?from=mail%40domeniu.com%0ACc%3A%20victima @ domeniu .com&message=mesaj. Ce am facut, de fapt ? am modificat valoarea variabilei from si am adaugat un ra nd nou (%0A e ENTER codat pentru metoda GET) si am adaugat Cc%3A%20victima @ dom eniu.com care, dupa cum am spus mai sus, este "Cc: victima @ domeniu.com". Cand apelam adresa de mai sus acelasi mesaj va fi trimis in 2 casute de mail. Una din tre casute va fi cea specificata de autorul scriptului iar cea de-a doua va fi c ea specificata in linia Cc:. Altfel spus, avem un script care cu mici "retusari" va trimite mailul la adresa dorita de noi, nu doar la cea implicita. Pentru a n u mai trimite mesajul si la adresa implicita, schimbati Cc: cu To:. In multe caz uri functioneaza si adresa implicita va fi ignorata in favoarea adresei din lini a To:. OK, acum avem un formular care se poate exploata. De aici poate face fiecare dup a cum il duce imaginatia. E relativ usor sa faceti un script care va apela formu larul cu parametrii diferiti pentru fiecare adresa dintr-o lista sau ceva aseman ator. Cum ne putem proteja ? Relativ simplu. Va dau 3 idei: 1. Folositi POST ca metoda de trimitere in loc de GET. Cu POST e o idee mai comp licat si multi se lasa descurajati 2. Folositi un filtru care verifica daca exista mai mult de un caracter '@' sau daca exista cuvintele cheie "From:", "To:", "Cc:", "Bcc:". 3. Folositi un formular cu cod de securitate. Adica, o imagine care va arata un cod care trebuie introdus intr-un camp al formularului. Avantajul mare la codul de securitate e ca... chiar daca reuseste cineva sa trimita un mail anonim, nu v a putea face un script care sa-i faca treaba pentru ca scripturile nu pot citi c odul din imagine

You might also like