Let op! Deze informatie is bedoeld voor de meer technisch gevorderde lezer. Byte kan hierbij geen technische support leveren. Ben je zelf niet zo technisch? Neem dan contact op met één van onze partners, te vinden op onze Partnerpagina.

Er zijn helaas veel verschillende manieren om anoniem (ongewenste) mail te verzenden en misbruikers maken hier graag gebruik van. Één daarvan is misbruik te maken van PHP scripts: PHP e-mail header misbruik. Sommige scripts bevatten de functie om de headers voor uitgaande mail aan te passen. Deze mail zal, eenmaal verzonden, als afzender het IP-adres van de webserver bevatten en geen enkel spoor van het IP-adres van de misbruiker.

De invoervelden van een dergelijk script variëren, maar vaak is het mogelijk om in ieder geval het onderwerp (subject), het bericht en het adres van de afzender op te geven.

PHP Mail Header Injectie

De meeste webmasters/Technisch Beheerders zetten het ontvanger (recipient) adres hardcoded in hun script, om er zeker van te zijn dat er niet naar andere adressen verzonden kan worden. In het voorbeeld hieronder is de ontvanger in het script gedefinieerd. Het onderwerp, de afzender en het bericht kunnen worden opgegeven.

<?php$to="webmaster@website.com";if(!isset($_POST["send"])){ // no post data -> display form ?> <form method="POST" action="<?=$_SERVER['PHP_SELF'];?>"> To: webmaster@website.com From: <input type="text" name="sender"> Subject : <input type="text" name="subject"> Bericht : <textarea name="message" rows="10" cols="60" lines="20"></textarea> <input type="submit" name="send" value="Send"> </form> <?}else{  // post data gevonden  $from=$_POST['sender'];  // stuur mail :  if(mail($to,$_POST['subject'],$_POST['message'],"From: $from")){    echo"Uw mail was inderdaad verzonden aan $to."; }else{   // sending failed, display error message    echo"Uw mail kon niet worden verzonden!";   } } ?>

Gebruik van de mail() functie

Deze functie, op de volgende manier aangeroepen:

<?phpmail($recipient,$subject,$message,$headers);?></code>zal de volgende output genereren:<code>To: $recipientSubject: $subject$headers $message

Als de functie dus ZO wordt aangeroepen:

<?phpmail("recipient@victim.xxx","Hello","Hi,Your site is great.Bye","From: sender@anonymous.xxx");?></code>zal de output er dus ZO uitzien:<code>To: recipient@victim.xxxSubject: HelloFrom: sender@anonymous.xxx Hi,Your site is great.Bye

Als de functie wordt aangeroepen met de volgende waarde voor Sender (op 1 regel):

sender@anonymous.www%0ACc:recipient@someothersite.xxx% 0ABcc:somebloke@grrrr.xxx,someotherbloke@oooops.xxx

..zal de output er zo uit zien…

To: recipient@victim.xxxSubject: ahemFrom: sender@anonymous.xxxCc:recipient@someothersite.xxxBcc:somebloke@grrrr.xxx,someotherbloke@oooops.xxxMy Message...

Ander misbruik, zoals het invoeren van Mime headers, is ook mogelijk (alles op 1 regel):

haxor@attack.com%0AContent-Type:multipart/mixed;% 20boundary=frog;%0A--frog%0AContent-Type:text/html%0A%0A My%20Message.%0A--frog--

..wordt..

To: recip@ient.xxxSubject: Visit www.website.xxx !From: haxor@attack.xxxContent-Type:multipart/mixed; boundary=frog;--frogContent-Type:text/htmlMy Message.--frog--Hello,A friend thought you might want to see this page : www.website.xxx.Bye Bye

Advies

Zorg er dus voor dat je alle invoer van je script filtert op hexadecimale tekens en linefeeds (0x0a of tekens). Klik hier voor meer informatie.

10