Individuare gli script PHP che inviano SPAM: differenze tra le versioni

(Creata pagina con '__TOC__ == Introduzione == Quando un sito in PHP viene viene utilizzato per inviare tonnellate di email di SPAM tramite una qualche vulnerabilità nel codice, la prima cosa che ...')
 
Riga 9: Riga 9:


== Configurazione di PHP ==
== Configurazione di PHP ==
Creiamo un nuovo file contenente le istruzioni personalizzate:
<pre>
# nano /usr/local/bin/sendmail-php
</pre>
con contenuto:
<pre>
#!/usr/bin/php
<?php
/**
  Script per tracciare in un log tutti gli script che fanno uso
  della funzione PHP mail().
  Author: Till Brehm, www.ispconfig.org
  (Hopefully) secured by David Goodwin <david @ _palepurple_.co.uk>
  Test e implementazione: Ferdinando Bassi per Debianizzati.org
*/
$sendmail_bin = '/usr/sbin/sendmail';
$logfile = '/var/log/mail_php.log';
//* Get the email content
$logline = '';
$pointer = fopen('php://stdin', 'r');
while ($line = fgets($pointer)) {
        if(preg_match('/^to:/i', $line) || preg_match('/^from:/i', $line)) {
                $logline .= trim($line).' ';
        }
        $mail .= $line;
}
//* compose the sendmail command
$command = 'echo ' . escapeshellarg($mail) . ' | '.$sendmail_bin.' -t -i';
for ($i = 1; $i < $_SERVER['argc']; $i++) {
        $command .= escapeshellarg($_SERVER['argv'][$i]).' ';
}
//* Write the log
file_put_contents($logfile, date('Y-m-d H:i:s') . ' ' . $_ENV['PWD'] . ' ' . $logline, FILE_APPEND);
//* Execute the command
return shell_exec($command);
?>
</pre>