Utenti Online:  | IP:  28/10/2002: Aggiornata la grafica del sito, by pCwArE ;))
Documentazione
Enciclopedia Lord Shinva
Guida protocollo TCP/IP

Security FAQ 1.0

RFC
Porte di connessione
Jargon file
E-zine

 

DISCLAIMER: Si ricorda che il Web Admin del sito ed il provider non si ritengono responsabili in nessun modo del cattivo utilizzo che chiunque dovesse fare di tutto il materiale contenuto nel sito. Lo scopo della Security Check Community è quello di condividere ed approfondire le conoscenze della comunità.

 

Votaci!!

Hacking/Documentazione
Enciclopedia Lord Shinva n.4
4. Web server 

INTRODUZIONE ALLE TECNICHE DI BASE
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Le tecniche che inizieremo a vedere da questo capitolo in poi sono quelle
di base per poter comprendere quelle piu` complesse.
Inoltre nella spiegazione di ciascuna tecnica ne approfittero` per spiegare
altri argomenti che normalmente in qualsiasi guida sull'hacking, in italiano
o in inglese, sono lasciati alla... immaginazione del lettore.

Dunque. In questo volume vedremo delle semplici tecniche relative alla
sicurezza (da un punto di vista hacker) dei server Web.

Credo (e spero) che sappiate gia` usare un browser e i vari programmi... in
caso contrario vi consiglio vivamente di lasciar perdere l'hacking e iniziare
con qualcosa di piu` semplice, come accendere e spegnere il computer...


TECNICHE DI BASE: I WEB SERVER - PARTE 1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Molti metodi usati in passato per hackerare un sito Web si basavano su dei
problemi di sicurezza pre-esistenti causati dalla scarsa competenza dei
Webmaster e dei SysAdmin. Ad esempio, un classico errore era lasciare
programmi che hanno funzione di interpreti di comandi, come ad esempio il
Perl (file perl.exe) accessibili a chiunque tramite Internet.
Dal momento che tali programmi accettano parametri, se avessimo voluto
cancellare l'intero contenuto di una directory avremmo potuto eseguire il
comando di eliminazione semplicemente collegandoci all'URL (indirizzo Web).

Nel nostro esempio, dal momento che il linguaggio in questione e` il Perl,
il comando per eliminare la directory e` "unlink <*>" (senza gli apici).
Per "dire" al Perl di eseguire un comando va usata l'opzione "-e". Il
comando completo sara` quindi: perl.exe -e unlink <*>

Ora supponiamo che il povero Webmaster :) abbia lasciato perl.exe nella
directory cgi-bin (dove si trovano quasi tutti i programmi usati su un sito).
Non dovremo fare altro che collegarci dal nostro browser a questo indirizzo:

http://www.nomesito.com/cgi-bin/perl.exe?-e+unlink+%3C*%3E

Ecco cosa stiamo facendo: http://www.nomesito.com/cgi-bin/perl.exe non e`
altro che l'indirizzo del programma da eseguire; il punto interrogativo ci
consente di passare dei comandi qualsiasi al programma (probabilmente lo
avrete gia` visto quando vi collegate ai motori di ricerca); infine, come
gia` detto prima, "-e" dice al Perl di eseguire il comando che segue.
I segni + non sono altro che gli spazi. Poiche` negli URL non si usano spazi
vanno usati i + al loro posto.

Ora troviamo la parola unlink, un altro + (spazio) e poi %3C*%3E ...cos'e`?
Se guardate piu` sopra, vedrete che il comando da eseguire era unlink <*>
Non abbiamo fatto altro che sostituire < con il suo codice ASCII in notazione
esadecimale (3C preceduto da % per indicare che e` un codice ASCII) e lo
stesso abbiamo fatto per > mentre l'asterisco e` rimasto uguale.
Ovviamente non dovrete imparare i codici a memoria, vi bastera` trovare una
tabella ASCII come quelle che si trovano sui libri di informatica e di
programmazione, o in alcune piccole utility. Se non l'avete, prima di
proseguire e` assolutamente necessario che ve la procuriate.

Dicevamo... perche` questi cambiamenti?
Perche` esistono delle regole per "scrivere" un URL: caratteri come / e \
(detti slash e backslash), le parentesi e le virgolette, gli spazi e quasi
tutta la punteggiatura in genere (ad esclusione di + - e pochi altri simboli)
vanno *sempre* sostituiti con il relativo codice ASCII. Tutti gli altri
caratteri possono rimanere invariati.
Dunque quando dovremo scrivere uno dei simboli sopra descritti non bisognera`
fare altro che cercarne il codice in esadecimale e scriverlo al suo posto,
mettendo un simbolo di percentuale prima del codice.
Tali codici sono detti di "escape".

In modo analogo, un server Web come il Microsoft IIS per Windows (versioni
dalla 1.x alla 2.0b) oppure il server di Windows NT 3.x puo` essere "forzato"
ad eseguire dei comandi arbitrari, come ad esempio:

http://www.nomesito.com/cgi-bin/scrivimi.bat?&dir+c:\+%5Cs

In questo caso scrivimi.bat e` un file batch (.bat).
E` molto facile da scoprire se un server utilizzi tali file, in quanto basta
dare un'occhiata alle pagine Web di un sito (e magari al loro listato) per
scoprire se vi sono riferimenti ad essi.
Ovviamente il trucco funziona solo con i server sopra elencati (per Windows)
e con pochissimi altri. Inoltre le nuove versioni hanno corretto questo
problema.

Il "bug" (errore) in questo caso risiede nella gestione dei files batch.
Come vediamo, aggiungendo ?& al nome del file e poi scrivendo i comandi da
eseguire, il server credera` di stare eseguendo ancora il file batch e in
realta` fara` ben altro... nel nostro caso, il comando codificato e` il
seguente: dir c:\ /s (dove / e` stato sostituito con il suo codice, %5C).
Avremo quindi come risultato di tale comando l'elenco completo di *tutte* le
directory e i file presenti sul server (utile per sapere dove mettere le
mani se cerchiamo qualcosa in particolare o vogliamo modificare qualcosa).

Quelle descritte non sono vere e proprie tecniche hacker: sono degli exploit
per poter sfruttare i problemi di sicurezza conosciuti a nostro vantaggio.
Le trattiamo anche perche` non si puo` imparare qualcosa di complesso senza
conoscere le basi e i ragionamenti che sono dietro un exploit.

Tali exploit sono ampiamente discussi e spiegati (in inglese) su Internet e
a volerli spiegare tutti non basterebbero 100 volumi di questa enciclopedia.
Ecco perche` vi invito fin d'ora ad "avventurarvi" sulla Rete, a cercare e a
provare... e soprattutto a imparare l'inglese (se non lo conoscete gia`),
perche` la stragrande maggioranza delle documentazioni e dei siti che possono
insegnarvi qualcosa (come il mitico Silicon Toad... http://www.silitoad.org
oppure come Hackers Underground... http://www.underground.org) e`, che lo
vogliate o meno, in inglese. In una parola: LEGGETE.


TECNICHE DI BASE: I WEB SERVER - PARTE 2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Come abbiamo visto, molti server Web per Windows (come Microsoft IIS oppure
Windows NT server) possono essere utilizzati per eseguire comandi arbitrari
utilizzando lo schema seguente:

[URL].../nomescript.bat?&comando_1+comando_2+...+comando_N

E` bene notare che i server Web registrano in uno o piu` file (detti "log")
tutte le operazioni effettuate, e quindi nel caso utilizzassimo l'hack sopra
descritto esso verrebbe senza dubbio registrato, insieme al nostro IP Address
e ad altre informazioni.

Per evitarlo, possiamo fare due cose. Una possibilita` e` aggiungere alla
fine dell'URL contenente i nostri comandi, il comando "time" oppure "date",
in questo modo:

http://www.sito.com/cgi-bin/prova.bat?&echo+S+%7C+format+c%3A+%2Fu+time

Procediamo ora con la spiegazione di questo URL. Il comando eseguito e`:

echo S | format c: /u

seguito dal comando "time", che vedremo dopo. Il comando "format c:" come
sappiamo serve a formattare un disco, in questo caso l'hard disk "C", mentre
"/u" indica a "format" di procedere con una formattazione incondizionata,
cioe` senza salvare i dati presenti sul disco... ma "format", una volta
eseguito, chiede all'utente di premere un tasto: S (si) oppure N (no), e
non fara` nient'altro fino a che non avra` uno dei due input.
Per ovviare all'inconveniente, non potendo noi digitare "S" sulla tastiera
del computer che vogliamo hackerare, utilizziamo "echo S" seguito da "|".
In pratica "|" (detto "pipe") serve ad inviare l'output del comando "echo"
(il carattere "S") al comando successivo (format), simulando la pressione del
tasto. Abbiamo cosi` risolto il problema.

Una funzione non documentata del comando format e` l'opzione "/autotest".
Tale opzione corrisponde in pratica alla riga di comando sopra descritta,
e quindi potremo (solo nel caso di format) fare a meno di echo, pipe e "/u"
scrivendo "format c: /autotest" (NON scrivetelo sul vostro computer).
L'hard disk verra` formattato senza chiedere alcunche` all'utente.

Ma ora torniamo al comando time (oppure date). Perche` l'abbiamo aggiunto?

I server registrano le operazioni nei log solo DOPO che tali operazioni siano
state effettivamente eseguite. Ad esempio, quando un URL viene "chiamato" e
abbiamo ricevuto il contenuto della pagina ad esso associata.
Per impedire al server di terminare l'operazione (e quindi di registrare
l'URL hackerato e il nostro IP nel file di log) usiamo quindi time o date.
Come sappiamo questi due comandi non fanno altro che cambiare ora o data, e
a tale scopo chiedono all'utente il nuovo valore (l'orario, nel caso di time)
all'utente. Ma dal momento che il server non sa rispondere ai comandi ;)
la loro esecuzione non potra` essere completata, il log non verra` scritto
e noi avremo ottenuto quello che volevamo... segretezza :)

Vi ho detto pero` che esistono DUE modi. Ecco il secondo: esiste su Internet
un server molto simile all'Anonimizzatore di cui vi ho parlato in un volume
precedente a questo. Si tratta di iPROXY (http://www.iproxy.com), un server
che offre gratuitamente la possibilita` di collegarsi anonimamente ai siti,
digitando l'URL desiderato (vi dice niente?).
Non e` ovviamente una tecnica, ma un servizio pensato per ben altri scopi
che per l'hacking... ma meglio uno in piu` che in meno ^_^

Tornando ai problemi di sicurezza...

Un altro bug di IIS e` il seguente: aggiungendo uno (o una coppia) di punti
alla fine di un file script, anziche` essere eseguito, il contenuto del file
verra` visualizzato sullo schermo del vostro browser. Un altro bug simile
permette di visualizzare file "segreti" (come pagine protette da password,
documenti che non dovrebbero poter essere visualizzati in quanto "interni"
e qualsiasi altro file presente sull'hard disk del server), in questo modo:

http://www.sito.com/..\..\..\..\qui_va_il_percorso\nome_del_file

Esistono molti altri bugs, per i quali vi rimando (nel caso di Windows) ai
siti sulla sicurezza di Windows.

Passiamo ora agli altri Web server.

Restando in tema di Windows NT/95 un altro server che ha il problema degli
script in cgi-bin e` O'Reilly WebSite (versioni fino alla 1.1b).

Per leggere invece un file log (WebSTAR.LOG) del server WebStar per Macintosh
basta utilizzare il codice escape al posto del punto (nel nome del file):

http://www.sito.com/WebSTAR%20LOG

Tenete presente che i bug fin qui descritti sono applicabili solo ai relativi
software. Non cercate, pertanto, di utilizzare "time" con un server Unix o
roba del genere.


Partner

pCwArE
ZeroDay
Il tuo sito qui..
Il tuo sito qui..
Il tuo sito qui..

>Diventa Partner

Newsletter

A breve la Newsletter!!
Community
Forum
Chat

Statistiche

[contatore visite]

 

TORNA ALLA HOMEPAGE


Security Check™ Designed By http://www.pcware.tk