UNIX, Linux, Programare, Scripting, Retele
unix, linux, programare, script, hosting, server, retele
|
Lista Forumurilor Pe Tematici
|
UNIX, Linux, Programare, Scripting, Retele | Reguli | Inregistrare | Login
POZE UNIX, LINUX, PROGRAMARE, SCRIPTING, RETELE
Nu sunteti logat.
|
Nou pe simpatie: alexxandra la Simpatie.ro
 | Femeie 24 ani Timis cauta Barbat 26 - 59 ani |
|
operabilus
B.O.F.H.
 Din: Sillycon Valley
Inregistrat: acum 20 ani
Postari: 200
|
|
Daca aveti un site si un formular de mail in sectiunea contact, probabil ati fost deja victima unui "E-Mail Injection".
La ce e bun ? E-Mail injection se refera la o vulnerabilitate care apare in foarte multe site-uri si care permite unui atacator sa "injecteze" headere in scriptul care trimite mail. Tehnica e folosita in majoritata cazurilor de spameri sau de persoane care 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 trimite 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.
Code:
<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:
Code:
$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 este 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 inseamna ca se pot "injecta" date care vor fi trimise ca headere in mesaj. Ganditi-va ce s-ar intampla daca dupa adresa de mail am adauga urmatorul text: Cc%3A%20victima @ 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, caracterul ':' este transformat in '%3A' iar caracterul ' ' (spatiu) este transformat in '%20'. Deci, ce am pus acolo este echivalent cu: "Cc: victima @ server.com". 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 un header va trebui sa editam manual adresa respectiva si sa o facem de forma: http : //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 rand nou (%0A e ENTER codat pentru metoda GET) si am adaugat Cc%3A%20victima @ domeniu.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 dintre casute va fi cea specificata de autorul scriptului iar cea de-a doua va fi cea 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 nu mai trimite mesajul si la adresa implicita, schimbati Cc: cu To:. In multe cazuri functioneaza si adresa implicita va fi ignorata in favoarea adresei din linia To:. OK, acum avem un formular care se poate exploata. De aici poate face fiecare dupa cum il duce imaginatia. E relativ usor sa faceti un script care va apela formularul cu parametrii diferiti pentru fiecare adresa dintr-o lista sau ceva asemanator.
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 complicat 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 va putea face un script care sa-i faca treaba pentru ca scripturile nu pot citi codul din imagine 
Sper ca am fost destul de explicit. Astept intrebari si nelamuriri 
_______________________________________ Portal SkullBox SkullBox Forum IP Finder and web browser details revealer
|
|
| pus acum 19 ani |
|
|
Sad_Dreamer
Membru
Inregistrat: acum 19 ani
Postari: 57
|
|
|
| pus acum 19 ani |
|
operabilus
B.O.F.H.
 Din: Sillycon Valley
Inregistrat: acum 20 ani
Postari: 200
|
|
Adevaru' e ca tocmai m-am trezit cand am inceput sa-l scriu... nu stiu ce am visat aseara, dar cand m-am pus la calculator m-am apucat sa scriu tutorialul... anyway, intelegi tu... ora matinala, inca nu mi-am baut cafeaua... vezi tu ce a iesit... si oricum, daca as face toate tutorialele sa le intelegi din prima te-ai plictisi 
_______________________________________ Portal SkullBox SkullBox Forum IP Finder and web browser details revealer
|
|
| pus acum 19 ani |
|
|
Sad_Dreamer
Membru
Inregistrat: acum 19 ani
Postari: 57
|
|
|
| pus acum 19 ani |
|
|
Sad_Dreamer
Membru
Inregistrat: acum 19 ani
Postari: 57
|
|
|
| pus acum 19 ani |
|
salieri
Newbi
 Din: Sufragerie
Inregistrat: acum 19 ani
Postari: 8
|
|
Ok.. nu e deloc greu Email injection.. de fapt, chiar stiam email injection.. Dar cand se foloseste metoda POST ? Cum drq se mai face injectarea? Daca as zice ca raspunsul este sa faci un forumular cu <form action="pagina_cu_functie_trimitere_mail" method="post"> si cu <input name">`urile la fel ca alea originale, as zice o prostie? Nu am testat si de aia intreb 
_______________________________________ Portal SkullBox SkullBox Forum IP Finder and web browser details revealer
|
|
| pus acum 19 ani |
|
operabilus
B.O.F.H.
 Din: Sillycon Valley
Inregistrat: acum 20 ani
Postari: 200
|
|
Ti-as spune cum se face dar stiu doar teoretic treaba... cu formular nu merge, trebuie sa faci un mic programel care trimite datele prin post si le trimite cu ce vrei tu, nu cu ce iti pune la dispozitie formularul (bineinteles, pastrand numele variabilelor).
_______________________________________ Portal SkullBox SkullBox Forum IP Finder and web browser details revealer
|
|
| pus acum 19 ani |
|