Newsgroup: it.comp.www.php
Titolo: Hanno provato ad attaccare un mio sito

In un sito che ho realizzato recentemente, in cui è possibile inviare
delle immagini tramite upload, un hacker turco ha provato a metterci uno
script.
Fortunatamente avevo messo dei paletti sufficientemente buoni e non ha
fatto danni, e così sono entrato in possesso di questo script, ora me lo
sto studiando per capire come lavora.
In pratica è una vera e propria interfaccia di amministrazione che
permette di cancellare/creare/uploadare files, navigare nelle
directories sul sito, inviare comandi shell oppure email fasulle. 
Mica male...
Max
-- 
http://www.maxori.it
L'Arte è la capacità di fare cose di nessun valore
e di riuscire a venderle
F. Zappa

 Fortunatamente avevo messo dei paletti
Che hai usato?

 Che hai usato?
Nello script che gestisce l'upload ci sono dei controlli che:
1) controllano che il file sia una immagine (jpg, png, gif)
2) che il file non superi 1Mb di dimensioni
3) rinominano il file assegnandoli come nome un hash
Tutto ciò ha impedito che lo stronzo potesse rintracciarlo ed eseguirlo,
aldilà del fatto che non so come sarebbe stato possibile farlo eseguire
con l'etensione *.jpg
Sai se sia possibile una cosa del genere?


 sto studiando per capire come lavora.
L'ho guardato un pò e devo dire che è proprio carino...
mi sa che userò varie parti del suo codice da integrare nelle aree di
amministrazione dei siti che realizzo.
Se fosse possibile rintracciare il tipo prima gli spezzerei le dita, una
ad una, ma poi lo ringrazierei per le dritte.
;)


 Max
Quello script solitamente viene chiamato phpshell, e come h
ai detto te viene solitamente utilizzato per avere un'interfaccia di
comando sull'hosto tramite browser. Il fatto che lo abbia inserito come
estensione jpg, porta a due possibili conclusioni:
1) voleva usare lo script in associazione ad una LFI (local file include)
2) voleva mantenerlo sul server e poterlo richiamare per sfruttare una
RFI (remote file include) su un altro sito
Verifica i log di apache per vedere se ha eseguito solo l'upload o anche
altro. Troverai anche il suo IP.

 altro. Troverai anche il suo IP.
Buona idea, provo a cotrollare.
Grazie


 1) voleva usare lo script in associazione ad una LFI (local file include)
Come?

chi lo ha detto che il file rinominato in JPG non è eseguibile?
piccolo test:
file foo.php.jpg:
<?php
echo "SONO IL VIRUZ!\n";
?>
file bar.php:
<?php
echo "BAR\n";
include("foo.php.jpg");
echo "fine bar!\n";
?>
lanciate il file bar.php nel browser, output:
BAR
SONO IL VIRUZ!
fine bar!

Un'altra idea, quando si tratta di file immagine (oltre a rinominarli
con hash random e metterli in cartelle 'nascoste'), è di processarle
con gd i imagemagick.
Le aprite, non fate nessuna modifica e le salvate con altro nome, se
sono script php viene dato errore, se ci sono pezzi di codice
nell'immagine (è possibile) vengono rimossi (o dà errore cmq)


Se uno script del sito su cui hanno infilato il file era vulnerabile ad
un attacco LFI gli sarebbe bastato includere il file con estensione JPG
per poterlo eseguire. Da li avrebbero avuto accesso al sito.

 per poterlo eseguire.
Sì questo mi era chiaro ma deve comunque sfruttare un'altra 
vulnerabilità. Come fai ad iniettare un require() o include() ?



I CMS come pensi includano le classi?
Un tipo di attacco 'famoso', e oramai quasi inutile (non ci voleva
molto..), è quando ad esempio un cms è impostato per includere moduli/
plugin in base all'url.
Se, ad esempio, dando in pasto al software un url del tipo "index.php?
module=foobar&action=list", e il software fà un bel include del tipo
include('modules/' . $_GET['module']); il gioco è fatto.
Conta poi che quando invii il file al server puoi anche farlo figurare
con nome '../../file.php.jpg', quindi se il software mantiene il nome
del file originale, a forza di tentativi si riesce a posizionare il
file dentro la cartella dei moduli e farlo poi eseguire al cms tramite
un semplice get.