Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Webmaster-Security Fragen zur richtigen Serverkonfiguration oder Absicherung dynamischer Scripte gehören hier hinein.

Datenklau auf HP: Angriffspunkte?

Diskussion: Datenklau auf HP: Angriffspunkte? im Forum Webmaster-Security, in der Kategorie Security Area; Anzeige Hallo beisammen! Ich hab gerade mit einer Domain Probleme. Ich weiss nicht wie, aber unsere Konkurrenz kommt irgendwie an ...

Antwort
Alt 08.08.06, 10:39   #1 (permalink)
 
Registriert seit: 08.08.06
yoyo Leistung: Facit NTK
Likes: 0
Standard Datenklau auf HP: Angriffspunkte?

Anzeige

Hallo beisammen!

Ich hab gerade mit einer Domain Probleme. Ich weiss nicht wie, aber unsere Konkurrenz kommt irgendwie an unsere Kundendaten. Was ich suche: den Angriffspunkt und die Lösung des Problems.

Details: Kundendaten werden über PHPformmail 1.07rc2 mit hardcodiertem recipient und injectionchek auf allen nötigen Feldern versandt. Ein Formular geht über SSL, das andere nicht. Betroffen sind beide.

Die Serverlogs bei dem Provider sind leider dürftig, geben nicht viel her.
Wo würde ein solcher Angriff stattfinden? Auf dem Server oder auf das Email-Postfach oder dazwischen?

Wir hatten vorher alle Daten auf dem Server gespeichert. Jetzt eben wegen dem Verdacht nicht mehr. Und trotz SSL, langen Passwörtern, regelmäßigem Wechsel: Die Daten werden definitiv ausspioniert!

Zeige mich sicher erkenntlich für Hilfe, die das Loch stopft.

Vielen Dank schon mal
yoyo

yoyo ist offline   Mit Zitat antworten
Alt 08.08.06, 10:58   #2 (permalink)
Senior Member
 
Registriert seit: 18.09.05
[starfoxx] Leistung: Facit NTK
Likes: 0
Standard

Der einfachheit halter:
Ein "Angreifer" liest eure Mails mit?
Auch wenn mir klar ist dass du das nicht sagen wirst würds mich nicht schlecht interessieren wie du/ihr darauf kommt.

Was für eine Art Injection Check ist das?
Was selbstgebasteltes? Was von ner "veralteten" php version?

Was für einen Webserver benutzt ihr?
Evtl könnte man mit sog. cross scripting was auslesen (noch bevor php irgendwas damit zu tun hat) aber da kenn ich mich noch zu wenig aus, ich hab erst dialogboxen auf "fremde" seiten gebastelt..

Was für einen Email Server benutzt ihr?
Wäre jo möglich dass das irgend ne billige Mistsoftware ist (du sagst ja "host", daher kein rootserver) für welche im Inet exploits gross und breit getreten werden...

Und zuletzt wäre ein auszug der phpinfo() wohl recht hilfreich
[starfoxx] ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 08.08.06, 11:01   #3 (permalink)
 
Registriert seit: 01.09.05
naked_chef Leistung: Facit NTK
Likes: 0
Standard

wo landen die daten am ende? in einer datenbank die übers web zu erreichen ist?
oder werden die formulare in einem ordner abgelegt der übers web zu erreichen ist?

schon mal überlegt ob es auch ein eigener mitarbeiter sein kann der sensible daten weiter gibt?

Zitat:
Wo würde ein solcher Angriff stattfinden? Auf dem Server oder auf das Email-Postfach oder dazwischen?
wenn es eine SSL verschlüsselte verbindung ist dan ist ein angriff dazwischen ehr unwarscheinlich ...
dann wäre ich wieder bei meinen anfangs fragen auf was für eine art server landen die daten bzw. formulare ?
naked_chef ist offline   Mit Zitat antworten
Alt 08.08.06, 11:22   #4 (permalink)
Themenstarter
 
Registriert seit: 08.08.06
yoyo Leistung: Facit NTK
Likes: 0
Standard

wow...das geht rund...hier bleib ich :-)


Angreifer liest definitiv Mails mit. Kunden bekommen Anfragen von anderen Anbietern, während sie definitiv Ihre Daten nur bei uns eingegeben haben.

Der Injaction Check ist der reguläre von PHPformmail 1.07rc2, laut diversen Foren sehr sicher: http://www.boaddrink.com/projects/phpformmail/

System: Linux infong 2.4 #1 auf WebPlus bei Schlund
PHP Version 4.4.2

Die Daten landeten früher in einer csv-Datenbank auf dem Server. Hab ich als erstes gekillt, weil handgebastelt und unsicher. Jetzt geht alles über Formmailer direkt an Email.

Eigener Mitarbeiter: ja, auch schon überlegt, ist aber unwahrscheinlich, da Mails intern nur auf Papier weitergegeben werden. Da müsste einer viel tippen.

Trojaner vielleicht? Aber die Mails werden auch nur auf einem Rechner abgerufen. Und der ist ganz gut gesichert. Vielleicht mal Spybot oder Adaware...

In den logfiles ab ich gerade in letzter Zeit ungeheuer viele 404 mit xmlrpc. SOllte nicht stören, wir haben ausser dem Formular nix dynamisches.
yoyo ist offline   Mit Zitat antworten
Alt 08.08.06, 18:29   #5 (permalink)
m1ndless
Guest
 
Likes:
Standard

Hmm... ich bin auch relativ sicher, dass jmd in deiner Firma was damit zu tun hat. Denn so wie sich das anhört, hilft jmd aus deiner Firma dem anderem Unternehmen oder er macht es sogar ganz alleine und verkauft dann diese Kundendaten (da wäre er net der Erste)...

Aber nun zu deinem Problem. Ich vermute mal entweder hat ein Mitarbeiter den PHP-Code geändert (wäre 2 Zeilen um jede Mail-Anfrage auch an seine Mail-Adresse zu versenden), oder er verkauft die Daten direkt an ein anderes Unternehmen, oder es werden Fehler in der Server-Software ausgenutzt. Das sind so die gängigsten Methoden...
Auf jeden Fall wird dir so keiner helfen können. Es gibt ca 1000 Wege wie er das angestellt haben könnte. Und ohne weitere Infos können wir nur raten und da stehen die Chancen dann 1:1000

Ich kann verstehen wenn du die Daten hier nicht posten möchtest, aber wenn du willst, kannst du mir ne PN mit den Infos schicken, dann kann ich mal drüber schauen.
Also, ich bräuchte die Webadresse, und eine Kopie der Datei von eurem Formmailer. Dann können wir mal weiterschauen.
  Mit Zitat antworten
Alt 08.08.06, 21:08   #6 (permalink)
 
Registriert seit: 01.09.05
naked_chef Leistung: Facit NTK
Likes: 0
Standard

nimm dir etwas zeit und gehe das gesamte konzept noch einmal durch, schau nach abnormalitäten in den vorgängen. soweit wie es dir möglich ist analysiere den code der verwendeten programme oder scripte. schau nach welche genaue server versionen du hast und google nach eventuellen sicherheitslücken und eventuell schon vorhandene exploits.

überprüfe deine mitarbeiter, aber pass auf, rechtlich bewegt man sich bei solchen sachen auf sehr dünnem eis.

ich kann mich nur der meinung von m1ndless anschließen ...
wir tappen im dunkel. um effektiv helfen zu können benötigen wir informationen.
(ich weis es lässt sich meistens nicht mit der versprochenen Schweigepflicht gegenüber des arbeitgebers vereinen.)
naked_chef ist offline   Mit Zitat antworten
Alt 09.08.06, 11:03   #7 (permalink)
Themenstarter
 
Registriert seit: 08.08.06
yoyo Leistung: Facit NTK
Likes: 0
Standard

vielen Dank für die ganzen Meinungen. Ich kann hier noch das formmail Script anbieten, welches wir verwenden. Aber wie schon gesagt, das dürfte ziemlich wasserdicht sein. Es gab für die Urversion mal Exploits in Form von Formmail-Injections, allerdings war immer irgend einer so doof, dass verstümmelte Teile beim richtigen Empfänger ankamen, plus selbstverständlich etliches vom Mailer Daemon. Ausserdem eignen Sich ja Injection Exploits nicht zum Abfangen von Emails, es sei denn der Kunden ist "kundig" und will seine Daten massenversenden.

Mitarbeiter überprüfen mit Loggern ist doch legal, solange man begründeten verdacht hat, oder?

vielen Dank, yoyo

PHP-Code:
<?PHP
define
('VERSION','Classic v1.07.2');
define('MANUAL','http://www.boaddrink.com/projects/phpformmail/readme.php');
define('CHECK_REFERER'true);

$referers = array('domain.de');
foreach(
$referers as $referer)    {
    if(
substr($referer,0,4)!="www.")array_push($referers,"www.".$referer);
}
$recipient_array = array();
$valid_env = array('REMOTE_HOST''REMOTE_ADDR''REMOTE_USER''HTTP_USER_AGENT');

$errors $fieldname_lookup = array();
$invis_array = array('recipient','subject','required','redirect',
             
'print_blank_fields','env_report','sort',
             
'missing_fields_redirect','title','bgcolor',
             
'text_color','link_color','alink_color',
             
'vlink_color','background','subject','title',
             
'link','css','return_link_title',
             
'return_link_url','recipient_cc','recipient_bcc',
                 
'priority','redirect_values','hidden','alias',
         
'mail_newline''gmt_offset''alias_method',
         
'subject_prefix');
         
$form decode_vars();
$form[recipient]="info@domain.de";
$logfilename="langergemeinerlogfilename-nurfüripsundfehler.html";

$logfile=$DOCUMENT_ROOT."/".$logfilename;



function 
fake_in_array($needle$haystack)
{
    
$found false;
    while (list(
$key,$val) = each ($haystack)) {
        if (
$needle == $val)
            
$found true;
    }
    return 
$found;
}

function 
check_referer($referers)
{
    global 
$errors,$logfile;
    if (
count($referers)) {
        if (
getenv('HTTP_REFERER')) {
            
$temp explode('/'getenv('HTTP_REFERER'));
            
$found false;
            while (list(,
$stored_referer) = each($referers)) {
                if (
eregi('^' $stored_referer '$'$temp[2]))
                    
$found true;
            }
            if (!
$found) {
                
$errors[] = '1|You are coming from an unauthorized domain.  Please read the manual section titled &quot;<a href="' MANUAL '#setting_up" target="_blank">Setting Up the PHPFormMail Script</a>&quot;.';
                
error_log('<br>['.date('d.m.y H:i:s').'] Illegal Referer. (' getenv('HTTP_REFERER') . ')'3$logfile);

            }
            return 
$found;
        } else {
            
$errors[] = '0|Sorry, but I cannot figure out who sent you here.  Your browser is not sending an HTTP_REFERER.  This could be caused by a firewall or browser that removes the HTTP_REFERER from each HTTP request you submit.';
            
error_log('<br>['.date('d.m.y H:i:s').'] HTTP_REFERER not defined. Browser: ' getenv('HTTP_USER_AGENT') . '; Client IP: ' getenv('REMOTE_ADDR') . '; Request Method: ' getenv('REQUEST_METHOD') . ';'3$logfile);
            return 
false;
        }
    } else {
        
$errors[] = '1|There are no referers defined.  All submissions will be denied.  Please read the manual section titled &quot;<a href="' MANUAL '#setting_up" target="_blank">Setting Up the PHPFormMail Script</a>&quot;.';
        
error_log('<br>['.date('d.m.y H:i:s').'] You have no referers defined.  All submissions will be denied.'3$logfile);
        return 
false;
    }
}

function 
check_recipients($recipient_list)
{
    global 
$errors$referers$logfile;
    
$recipients_ok true;
    
$recipient_list explode(','$recipient_list);
    while (list(,
$recipient) = each($recipient_list)) {
        
$recipient_domain false;
        
$recipient trim($recipient);
        
reset($referers);
        while ((list(,
$stored_domain) = each($referers)) && ($recipient_domain == false)) {
            if (
eregi('^[_\.a-z0-9-]*@' $stored_domain '$'$recipient))
                
$recipient_domain true;
        }
        if (
$recipient_domain == false) {
            
$recipients_ok false;
            
error_log('<br>['.date('d.m.y H:i:s').'] Illegal Recipient: ' $recipient ' from ' getenv('HTTP_REFERER'), 3$logfile);
        }
    }
    if (!
$recipients_ok)
        
$errors[] = '1|You are trying to send mail to a domain that is not in the allowed recipients list.   Please read the manual section titled &quot;<a href="' MANUAL '#setting_up" target="_blank">Setting Up the PHPFormMail Script</a>&quot;.';
    return 
join(','$recipient_list);
}

function 
map_recipients($recipient_list)
{
    global 
$errors$recipient_array;
    
$recipients_ok true;
    
$recipient_list explode(',',$recipient_list);
    while (list(,
$val) = each($recipient_list)){
        
$val trim($val);
        if(isset(
$recipient_array[$val]))
            
$output[] = $recipient_array[$val];
        else
            
$recipients_ok false;
    }
    if (!
$recipients_ok)
        
$errors[] = '1|You are trying to send mail to an address that is not listed in the recipient array.';
    if (isset(
$output))
        return 
join(','$output);
    else
        return 
null;
}

function 
decode_vars()
{
    if (isset(
$_REQUEST))
        
$request '_' getenv('REQUEST_METHOD');
    else
        
$request 'HTTP_' getenv('REQUEST_METHOD') . '_VARS';
    global $
$request;
    if (
count($$request) > 0) {
        while (list(
$key$val) = each($$request)) {
            if (
is_array($val))
                
$val implode(', ',$val);
            
$output[$key] = stripslashes($val);
        }
        return 
$output;
    } else
        return array();
}

function 
error()
{
    global 
$form$natural_form$errors;
    if (isset(
$form['missing_fields_redirect'])) {
        if (isset(
$form['redirect_values']))
            
header('Location: ' $form['missing_fields_redirect'] . '?' getenv('QUERY_STRING') . "\r\n");
        else
            
header('Location: ' $form['missing_fields_redirect'] . "\r\n");
    } else {
        if(!isset(
$form['title']))
            
$form['title'] = 'PHPFormMail - Error';
        
$output "<h1>The following errors were found:</h1>\n<ul>\n";
        
$crit_error 0;
        while (list(,
$val) = each ($errors)) {
            list(
$crit,$message) = explode('|',$val);
            
$output .= '  <li>' $message "</li>\n";
            if (
$crit == 1)
                
$crit_error 1;
        }
        
$output .= "</ul>\n";
        if (
$crit_error == 1)
            
$output .=  "<div class=\"crit\">PHPFormMail has experienced errors that must be fixed by the webmaster. Mail will NOT be sent until these issues are resolved.  Once these issues are resolved, you will have to resubmit your form to PHPFormMail for the mail to be sent.</div><div class=\"returnlink\">Please use the <a href=\"javascript: history.back();\">back</a> button to return to the site.</div>\n";
        else
            
$output .=  "<div class=\"returnlink\">Please use the <a href=\"javascript: history.back();\">back</a> button to correct these errors.</div>\n";
        
output_html($output);
    }
}

function 
check_required()
{
    global 
$form$errors$invis_array$fieldname_lookup;
    
$problem true;
    if ((!isset(
$form['recipient'])) && (!isset($form['recipient_bcc']))) {
        
$problem false;
        
$errors[] = '1|There is no recipient to send this mail to.  Please read the manual section titled &quot;<a href="' MANUAL '#recipient" target="_blank">Form Configuration - Recipient</a>&quot;.';
        
error_log('<br>['.date('d.m.y H:i:s').'] There is no recipient defined from ' getenv('HTTP_REFERER'), 3$logfile);
    }
    if (isset(
$form['required'])) {
        
$required split(','$form['required']);
        while (list(,
$val) = each($required)) {
            
$val trim($val);
            
$regex_field_name $val '_regex';
            if ((!isset(
$form[$val])) || (isset($form[$val]) && (strlen($form[$val]) < 1))) {
                
$problem false;
                if (isset(
$fieldname_lookup[$val]))
                    
$field $fieldname_lookup[$val];
                else
                    
$field $val;
                
$errors[] = '0|Required value (<b>' $field '</b>) is missing.';
            } else if (isset(
$form[$regex_field_name])) {
                if (!
eregi($form[$regex_field_name],$form[$val])) {
                    
$problem false;
                    
$errors[] = '0|Required value (<b>' $fieldname_lookup[$val] . '</b>) has an invalid format.';
                }
                
$invis_array[] = $regex_field_name;
            }
        }
    }
    return 
$problem;
}


function 
sort_fields()
{
    global 
$form;
    switch (
$form['sort']) {
        case 
'alphabetic':
        case 
'alpha':        ksort($form);
                    break;
        case 
'ralphabetic':
        case 
'ralpha':        krsort($form);
                    break;
        default:        if (
$col strpos($form['sort'],':')) {
                        
$form['sort'] = substr($form['sort'],($col 1));
                        
$temp_sort_arr explode(','$form['sort']);
                        for(
$x 0$x count($temp_sort_arr); $x++) {
                            
$out[$temp_sort_arr[$x]] = $form[$temp_sort_arr[$x]];
                            unset(
$form[$temp_sort_arr[$x]]);
                        }
                        
$form array_merge($out,$form);
                    }
    }
    return 
true;
}

function 
alias_fields()
{
    global 
$form$fieldname_lookup;
    while (list(
$key,) = each($form)) {
        
$fieldname_lookup[$key] = $key;
    }
    
reset($form);
    if (isset(
$form['alias'])) {
        
$aliases explode(','$form['alias']);
        while (list(,
$val) = each($aliases)) {
            
$temp explode('='$val);
            
$fieldname_lookup[trim($temp[0])] = trim($temp[1]);
        }
    }
    return 
true;
}

function 
send_mail()
{
    global 
$form$invis_array$valid_env$fieldname_lookup$errors$logfile;
    
    
$email_replace_array "\r|\n|to:|cc:|bcc:";
    
    if (!isset(
$form['subject']))
            
$form['subject'] = 'WWW Form Submission';
    if (isset(
$form['subject_prefix']))
            
$form['subject'] = $form['subject_prefix'] . $form['subject'];
    if (!isset(
$form['email']))
            
$form['email'] = 'email@example.com';
    
    switch (
$form['mail_newline']) {
        case 
2:        $mail_newline "\r";
                break;
        case 
3:        $mail_newline "\r\n";
                break;
        default:    
$mail_newline "\n";
    }
    
    if (isset(
$form['gmt_offset']) && ereg('^(\\-|\\+)?([0-9]{1}|(1{1}[0-2]{1}))$'$form['gmt_offset'])) {
        
$mkseconds mktime(gmdate('H') + $form['gmt_offset']);
        
$mail_date gmdate('F jS, Y'$mkseconds) . ' at ' gmdate('h:iA'$mkseconds) . ' (GMT ' $form['gmt_offset'] . ').';
    } else
        
$mail_date date('F jS, Y') . ' at ' date('h:iA (T).');
    
    if (isset(
$form['realname']))
        
$realname eregi_replace($email_replace_array,'',$form['realname']);
    elseif (isset(
$form['firstname']) || isset($form['name']))
        
$realname eregi_replace($email_replace_array,'',trim($form['firstname'] . ' ' $form['name']));

    
$mailbody 'Below is the result of your feedback form.  It was submitted by' $mail_newline;
    if (isset(
$realname))
        
$mailbody.= $realname ' (' $form['email'] . ') on ' $mail_date $mail_newline $mail_newline;
    else
        
$mailbody.= $form['email'] . ' on ' $mail_date $mail_newline $mail_newline;

    
reset($form);
    
    while (list(
$key,$val) = each($form)) {
        if ((!
in_array($key,$invis_array)) && ((isset($form['print_blank_fields'])) || ($val))) {
                if((
$form['alias_method'] == 'email') || ($form['alias_method'] == 'both'))
                    
$mailbody .= $fieldname_lookup[$key];
                else
                    
$mailbody .= $key;
                
$mailbody .= ': ' $val $mail_newline;
        }
    }
    
    if (isset(
$form['env_report'])) {
        
$temp_env_report explode(','$form['env_report']);
        
$mailbody .= $mail_newline $mail_newline '-------- Env Report --------' $mail_newline;
        while (list(,
$val) = each($temp_env_report)) {
            if (
in_array($val,$valid_env))
                    
$mailbody .= eregi_replace($email_replace_array,'',$val) . ': ' eregi_replace($email_replace_array,'',getenv($val)) . $mail_newline;
        }
    }

    if (!isset(
$form['recipient']))
        
$form['recipient'] = '';

    
$mail_header 'Return-Path: ' eregi_replace($email_replace_array,'',$form[recipient]) . $mail_newline;
    
$mail_header .= 'From: ' $realname ." <".$form[recipient].">" $mail_newline;
    
$mail_header .= 'Reply-to: ';
    if (isset(
$realname))
        
$mail_header .= $realname ' <' eregi_replace($email_replace_array,'',$form['email']) . '>' $mail_newline;
    else
        
$mail_header .= eregi_replace($email_replace_array,'',$form['email']) . $mail_newline;
    if (isset(
$form['recipient_cc']))
        
$mail_header .= 'Cc: ' eregi_replace($email_replace_array,'',$form['recipient_cc']) . $mail_newline;
    if (isset(
$form['recipient_bcc']))
        
$mail_header .= 'Bcc: ' eregi_replace($email_replace_array,'',$form['recipient_bcc']) . $mail_newline;
    if (isset(
$form['priority']))
        
$mail_header .= 'X-Priority: ' ereg_replace($email_replace_array,'',$form['priority']) . $mail_newline;
    else
        
$mail_header .= 'X-Priority: 3' $mail_newline;
    
$mail_header .= 'X-Mailer: PHPFormMail ' VERSION ' (http://www.boaddrink.com)' $mail_newline;
    
$mail_header .= 'X-Sender-IP: ' eregi_replace($email_replace_array,'',getenv('REMOTE_ADDR')) . $mail_newline;
    
$mail_header .= 'X-Referer: ' eregi_replace($email_replace_array,'',getenv('HTTP_REFERER')) . $mail_newline;
    
    
$form['subject'] = eregi_replace($email_replace_array,'',$form['subject']);
    
    if (
eregi("MIME-|Content-|boundary"$mail_header $mailbody $form['subject']) == 0) {
        
$mail_header .= 'Content-Type: text/plain; charset=iso8859-1' $mail_newline;
        
$mail_status mail(eregi_replace($email_replace_array,'',$form['recipient']), $form['subject'], $mailbody$mail_header);
        if (!
$mail_status) {
            
$errors[] = '1|Message could not be sent due to an error while trying to send the mail.';
            
error_log('<br>['.date('d.m.y H:i:s').'] Mail could not be sent due to an error while trying to send the mail.'3$logfile);
        } else {
            
error_log('<br>['.date('d.m.y H:i:s').'] Normal e-mail sent from IP ' getenv('REMOTE_ADDR'), 3$logfile);
        }
    } else {
            
$mail_status true;
            
error_log('<br>['.date('d.m.y H:i:s').'] Injection characters found from IP ' getenv('REMOTE_ADDR') . '. Silently dropped'3$logfile);
    }
    return 
$mail_status;
}


function 
output_html($body)
{
    print 
$body;
}


if (
count($form) > 0) {

    if (
phpversion() >= '4.0.0')
        
$in_array_func 'in_array';
    else
        
$in_array_func 'fake_in_array';

    if(
$use_field_alias = isset($form['alias']))
        
alias_fields();
    
    if(
CHECK_REFERER == true)
        
check_referer($referers);
    else
        
error_log('<br>['.date('d.m.y H:i:s').'] HTTP_REFERER checking is turned off.  Referer: ' getenv('HTTP_REFERER') . '; Client IP: ' getenv('REMOTE_ADDR') . ';'3$logfile);

    
// This is used for another variable function call
    
if ((count($recipient_array) > 0) == true)
        
$recipient_function 'map_recipients';
    else
        
$recipient_function 'check_recipients';
    
    if (isset(
$form['recipient']))
        
$form['recipient'] = $recipient_function($form['recipient']);
    if (isset(
$form['recipient_cc']))
        
$form['recipient_cc'] = $recipient_function($form['recipient_cc']);
    if (isset(
$form['recipient_bcc']))
        
$form['recipient_bcc'] = $recipient_function($form['recipient_bcc']);
    
    
check_required();
    
    if (!
$errors) {

        if (isset(
$form['sort']))
            
sort_fields();

        if (isset(
$form['hidden'])) {
            
// PFMA REMOVE 1
            
$form['hidden'] = str_replace(' '''$form['hidden']);
            
$form['hidden'] = explode(','$form['hidden']);
            
// PFMA ADD $form['hidden'] = array_map('trim', $form['hidden']);
        
}

        if (
send_mail()) {
            if (isset(
$form['redirect'])) {
                if (isset(
$form['redirect_values']))
                    
header('Location: ' $form['redirect'] . '?' getenv('QUERY_STRING') . "\r\n");
                else
                    
header('Location: ' $form['redirect'] . "\r\n");
            } else {
                if (!isset(
$form['title']))
                    
$form['title'] = 'PHPFormMail - Form Results';
                
$output "<h1>The following information has been submitted:</h1>\n";
                
reset($form);
                while (list(
$key,$val) = each($form)) {
                    if ((!
$in_array_func($key,$invis_array)) && ((isset($form['print_blank_fields'])) || ($val))) {
                        
$output .= '<div class="field"><b>';
                        if((
$use_field_alias) && ($form['alias_method'] != 'email'))
                            
$output .= htmlspecialchars($fieldname_lookup[$key]);
                        else
                            
$output .= htmlspecialchars($key);
                        if ((isset(
$form['hidden'])) && ($in_array_func($key,$form['hidden'])))
                            
$output .= ":</b> <i>(hidden)</i></div>\n";
                        else
                            
$output .= ':</b> ' nl2br(htmlspecialchars(stripslashes($val))) . "</div>\n";
                    }
                }
                if (isset(
$form['return_link_url']) && isset($form['return_link_title']))
                    
$output .= '<div class="returnlink"><a href="' $form["return_link_url"] . '">'$form["return_link_title"] . "</a></div>\n";
                echo 
"<h3>".$form[title]."</h3>";
                
output_html($output);
            }
        }
    }
} else {
    
$errors[] = '0|Nothing was sent by a form. (No data was sent by POST or GET method.)  There is nothing to process here.';
    
error_log('<br>['.date('d.m.y H:i:s').'] No data sent by POST or GET method. (' getenv('HTTP_REFERER') . ')'3$logfile);
}

if (
count($errors) > 0)
    
error();

?>
yoyo ist offline   Mit Zitat antworten
Alt 09.08.06, 11:43   #8 (permalink)
Member of Honour
 
Benutzerbild von SUID:root
 
Registriert seit: 04.09.04
SUID:root Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Mitarbeiter überprüfen mit Loggern ist doch legal, solange man begründeten verdacht hat, oder?
Nein! Überwachung ist nur erlaubt, wenn der Mitarbeiter darüber informiert wurde. Das gilt auch für Camera-Systeme und jede andere Art der Überwachung, die innerbetrieblich eingesetzt wird.
SUID:root ist offline   Mit Zitat antworten
Alt 09.08.06, 12:55   #9 (permalink)
m1ndless
Guest
 
Likes:
Standard

Meine Idee war, dass sich vielleicht jmd an dem Mailerscript zu schaffen gemacht hat (entweder durch Code-Injections oder weil er direkt Zugriff auf die Datei hatte).
Aber das Script ist sauber und ich kann auch keine offentsichtlichen Sicherheitsmängel erkennen.

Aber so kommen wir nicht weiter...
Entweder du schreibst hier mal die Domain rein, damit wir mal drüber schauen können (oder schreibst es nur mir und ich poste den Scan-Log hier) oder du bemühst dich selber und checkst den Server mit nmap und postest die Auswertung.

Aber auf Rätselraten hab ich nu keine Lust mehr.
Btw, halte ich einen "inkontinenten" Mitarbeiter für am wahrscheinlichsten...
  Mit Zitat antworten
Alt 09.08.06, 13:36   #10 (permalink)
 
Registriert seit: 08.08.06
ic3cu83z Leistung: Facit NTK
Likes: 0
Standard

Hallo, am einfachsten und unauffälligsten stelle ich mir jetzt besagten Mitarbeiter vor, der die Daten(bank) einfach auf einen USB-Stick packt.

Wäre vielleicht eine Möglichkeit oder wäre das zu einfach?
ic3cu83z ist offline   Mit Zitat antworten
Alt 09.08.06, 14:08   #11 (permalink)
Themenstarter
 
Registriert seit: 08.08.06
yoyo Leistung: Facit NTK
Likes: 0
Standard

wie schon oben geasgt: es gibt keine datenbank, alle mails werden von einem rechner aus abgrufen, und nur in papierform weitergereicht.
yoyo ist offline   Mit Zitat antworten
Alt 09.08.06, 16:20   #12 (permalink)
ba2
Guest
 
Likes:
Standard

Ihr habt doch sicherlich ein eigenen Mailserver von den die E-mails abgerufen werden oder?

Überprüf den doch mal auf Trojaner etc..
  Mit Zitat antworten
Alt 09.08.06, 17:47   #13 (permalink)
 
Registriert seit: 12.07.05
Mondi Leistung: Facit NTK
Likes: 0
Standard

Also ich hab auch ma ne frage an dich.

Hängt der PC von dem aus du die E-Mails abrufst in einem eigenen Netz (eigenes Subnetz oder separater Internetzugang).

sollte das nicht der Fall sein wehre es Möglich das ein Mitarbeiter sich zugriff auf den Rechner Verschalt hat.
Mondi ist offline   Mit Zitat antworten
Alt 09.08.06, 21:00   #14 (permalink)
m1ndless
Guest
 
Likes:
Standard

Also, ich fasse mal zusammen:

Ein Nmap-Scan ergibt folgendes:
21/tcp open ftp ProFTPD
22/tcp open ssh OpenSSH 4.3 Debian 1:4.3p2-1 (protocol 1.99)
80/tcp open http Apache httpd 1.3.37 ((Unix))
81/tcp open http Apache httpd 1.3.37 ((Unix) mod_binford/6100 DAV/1.0.3)

- Für diese Versionen gibt es keine bekannten Bugs oder Exploits.

- Sowohl mit SSL als auch ohne werden die Mails abgefangen bzw gelesen.

- Es befinden sich im HTML-/PHP-Code keine Fehler.


Für mich ergibt das nur Sinn, wenn es ein eigener Mitarbeiter wäre, der Sysadmin (wird wohl auch derselbe wie für den Mailserver sein) oder in diesem Netzwerk hängt ein Mitarbeiter der den Verkehr mitsnifft...
Alles andere schließ ich schon fast komplett aus.

Noch jmd, irgendwelche Ideen?

An dieser Stelle vielen Dank an P21YALPHA, der die Dateien und den Server auch mal unter die Lupe genommen hat.
  Mit Zitat antworten
Alt 09.08.06, 21:04   #15 (permalink)
 
Registriert seit: 01.09.05
naked_chef Leistung: Facit NTK
Likes: 0
Standard

hast du die HP denn schon mal mit einem Schwachstellenscanner für HP's gecheckt?
naked_chef ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Security Area » Webmaster-Security » Datenklau auf HP: Angriffspunkte?
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
WLan Datenklau? l-phoenizier WLAN-Zone 11 15.11.06 18:47
vermeintlicher Datenklau übers LAN Anna (In)security allgemein 15 06.01.04 16:22
vermeintlicher Datenklau übers LAN Anna Network · LAN, WAN, Firewalls 5 12.11.03 02:33
datenklau möglich ? angel5 (In)security allgemein 11 23.04.03 21:35


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61