Gå til innhold

mail() og headerinjection


Anbefalte innlegg

Jeg har et stort problem. Domenet mitt er brukt til å sende ut millioner av spam-epost lørdag formiddag med det resultat av domenet er sagt opp hos leverandør. Leverandør sier at det er mitt ansvar å sikre skriptene mine og det har jeg tenkt å gjøre.

 

Min første tanke er at bad guy har brukt epostskriptet på siden, og mitt spørsmål blir da hvordan jeg kan sikre at spam fra mitt domene ikke skjer igjen.

 

Jeg forsøkte å lese litt om header-injection i wikipedia, men de kunne likegjerne skrevet på gresk. Er det noen som kan forklare (på godt norsk) slik at en blondine (as my self) kan forstå?

 

Og når jeg skal behandle input fra bruker... skal jeg escape de med htmlspecialchars eller htmlentities eller stip_tags?

 

Finnes det andre veier inn til phps mailfunksjon enn gjennom epostskriptet?

Lenke til kommentar
Videoannonse
Annonse

Hei,

jeg kjører alle skjemafelter gjennom en spamsjekk før de går ut som mail.

 

En forkortet versjon:

function spamsjekk($streng)
{
$forbudt = "/(%0A|%0D|\\n+|\\r+)(content-type:|mime-version:|cc:|bcc:)/i";
if(preg_match($forbudt, $streng))
{
 // debug ??
 // exit(); ??
 return false;
}
else
{
 return true;
}
}


if(spamsjekk($tittel) && spamsjekk($melding))
{
// ok
}
else
{
// fy og fy
}

 

Om du ikke validererer epost adresser etc. så må også disse feltene spamsjekkes.

Lenke til kommentar

http://www.securephpwiki.com/index.php/Email_Injection

 

Vet ikke om du har lest denne.

Spørsmålet er egentlig hvilke felter du har åpnet for brukeren til å bestemme og bruken.

 

Både "to:"- og "subject:"-feltene er potensielle risikomomenter.

"to:"-feltet kan oftest sikres ved å sjekke at det kun er én mailadresse i feltet, og "subject:"-feltet kan som regel sikres ved å sjekke at det _ikke_ inneholder en mailadresse.

 

Siden jeg ikke vet mer om hva du bruker dette til er det vanskelig å si nøyaktig hva du skal gjøre, men dersom formen kun skal sende mail til én og én person, og du ikke trenger å kunne oppgi mailadresser i emnefeltet, så burde dette kunne hjelpe deg en del.

Lenke til kommentar

Så en gang en film om hvordan man gjorde nettopp det du vil sikre deg mot, og jeg har ikke lyst til å legge ut adressa til den her, da det er mange som kan finne ut at de vil prøve dette.

 

Om du er interesert, kan jeg sende deg en PM med adressa, så gjør du bare det i motsatt rekkefølge.

Lenke til kommentar
$forbudt = "/(%0A|%0D|\\n+|\\r+)(content-type:|mime-version:|cc:|bcc:)/i";

Hva er det du sier her? Jeg skjønner \r\n,, og at det ikke skal stå noe content-type, mime-version, cc eller bcc noe sted, men %0A og %0D.... hva er det?

 

 

Jeg skal prøve å legge om til mer ekstensiv sjekking.

 

Men er det muligheter for at det er andre "hull" enn epostskript?

Eks et innloggingsskjema?

Lenke til kommentar

Finnes det noen som kan teste ut epostskriptet mitt?

Jeg har lagt til hva jeg tror er en anti-spam-funksjon, har testet med epostadresser separert med %0A osv.

Jeg får alltid nice try, men det kan være fordi jeg ikke vet hvordan jeg skal trigge skriptet

 

 

Finnes her, feel free, men be gentle. Jeg er allede kastet ut fra et domene, vil nødig miste nibbler også.

http://nibbler.no/blog/?page_id=2

 

Forsøk helst bare å sende til multippel mottakere, var det som var problem sist.

 

mvh og på forhånd takk,

Lenke til kommentar

Hva med å legge til en flood limit, sånn at en person ikke kan sende to mailer rett etter hverandre, men må vente i 30 sec.

Ellers så kan du generere et random tall som blir tatt med i formen (hidden) og skrive samme tallet i session og sjekke det mot hverandre, sånn at en person ikke kan sende mail fra en annen form. Eller sjekke referer.

 

edit: i mitt mail script har jeg sånn at personen som sender får opp en side med "you sure you wanna send?". Det besytter mot de fleste bots også.

Endret av MC2
Lenke til kommentar
Hva med å legge til en flood limit, sånn at en person ikke kan sende to mailer rett etter hverandre, men må vente i 30 sec.

Ellers så kan du generere et random tall som blir tatt med i formen (hidden) og skrive samme tallet i session og sjekke det mot hverandre, sånn at en person ikke kan sende mail fra en annen form. Eller sjekke referer.

 

edit: i mitt mail script har jeg sånn at personen som sender får opp en side med "you sure you wanna send?". Det besytter mot de fleste bots også.

6201942[/snapback]

 

Problemet er ikke at de kaller scriptet 100 ganger, men at de greier å putte inn 100 adresser i ett kall. Altså at de ved å skrive inn noe i f.eks "Fra-adresse" i et mail-skjema greier de å få puttet inn "BCC: 100-adresser-her" i headeren før mailen sendes.

Lenke til kommentar
Hva med å legge til en flood limit, sånn at en person ikke kan sende to mailer rett etter hverandre, men må vente i 30 sec.

Ellers så kan du generere et random tall som blir tatt med i formen (hidden) og skrive samme tallet i session og sjekke det mot hverandre, sånn at en person ikke kan sende mail fra en annen form. Eller sjekke referer.

 

edit: i mitt mail script har jeg sånn at personen som sender får opp en side med "you sure you wanna send?". Det besytter mot de fleste bots også.

6201942[/snapback]

 

Problemet er ikke at de kaller scriptet 100 ganger, men at de greier å putte inn 100 adresser i ett kall. Altså at de ved å skrive inn noe i f.eks "Fra-adresse" i et mail-skjema greier de å få puttet inn "BCC: 100-adresser-her" i headeren før mailen sendes.

6204305[/snapback]

 

Jeg fikk nettopp en epost fra en semi-tom, med r og n i format \\r og \\n. Er det okay? Fikk semi-tom også epost?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...