Vous êtes sur la page 1sur 44

LAMPSecurity Project Capture the Flag

Web Application to Root Via Vulnerability Exploit


by Justin C. Klein Keane
justin@madirish.net
Translation by Andre Reyes telecobyde!ault@"mail.com
http#$$.%ad&rish.net
Table of Contents
'A%()ecurity (roject Capture the *la".........................................................................................+
Acerca de este documento..............................................................................................................,
Credenciales y acceso......................................................................................................................,
-Ad.ertencia/...................................................................................................................................,
Antes de comen0ar..........................................................................................................................,
1ota para los usuarios de Virtual2ox....................................................................................3
Con.enciones utili0adas en el documento............................................................................3
(rop4sito................................................................................................................................3
(aso +# 'ocali0ando al objeti.o.......................................................................................................5
Empe0ando.............................................................................................................................6
(aso 7# Testeo Automati0ado........................................................................................................+,
8erramientas automati0adas...............................................................................................+3
1i9to.....................................................................................................................................+3
Ventajas de Nikto.......................................................................................................................14
Inconvenientes de Nikto............................................................................................................15
Instalando Nikto.........................................................................................................................15
W,a! .....................................................................................................................................+:
Ventajas de w3af........................................................................................................................18
Inconvenientes de w3af..............................................................................................................18
Ejecutando w3af.........................................................................................................................19
;A(.......................................................................................................................................73
Ventajas de ZAP.........................................................................................................................4
Inconvenientes de ZAP..............................................................................................................4
Nota al !a"#en...........................................................................................................................4
Ejecutando ZAP.........................................................................................................................4
(A)< ,# Explotaci4n....................................................................................................................7:
E$%lotaci&n..........................................................................................................................................9
(A)< 3# Crac9ear las contrase=as...............................................................................................,,
(roblemas con las contrase=as............................................................................................,3
A(>1?&CE &.................................................................................................................................3@
A(>1?&CE &&................................................................................................................................3+
'evelaci&n de info"!aci&n........................................................................................................41
Inclusi&n de fic(e"os locales )*+I, ...........................................................................................41
In-ecci&n ./*...........................................................................................................................41
0..............................................................................................................................................41
+allas l&#icas..............................................................................................................................4
A(>1?&CE &&&...............................................................................................................................3,
A(>1?&CE &V...............................................................................................................................33
Acerca de este documento
Este docu!ento de1e aco!%a2a"se del eje"cicio 34+5 del %"o-ecto 6*A7P .ecu"it-68 el cual est9
alojado en .ou"ce+o"#e.net )actual!ente en la :'* (tt%;<<sou"cefo"#e.net<%"ojects<la!%secu"it- ,. Este
docu!ento es un t"a1ajo con co%-"i#(t8 lo =ue si#nifica =ue no %uedes co%ia" o "edist"i1ui"lo sin
%e"!iso8 es%ecial!ente %a"a tu %"o%io 1eneficio. Esto- (aciendo esto8 as> =ue no se9is !a!ones -
col#u?is el contenido de este docu!ento en vuest"os sitios we1 - 1lo#s %a"a conse#ui" !9s visitas -
vende" anuncios.
Este docu!ento es sensi1le al %aso del tie!%o. 3onfo"!e los a2os t"anscu""an este docu!ento
%"o1a1le!ente se =ueda"9 anticuado - cie"tos detalles t?cnicos %od">an ca!1ia" )tales co!o el softwa"e
de vi"tuali@aci&n en uso,. Ae intentado esfo"@a"!e %a"a t"ata" =ue el !ate"ial =ue alcan@a esta te!9tica
sea actual8 %e"o %o" favo" s? consciente de cosas co!o las :'*Bs o la dis%oni1ilidad de cie"tos
%"oductos %od">an (a1e" ca!1iado desde =ue 34+5 se "eali@&.
Credenciales y acceso
El nC!e"o uno de las cuestiones !9s f"ecuentes =ue !e "eali@an es 6D/u? no!1"e de usua"io -
cont"ase2a utili@o %a"a accede" al 34+E6. El eje"cicio est9 dise2ado de tal fo"!a =ue no se cono@ca esta
info"!aci&n Fse su%one =ue (ackea"9s al o1jetivo - c"ackea"9s el lo#in tC !is!o. .in e!1a"#o8 si
necesa"ia!ente de1es accede" a la i!a#en )%o" eje!%lo si =uie"es ca!1ia" la confi#u"aci&n de "ed de
tal fo"!a =ue %uedas utili@a" la i!a#en en tu ento"no, %uedes encont"a" dic(a info"!aci&n en el
a%?ndice o !ediante la lectu"a de este docu!ento.
Advertencia!
*a i!a#en del 34+5 contiene 1astantes vulne"a1ilidades se"ias. No utilices esta imagen en un
entorno de produccin o de alguna forma que la conecte a Internet! Aace" ?so %od">a
%"o1a1le!ente "esulta" en una i!a#en =ue sea "9%ida!ente co!%"o!etida - se convie"ta en una @ona
%ivote %a"a atacantes.
Antes de comenzar
El contenido de este ejercicio asume Aue utili0as una mBAuina .irtual con 2ac9Trac9 'inux
.ersi4n C edici4n , como plata!orma de ataAue. 2ac9Trac9 es una distribuci4n de 'inux para
tests de penetraci4n mara.illosa Aue .iene con una multitud de herramientas de testin" de
se"uridad "ratuitas y con!i"uradas. (ara mayor in!ormaci4n sobre 2ac9Trac9 y la descar"a de
una ima"en li.e o una ima"en VmareD u otros !ormatos .Ease http#$$.bac9trac9F
linux.or"$
1ecesitarBs el so!tare V%are para poder ejecutar dicha ima"en. (uedes descar"ar la
ima"en CT*6 desde https#$$source!or"e.net$projects$lampsecurity$!iles. (uedes descar"ar el
so!tare Vmare desde http#$$..mare.com$donload$player. ?e manera alternati.aD
podrGas hacer Aue la ima"en !uncione utili0ando Virtual2ox https#$$..irtualbox.or"$ o
cualAuier otro so!tare de .irtuali0aci4n.
Nota para los usuarios de irtual!o"
VEase Aue si se utili0a Virtual2ox podrGa experimentarse ciertos problemas. 'a ima"en CT*6
estB con!i"urada con un adaptador de red con la direcci4n %AC @@#@C#7H#H?#+7#AH Ipuedes
locali0ar dicho .alor in el archi.o Cent<)..mxJ. 1ecesitarGas ajustar la con!i"uraci4n de
Virtual2ox para Aue la ima"en CT*6 utilice dicho .alor %AC. 'a ima"en estB construida para
utili0ar 1AT. ?ebiera ser cambiado a Kadaptador s4loFan!itri4nK con objeto de hacerla
!uncionar en Virtual2ox. (ara crear la ima"en en Virtual2ox simplemente crea una nue.a
mBAuina .irtual 'inux con las especi!icaciones del 9ernel 7.5 u otrasL cuando solicite la
unidad de disco .irtualD eli"e una existente y selecciona la ima"en de disco .irtual CT*
ICent<)..mxJ.
Convenciones utilizadas en el documento
'as !lechas se utili0an para indicar la pro"resi4n entre menMs de un pro"rama. (or ejemploD si
se te indica Aue ha"as clic9 en el menM *ile en un pro"rama y despuEs seleccionar la opci4n
(ropertiesD esto se hace a tra.Es de#
*ile (roperties
Todas las instrucciones de lGnea de comandos se listan con una !uente courier !ijada. >stas
incluirBn el carBcter N o O para indicar el promptD tal como#
$ ls -lah
1o es necesario escribir el prompt Aue acompa=e a un comandoD estB simplemente escrito
para respetar la inte"ridad de la notaci4n.
Prop#sito
Este ejercicio estB dise=ado para Aue sea una experiencia educati.a. En particular estB
dise=ado para demostrar como las .ulnerabilidades pueden ser KencadenadasK para conducir
a un compromiso del objeti.o total. 1o hay sistema en el objeti.o Aue sea directamente
explotable para alcan0ar permisos de rootD sino .ulnerabilidades Aue pueden ser explotadas
en conjunto para comprometer la cuenta root.
Este ejercicio puede ser tambiEn utili0ado para reali0ar una comparati.a de las herramientas
de testin" automati0ado. En particularD este ejercicio persi"ue mostrar a sus participantes
herramientas de testin" de se"uridad de c4di"o abiertoD "ratuitas y e!ecti.as asG como la
demostraci4n de las debilidades de tales herramientas. ?e hechoD el alcance de este ejercicio
es reali0arlo con scriptsD aunAue hay un cierto nMmero de .ectores Aue no necesitan la
utili0aci4n de scripts y Aue pueden ser utili0ados para explotar al objeti.o. Te animo a Aue
intentes reali0ar el ejercicio sin este documento y acceder a Este en caso de Auedarte atascado
o si no sabes AuE hacer a continuaci4n durante la reali0aci4n de dicho ejercicio.
Paso $% Localizando al o&jetivo
El %"i!e" %aso en el eje"cicio consiste en confi#u"a" la *AN vi"tual - en locali@a" al o1jetivo.
Empezando
El primer paso es a lle.ar a cabo es iniciar la ima"en en la mBAuina .irtual y locali0ar el
se"mento 'A1 en el cual reside. (ara elloD abre V%Ware (layer y ha0 clic9 en el menM P<penPD
selecciona la ima"en CT*6 y ha0 clic9 en el bot4n P(lay .irtual machineP.
)i se nos muestra el mensajeD deberGamos seleccionar la opci4n P& mo.ed itP para permitirle
saber a VmWare Aue has cambiado la plata!orma hardare Aue la soporta.
Ilustracin 1: VMware Player arrancando la mquina objetivo.
Ahora Aue el objeti.o estB arrancadoD no hay una !orma !Bcil de determinar su direcci4n &(.
Qna !orma de hacer estoD por ejemploD es iniciar otra mBAuina .irtual en el mismo se"mento
'A1 Aue la mBAuina .irtual objeti.o. Arranca la mBAuina .irtual con 2ac9Trac9D
ase"urBndote Aue tiene la misma con!i"uraci4n de red .irtual Aue la mBAuina objeti.o. (ara
los prop4sitos de este documentoD he creado una nue.a mBAuina .irtual con +5R2 de espacio
en discoD instalBndola pre.iamente. 'a .entaja de utili0ar esta con!i"uraci4n es la posibilidad
de actuali0ar todas las herramientas y hacer Aue permane0can.
Arranca la ima"en 2ac9Trac9 y ase"Mrate Aue la con!i"uraci4n del adaptador de red es la
misma I%achine Virtual %achine )ettin"s 1etor9 AdapterJ. ?espuEs arranca la
mBAuina .irtual y accede con las credenciales por de!ecto de 2ac9Trac9 Iusuario# rootL
passord# toorJ.
(uedes encontrar la direcci4n de la mBAuina .irtual utili0ando el comando#
# ifconfig eth0
'a salida te mostrarB la direcci4n &( en la entrada Kinet addrK.
Ilustracin 2: VMware podra per!untar si la mquina "a
sido movida.
En el ejemplo anterior puedes .er Aue la direcci4n &( es P+H7.+5:.+.+,CP. Sa Aue tenemos
asi"nada una direcci4n &( podemos rBpidamente iniciar una bMsAueda de la mBAuina objeti.o
utili0ando el mapeador de red K1%A(K. (uedes ejecutar un scannin" rBpido 1%A( utili0ando
el comando#
# nmap 192.168.1.2-254
El comando debiera ejecutarse bastante rBpido y encontrar al objeti.o. VEase Aue los dos
resultados Aue aparecerBnD uno por la plata!orma de ataAue 2ac9Trac9 y otra por el objeti.o
CT*. (odrGa aparecer una entrada del hardare del host dependiendo de la con!i"uraci4n. El
objeti.o con!i"ura sus parBmetros de red utili0ando un cliente ?8C( a tra.Es de un ser.idor
?8C(D asG Aue es probable Aue ten"a una direcci4n conti"ua a la direcci4n Aue ha adAuirido
de la misma !orma la ima"en 2ac9Trac9. (or ejemploD si la ima"en 2ac9Trac9 tiene la
direcci4n &( P+H7.+5:.+.+7@PD entonces es probable Aue el objeti.o ten"a una direcci4n &(
+H7.+5:.+.++H o +H7.+5:.+.+7+. 2usca a la mBAuina objeti.o como aAuella con muchos puertos
desconocidosD ya Aue probablemente sea el objeti.o.
Ilustracin #: $eterminar la direccin IP de %ac&'rac&
(odemos .er en el resultado Aue arroja 1%A( del objeti.o con direcci4n &( +H7.+5:.+.+,5. ?e
manera adicionalD es interesante .er Aue hay bastantes y di!erentes puertos abiertos. (ara este
ejercicioD solo estamos interesados en los puertos del ser.idor ebD pero el hecho de limitar
nuestra in.esti"aci4n a los ser.icios relacionados al ser.idor ebD no necesariamente nos
limita al puerto :@. (odemos utili0ar 1%A( para detectar la .ersi4n del ser.icio en cada
puertoD acti.ando el !la" IFsVJ de tal !orma Aue podamos determinar Aue pro"ramas estBn a la
escucha en los puertos del objeti.o.
Ilustracin (: )M*P descubriendo al objetivo +',
<bser.ando la salida tras la ejecuci4n de 1%A(D podemos .er claramente Aue un ser.idor
Apache estB ejecutBndose en los puertos :@ y :@:@. Es interesante tambiEnD Aue Webmin se
estB ejecutando en el puerto +@@@@ y parece accesible de !orma remota. Webmin es una
herramienta de administraci4n del ser.idor .Ga eb. ?e !orma similarD )WATD )amba Web
Administration ToolD estB disponible para con!i"urar archi.os compartidos de Windos .Ga el
inter!a0 eb. En este punto acti.amos un na.e"ador y lo con!irmamos.
)i no lo has hecho yaD arranca el ser.idor T en 2ac9trac9 escribiendo#
# startx
Conse"uiremos un escritorio "rB!ico de tal !orma Aue podamos arrancar na.e"ador eb
*ire!ox. T es el sistema de .entanas mBs conocido en 'inux y en sistemas operati.os Qnix.
?ependiendo de AuE "estor eli"ieses a la hora de descar"ar la ima"en 2ac9Trac9 podrBs
disponer inicialmente de Rnome o K?E. Ambos son "estores del escritorio por de!ecto en
2ac9Trac9D asG Aue arrancar el sistema T harB Aue arranAue tanto el sistema de .entanas
como el escritorio por de!ecto. Qtili0ar el entorno "rB!ico Isistema de .entanas U "estor de
escritorioJ tiene al"unas .entajas MtilesD pero es li"eramente mBs lento y reAuiere mBs
recursos. (uedes utili0ar una shell "rB!ica o puedes .ol.er al modo s4lo texto simplemente
saliendo de 2ac9Trac9 bajo en el menM "rB!ico del sistema. Qna .e0 el se inicia el escritorio
encontrarBs todos los pro"ramas en el menM de aplicaciones y la mayorGa de las herramientas
para el ejercicio bajo Applications 2ac9Trac9.
Ilustracin -: )M*P detectando la versin del servicio
*is"oneando en la pB"ina eb objeti.o nos daremos cuenta Aue es relati.amente compleja.
Auditarla a manoD es decirD locali0ando y probando .ulnerabilidadesD consume bastante
tiempo y de al"una !orma es una tarea ardua. 8ay bastantes cosas Aue auditarD y testear las
.ulnerabilidades a mano en primera instancia es tanto tedioso como problemBtico.
Con objeto de ser minucioso y e!ecti.oD es interesante siempre se"uir una lista de puntos a
re.isar Icomo la de <WA)( top +@J y buscar en cada pB"ina por .ulnerabilidades. En la
prBcticaD este es precisamente el tipo de trabajo aburrido y repetiti.o Aue encaja de !orma
ideal para ser reali0ado por un (C. Qna .e0 se locali0an los problemasD como .eremos mBs
tardeD las herramientas automati0adas empe0arBn a mostrarnos las debilidades Aue tienenD y
serB en este momento en el Aue el testeo lle.ado a cabo por el ser humano serB cla.e. )in
embar"o en el momento de comen0ar es pre!erible utili0ar pro"ramas Aue nos muestren una
ima"en super!icial de la aplicaci4n eb y de los problemas potenciales Aue contiene.
)erGa incluso mBs e!ecti.o re.isar el c4di"o !uente actual de la aplicaci4n. Este testeo de Kcaja
blancaK hace mucho mBs sencillo testear todo el c4di"o de la aplicaci4n y la locali0aci4n de
!allos. (ero es comMnD el caso en el Aue el c4di"o no estB disponible y es necesario un testeo de
Kcaja ne"raK como el Aue se muestra en este ejercicio.
Ilustracin .: ,ire/o0 ejecutndose en la Mquina Virtual %ac&'rac&
Paso '% (esteo Automatizado
Sa Aue hemos identi!icado al objeti.o es momento de utili0ar al"unas herramientas
automati0adas para buscar .ulnerabilidades y explorar al objeti.o.
Herramientas automatizadas
8ay un "ran nMmero de herramientas automati0adas para el testeo de aplicaciones eb Aue se
incluyen en la distribuci4n 2ac9Trac9. Cada una de ellas se encuentra disponible para su
descar"aD aunAue puede haber al"unos problemas para instalarlas Ide ahG la .entaja de utili0ar
2ac9Trac9J. )in embar"oD si las utili0as diariamenteD es pre!erible Aue las instales en una
mBAuina Aue no sea .irtualD ya Aue Esta reduce sustancialmente el rendimiento debido a la
sobrecar"a Aue introduce la .irtuali0aci4n del so!tare. Vamos a trabajar principalmente con#
1i9to Ihttp#$$.cirt.net$ni9to7J
,a! Ihttp#$$,a!.source!or"e.net$J
<WA)( ;ed Attac9 (roxy I;A(J
Ihttps#$$.oasp.or"$index.php$<WA)(V;edVAttac9V(roxyV(rojectJ
Estas , aplicaciones las podemos encontrar en 2ac9trac9#
Applications 2ac9Trac9 Vulnerability Assessment Web Application Assessment Web
Vulnerability )canners
Ni)to
1i9to es un scanner de .ulnerabilidades de c4di"o abierto escrito en (erl. Corre en cualAuier
mBAuina Aue ten"a (erl instaladoD lo Aue lo hace bastante portable. Qtili0a una base de datos
de !irmas de QR'Ps Aue indican la presencia de so!tare instalado Aue es .ulnerableD lo Aue
tiene sus .entajas y des.entajas. Como otras herramientas de 2ac9Trac9D es una herramienta
de lGnea de comandos.
entajas de Ni)to
'o Aue le hace realmente brillante es su capacidad de identi!icar .ersiones .ulnerables de
so!tare ampliamente usado. (or ejemploD si una .ulnerabilidad es identi!icada en K*oo C%)
+.3.5KD 1i9to es una buena herramienta para locali0ar instancias de K*oo C%)K Aue coincidan
con dicha .ersi4n en un entorno. Como otras herramientasD la salida de 1i9to se puede
presentar en di!erentes !ormatosD lo Aue es ideal para Aue pueda utili0arse en conjunto con
otros scripts automati0ados o para a"re"ar dichos datos Aue se usarBn en otro sistema.
1i9to tambiEn tiene un scanner pasi.oD lo Aue lo hace muy se"uro en un entorno de
producci4n. (rincipalmenteD reali0a peticiones a QR'Ps mBs Aue el en.Go de !ormularios o el
!u00in" de parBmetros de entradaD asG Aue la probabilidad de la existencia de problemas
inesperados es baja.
<tra "ran .entaja de 1i9to es el hecho Aue estB escrito en (erl y el c4di"o !uente es bastante
peAue=oD lo Aue si"ni!ica Aue se pueden reali0ar modi!icaciones o a=adir tests especG!icos de
una manera realmente sencilla. 1i9to pro.ee una base de datos de tests de!inida por el
usuarioD asG Aue permite a=adir tests especG!icos a tu entorno de !orma !Bcil y rBpida.
*nconvenientes de Ni)to
'os incon.enientes de 1i9to son Aue se basa en una lista blanca de .ulnerabilidades y Aue s4lo
utili0a QR'Ps para identi!icarlas. 1i9to no es e!ica0 para encontrar problemas en aplicaciones
eb modi!icadas Ipuesto Aue las QR'Ps de dichas aplicaciones no se encuentran en la base de
datos de 1i9toJ.
*nstalando Ni)to
)i lan0amos 1i9to desde el enlace en el menM de 2ac9Trac9D puede Aue nos lance el error#
Undefined s!rotine "main##get$ips called at
%pentest%&e!%ni'to%plgins%ni'to$headers.plgin line (2.
AsG Aue nos bajamos la Mltima .ersi4nD Aue ya ha arre"lado el bu"D en el directorio#
$pentest$eb$ni9to7. (ara hacer esto reali0amos los si"uientes pasos desde una terminal#
# cd %pentest%&e!
# &get http#%%&&&.cirt.net%ni'to%ni'to-2.1.5.tar.g)
# tar -x*)f ni'to-2.1.5.tar.g)
# m* ni'to-2.1.5 ni'to2
# cd ni'to2
# chmod +x ni'to.pl
El primer paso es actuali0ar la base de datos de 1i9to. (ara eso ha0 lo si"uiente#
# .%ni'to.pl -pdate
Ahora pasamos a ejecutar 1i9to#
# .%ni'to.pl -host 192.168.1.1,6
Este comando harB Aue 1i9to escaneE aplicaciones eb Aue estBn a la escucha en el puerto
:@. (odemos utili0ar el !la" PFportP para cambiar este comportamiento. (ara escanear
aplicaciones eb en el puerto :@:@ simplemente utili0a#
# .%ni'to.pl -host 192.168.1.1,6 -port 8080
'Bn0alo y obser.a la salida. 14tese lo rBpido Aue 1i9to se ejecutaD pero ad.iErtase Aue 1i9to lo
Aue Mnicamente estB haciendo es comprobar !irmas de su 22.??D de tal !orma Aue puede Aue
apare0can al"unos !alsos positi.os Ies decirD 1i9to puede reportar .ulnerabilidades Aue
podrGan no existirJ.
-14tese el "ran nMmero de coincidencias Aue 1i9to ha identi!icado como .ulnerabilidades/
Esto esD de al"Mn modoD cuando menos sospechosoD y es mejor comprobarlas en el na.e"ador
eb. Acti.a una de las QR'Ps .ulnerables a tra.Es de *ire!ox In4tese Aue la salida podrGa ser
li"eramente distintaJD por ejemplo#
http#$$+H7.+5:.+.+,5$mailman$listin!o$WscriptXA'ERTVulnerableW$scriptXNC3:H6,H@7C+,C
6,:363. CualAuier coincidencia en la salida de 1i9to Aue sea sospechosa por no encontrarse
en el objeti.o ejecutBndose Icosas como administradores de Cisco .Ga eb o indicadores de
so!tare comercial son !alsos positi.osJ !uncionarBn en este ejercicio. 'a idea es .alidar los
resultados Aue consideramos K!alsos positi.osK de la salida Aue nos de.uel.e 1i9to.
Ilustracin 1: )i&to ejecutndose sobre el objetivo
14tese Aue es una pB"ina de error 3@3D pero como muchas aplicaciones ebD la aplicaci4n
especG!ica en el puerto :@ parece Aue estE redireccionando todas las peticiones por al"Mn tipo
de manejador de tales peticiones. El ser.idor eb Apache estB actualmente utili0ando
modVrerite para reescribir las QR'Ps de todas las peticiones entrantes para hacerlas apuntar
a un script de control central Iel cuBl es el responsable de de.ol.er el error 3@3J. (or tantoD
cualAuier QR' de.ol.erB al"oD lo Aue podrGa con!undir a 1i9to ya Aue los patrones coincidirBn
con la base de datos de 1i9to.
Qn descubrimiento interesante es Aue parece Aue esta pB"ina tiene una .ulnerabilidad de
Cross )ite )criptin" IT))J tipo re!lejado. Esta .ulnerabilidad no es identi!icada por 1i9toD una
.e0 mBsD porAue 1i9to lo Mnico Aue estB haciendo es comprobar patrones de QR'Ps para
determinar si una .ulnerabilidad de so!tare conocida estB instalada. Como se dijoD es una de
las debilidades de 1i9to principipales.
14tese Aue a pesar de los !alsos positi.os y los !alsos ne"ati.os Ies decirD .ulnerabilidades Aue
1i9to no reportaJD 1i9to tambiEn locali0a in!ormaci4n Mtil del hostD tal como la existencia de
los directorios $im"D $ebali0erD y los crEditos de (8( escondidos re.elan in!ormaci4n de la
.ersi4n en# $index.phpYZ(8(2:2C*7A@F,CH7F++d,FA,AHF3C62@:C+@@@@
Ilustracin 2: 3tili4ando ,ire/o0 para veri/icar los resultados de )i&to
+,a-
W,a! es un entorno de auditorGa y ataAues de aplicaciones eb. El proyectoD el cual es ahora
parte de Rapid6D se propone ser como el %etasploit Ihttp#$$.metasploit.com J de las
aplicaciones eb. W,a! incluye m4dulos para descubrirD auditarD anali0ar y explotar
aplicaciones eb. (ro.ee un inter!a0 "rB!ico o K!rontFendKD pero de acuerdo a los
desarrolladores la utilidad de lGnea de comandos es bastante mBs potente. 'a RQ&D sin
embar"oD pro.ee un acceso mBs manejable a pesar de la inestabilidad y de la !alta de soporte
para ciertas !uncionalidades.
entajas de .,a-
W,a! tiene un buen nMmero de .entajas. C4di"o abiertoD escrito en (ythonD su !uer0a mayor es
la extensiblidad del c4di"o Aue pro.ee la aplicaci4n. 'a "ranularidad Aue o!rece el nMmero de
tests y exploits Aue porta W,a! es impactante. (or ejemploD si ejecutas ,a! con todos los tests
habilitados podrGa tomarse dGas en terminar la ejecuci4n. Este ni.el de meticulosidad es
impresionanteD pero tambiEn desalentador. W,a! tambiEn reali0a una buena tarea reali0ando
un testin" inteli"ente Iautomati0adoJ y el c4di"o puede descubrir un buen nMmero de
.ulnerabilidades utili0ando tEcnicas de !u00in".
*nconvenientes de .,a-
El incon.eniente de ,a! es su complejidad. El c4di"o !uente es extremadamente lar"o y
propenso a bu"s desconocidos. 1o es tan extra=o encontrarse con al"unos problemas cuando
se estB ejecutando ,a!D pero los recursos Aue o!rece &nternet son abundantes para la soluci4n
de tales problemas. W,a! su!re de las mismas debilidades Aue la de sus m4dulos y por tanto
s4lo testearB las .ulnerabilidades Aue puede encontrar. Esto si"ni!ica Aue testear las
aplicaciones detrBs de una simple autenticaci4n puede resultar problemBtico.
<tro problema con ,a! es Aue mucho de los tests Aue ejecuta estBn acti.os. 'o Aue si"ni!ica
Aue ,a! intentarB explotar la aplicaci4n eb objeti.o. Esto puede causar un mont4n de
problemas en entorno de aplicaci4n reales y acti.osD lo Aue incluye llenar de porAuerGa lo"s y
bases de datos asG como potencialmente y de manera inad.ertida disparar alertasD en.iar eF
mails o inyectar c4di"o T)). )e debe tener mucho cuidado en la elecci4n de Aue m4dulos se
ejecutarBn en ,a! para testear un entorno de producci4n.
/jecutando .,a-
Ejecutar ,a! sobre el objeti.o puede lle.ar al"o de tiempoD asG Aue inicialmente lo Aue
haremos serB limitar los scans Aue reali0aremos para probar solo ciertas .ulnerabilidades.
TambiEnD como ya habrBs notado hay partes del sitio eb objeti.o Aue estBn accesibles
Mnicamente si estBs Klo"ueadoK. Crear una cuenta es bastante !Bcil pero ,a! no te permitirB
completar este proceso asG Aue es necesario hacerlo a mano. (ara empe0arD accede al sitio eb
a tra.Es del na.e"ador y ha0 clic9 en el enlace KnesletterK. >ste te mostarB el mensaje KSou
must be lo""ed inK y ademBs un enlace a la pB"ina de si"n up Ien $si"nupJ. Crea una nue.a
cuenta con las credenciales Aue Auieras.
Te darBs cuenta despuEs de este paso Aue estBs autenticado. Como la mayorGa de las
aplicaciones ebD el objeti.o utili0a sesiones administradas por el ser.idor de la aplicaci4n
para tracear cosas como AuiEn estB lo"ueado. Esto se lle.a a cabo normalmente con el uso de
coo9ies. En el peor de los casosD las .ariables se almacenan en la coo9ie de sesi4nD pero es mBs
probable Aue solo el Kto9enK se almacene en la coo9ieD con el objeto de comprobar las
peticiones de usuarios conocidos.
Qna .e0 estEs autenticadoD necesitaremos copiar la coo9ie Aue es utili0ada para tracear
nuestra sesi4nD de tal !orma Aue la podamos compartir con ,a! para un testin" mBs
completo. (ara copiar la coo9ieD ha0 clic9 en el bot4n derecho sobre la pB"ina y eli"e PVie
(a"e &n!oPD despuEs ha0 clic9 sobre la pesta=a P)ecurityP y !inalmente ha0 clic9 sobre el bot4n
PVie Coo9iesP.
Ilustracin 5: 6e!istrando una nueva cuenta para conse!uir un aut"entication to&en
A continuaci4nD copia el .alor PContentP Ien este caso Kilu5l6aemr...KJ. 1ecesitamos compartir
esta in!ormaci4n para crear una nue.o archi.o coo9ie.txt en el escritorioD con el objeto de
utili0arlo con ,a!. Abre un editor de texto IApplications Accesories WText EditorXJ y
copia y pe"a el si"uiente texto en el archi.oD sustituyendo la QR' y la coo9ie Aue has obtenido
cuando te has lo"ueadoD con el si"uiente !ormato#
# -etscape .//0 1oo'ie 2ile
.192.168.1.1,6 /3U4 % 25674 0 0.0747789 il6l(aemran0'dcgerhfd1:*(
14tese Aue hay tabulaciones entre los .alores y hay un Mnico salto de lGnea Iretorno de carroD
despuEs de la palabra K*ileKJ. W,a! es muy estricto sobre el !ormato de los archi.os de coo9ies
y cualAuier !allo causarB errores. Con respecto a esta caracterGsticaD ,a! no es el Mnico.
%uchas herramientas de testin" tienen una "ran di!icultad en utili0ar coo9ies adaptadas
cuando reali0an peticiones.
Ilustracin 17: descubriendo el valor del to&en P8P9:99I$
Cuando ya hayamos escrito nuestro archi.o coo9ieD arranca la RQ& de ,a! desde#
Applications 2ac9Trac9 Vulnerability Assessment Web Application Assessment Web
Vulnerability )canners ,a! "ui Cuando ,a! arranAue presentarB una lista de plu"ins a
utili0ar. (ara empe0ar ele"iremos un conjunto de tests peAue=o con el objeto de hacer Aue el
tiempo de escaneo sea mGnimo. Editaremos un nue.o per!il Iseleccionado por de!ectoJD asG Aue
desde el menM PauditP a su derecha selecciona las opciones Plocal*ile&ncludePD PsAliP y PxssP y
desde el menM Pdisco.eryP eli"e la opci4n Peb spiderP. Ahora car"a la coo9ie. )elecciona desde
el menM Con!i"uration# Con!i"uration 8TT( Con!i" y a continuaci4n ha0 clic9 en la pesta=a
PCoo9iesP. Ahora indica la ruta absoluta del directorio donde se encuentra nuestro archi.o
coo9ie.txt I$root$?es9top$coo9ie.txtJ
8a0 clic9 en P)a.e con!i"urationP y si no obtienes nin"Mn errorD ya estB todo con!i"urado. Qna
.e0 la coo9ie estB sal.adaD rellena el campo PTar"etP y ha0 clic9 en el bot4n P)tartP.
:na ve@ el escaneo co!ience w3af auto!9tica!ente ca!1ia al %esta2a B*o#B. El escaneo %uede to!a"
Ilustracin 11: Indicndole la coo&ie que utili4ar w#a/
Ilustracin 12: :speci/icando el objetivo en w#a/ utili4ando la ;3I
al#o de tie!%o8 as> =ue s? %aciente !ient"as los "esultados co!ien@an a a%a"ece". Puedes (ace" click en
la %esta2a B'esultsB en cual=uie" !o!ento %a"a ve" las vulne"a1ilidades =ue w3af est9 identificando
du"ante el escaneo8 %e"o (ace" click en las o%ciones de la G:I du"ante dic(o escaneo %od">a causa"
cie"ta inesta1ilidad en la (e""a!ienta. :na ve@ finalice el escaneo8 la %esta2a B'esultsB !ost"a"9 un
nC!e"o de "esultados e$t"e!ada!ente inte"esante. Aaciendo click en la %esta2a B'e%onseB se
%"o%o"ciona"9 !9s info"!aci&n %uesto =ue !ost"a"9 los datos devueltos %o" el se"vido" )- la %esta2a
B'e=uestB !uest"a los datos enviado %o" w3af,.
Ilustracin 1#: resultados del escaneo de w#a/
.i si#ues o1se"vando los "esultados8 te da"9s cuenta =ue w3af "e%"esenta un !a%a del sitio 1ajo el
%esta2a B:'*sB. Esto %uede se" Ctil %a"a "evisa" el 9"ea de co1e"tu"a del escaneo - %a"a ase#u"a"se =ue
w3af (a accedido con ?$ito a %o"ciones donde el o1jetivo solicita la cookie de autenticaci&n.
He nuevo8 el so%o"te %a"a el uso de la cookie es de al#una fo"!a %"o1le!9tico - %od">as nota" =ue w3af
no encont"& al#unas vulne"a1ilidades de in-ecci&n ./* !u- cla"as det"9s de las %o"ciones =ue se
!uest"an t"as la autenticaci&n en el sitio.
Ilustracin 1(: mapa del sitio por w#a/
ZAP
El 6IJA.P Zed Attack P"o$-6 es una va"iante del %o%ula" - vene"a1le %"o$- %a"a testin# Pa"os. ZAP
est9 esc"ito en Kava as> =ue de1e">a ejecuta"se %"9ctica!ente en todos sitios )asu!iendo =ue la 7V de
Kava est9 instalada,. Aun=ue ZAP es en %"inci%io un %"o$-8 ta!1i?n %"ovee (e""a!ientas auto!ati@adas
=ue %ueden se" e$t"e!ada!ente Ctiles.
Ventajas de ZAP
Puesto =ue ZAP se ejecuta co!o un %"o$-8 est9 dise2ado %a"a !ejo"a" el testin# !anual !9s =ue %a"a
"ee!%la@a"lo. Esto si#nifica =ue ZAP escuc(a silenciosa!ente - #"a1a co!o un usua"io de fo"!a
!anual nave#a en un sitio8 lo =ue le %e"!ite al 6teste"6 (ace" (ace" cosas tan sencillas co!o al!acena"
las cookies de sesi&n as> co!o !ani%ula" las %eticiones - e$a!ina" las "es%uestas con !inucioso
detalle. ZAP se c"ea a %a"ti" del 1ien "es%etado - s&lido %"o$- Pa"os %e"o sus nuevas funcionalidades
son 1ienvenidas. A %esa" de su "ival co!e"cial a!%lia!ente conocido8 Lu"% suite8 ZAP es de c&di#o
a1ie"to - co!%leta!ente #"atuito. ZAP %uede se" utili@ado %o" un teste" e$%e"i!entado %a"a identifica"
de fo"!a e$t"e!ada!ente %"ecisa - e$%lota" vulne"a1ilidades de a%licaci&n de distintas fo"!as !9s
inteli#entes8 =ue sus "ivales8 las (e""a!ientas co!%leta!ente auto!ati@adas8 no lle#an a "eali@a".
Inconvenientes de ZAP
ZAP es un %"o$-8 lo =ue si#nifica =ue est9 dise2ado %a"a se" ejecutado %o" el teste". Esto si#nifica =ue
ZAP no es tan Ctil %a"a un escena"io =ue necesite sc"i%ts. Aun=ue ZAP tiene ca"acte">sticas
auto!ati@adas8 estas se de1en lan@a" a t"av?s de la G:I as> =ue utili@a" ZAP en !odo 6va!os a ve" =u?
%asa6 no es una o%ci&n.
Nota al margen
Za% inclu-e una funcionalidad de 6.can Activo6 =ue es e$t"e!ada!ente %ode"osa. Advi?"tase =ue esta
funcionalidad (a"9 ta!1i?n fu@@in# e$t"e!ada!ente efectivo de fo"!ula"ios - ot"as va"ia1les de
ent"ada. Esto %uede !ost"a" cosas co!o vulne"a1ilidades de in-ecci&n ./*8 %e"o %od">a ta!1i?n
incluso e$%lota" dic(as vulne"a1ilidades. En un escaneo activo de testin# con ZAP f"ente a ve"siones de
softwa"e no actuali@adas8 %uede %"ovoca" =ue la (e""a!ienta (a#a un "eset de cada cont"ase2a
al!acenada en la ta1la de usua"ios !ediante la e$%lotaci&n de una vulne"a1ilidad de in-ecci&n ./*.
Esta situaci&n %od">a se" desast"osa %a"a un ento"no en %"oducci&n8 as> =ue s? e$t"e!ada!ente
cuidadoso a la (o"a de utili@a" ZAP %a"a el testin#.
Ejecutando ZAP
Pa"a ejecuta" ZAP si!%le!ente a""9ncalo desde; A%%lications M Lack4"ack M Vulne"a1ilit-
Assess!ent M Je1 A%%lication Assess!ent M Je1 Vulne"a1ilit- .canne"s M owas%F@a%. 4e
%"e#unta"9 si deseas #ene"a" un ce"tificado 3A %e"o no es necesa"io %a"a este eje"cicio.
Po" defecto8 ZAP escuc(a en el %ue"to 8N8N8 as> =ue la %"i!e"a cosa =ue de1es (ace" es ajusta" la
confi#u"aci&n P"o$- en el nave#ado" we18 en este caso +i"efo$. Pa"a ello di">#ete a; Edit M
P"efe"ences M Advanced M Netwo"k 4a1 M .ettin#s 3uando se a1"a el cuad"o de di9lo#o8 (a@ click
en el 1ot&n "adio =ue selecciona a B7anual %"o$- confi#u"ationB - confi#C"alo %a"a el %ue"to 8N8N.
Aa@ click en 6IO6 - cie""a la ventana de confi#u"aci&n. 'eali@a una nueva %etici&n A44P con el
nave#ado" - co!%"ue1a =ue ZAP -a est9 #"a1ando la nave#aci&n.
Ilustracin 1-: +on/i!urando las especi/icaciones del Pro0y en ,ire/o0.
*a %"i!e"o =ue va!os a testea" es la funcionalidad B.%ide"B. Pa"a (ace" esto8 (a@k click en la %esta2a
B.%ide"B - selecciona el sitio co""ecto de la lista des%le#a1le - (a@ click en el 1ot&n BPla-B. Esto "ellena"9
la ca"%eta B.itiosB en el %anel su%e"io" i@=uie"do del inte"fa@ de ZAP. He inte"?s %a"ticula" es el (ec(o
=ue la a"a2a encont"& la :'* <newslette"PidQ18 =ue tiene el acceso "est"in#ido8 lo =ue =uie"e deci" =ue
ZAP (a utili@ado de !ane"a a%"o%iada nuest"o token de sesi&n %a"a la a"a2a we1. Esta es una de las
ventajas de tal %"o$-8 %uede escuc(a" una sesi&n #uiada %o" el teste"8 utili@ando las cookies - ot"as
va"ia1les des sesi&n o1tenidas %o" el teste" %a"a desa""olla" !9s test auto!ati@ados.
Ilustracin 1.: <*P !rabando la nave!acin
Pa"a %"o1a" las ca%acidades auto!ati@adas de descu1"i!iento de vulne"a1ilidades de ZAP8 (a@ click en
la %esta2a BActive .canB )de nuevo8 advi?"tase =ue %od">a causa" %"o1le!as en un ento"no de
%"oducci&n,. A continuaci&n selecciona el sitio a%"o%iado de la lista des%le#a1le - (a@ click en el 1ot&n
B.ta"tB. 3onfo"!e el escaneo se "ealice a%a"ece"9n ale"tas en la es=uina i@=uie"da de a1ajo de la inte"fa@
de ZAP co!o un contado" con 1ande"as asociadas a los ti%os de vulne"a1ilidad donde el colo" denota el
"ies#o =ue i!%lican.
.i (aces click en la %esta2a BAle"tsB %uedes ve" =ue ZAP "eco%ila un 1uen nC!e"o de vulne"a1ilidades
de fo"!a "9%ida. Rstas %ueden se"vi" co!o un 1uen %unto de %a"tida %a"a e$%lota" la a%licaci&n
o1jetivo.
Ilustracin 11: <*P incluye un poderosa ara=a web
Ilustracin 12: >a capacidad de escaneo activo de <*P encuentra vulnerabilidades de /orma rpida.
PAS0 ,% /"plotaci#n
Qna .e0 las .ulnerabilidades han sido identi!icadas es momento de pasar a explotarlas para
"anar acceso a la aplicaci4n.
Explotacin
En los tests anterioresD deberGas haber notado un buen nMmero de inyecciones )[' en la
aplicaci4n. 'as .ulnerabilidades explotables mediante inyecci4n )[' son de al"una !orma las
.ulnerabilidades mBs arrolladorasD puesto Aue muestran in!ormaci4n sensible tal como las
credenciales de usuarioD in!ormaci4n sobre el pa"o u otra in!ormaci4n sensible del cliente.
Explotar la inyecci4n )[' reAuiere cierta habilidad. AunAue )[' es un len"uaje bastante
directoD al utili0ar aplicaciones con (8($%y)[' donde el apilamiento de consultas no es
soportadoD crear strin"s de inyecci4n reAuiere conocimiento de !uncionalidades de )[' mBs
ocultas tales como subFconsultasD unionesD combinaci4n de re"istros y otras caracterGsticas.
'as herramientas automati0adas pueden hacer Aue esta tarea sea mBs sencillaD pero a .eces
estBn limitadas por su inutilidad.
Qna herramienta extremadamente popular para la inyecci4n )[' es )['%ap
Ihttp#$$sAlmap.or"$J. )['%ap estB escrita en (ython asG Aue es bastante portable. )['%ap
incluye una enorme cantidad de .ectores de !unciones para la explotaci4n y puede trabajar
con una "ran .ariedad de bases de datos. Como el resto de herramientas utili0adas en este
ejercicioD )['%ap soporta el uso de coo9iesD asG Aue podemos usarla para testear
.ulnerabilidades tras la autenticaci4n.
Qna .ulnerabilidad Aue actualmente ya hemos identi!icado es la QR' $nesletter\idZ+ Aue
muestra uno de los boletines. (odemos .er !Bcilmente Aue es explotable si cambiamos el .alor
del parBmetro a K\idZP+K lo Aue causarB un error completo de %y)[' Aue nos mostrarB en
pantalla. Esta !uncionalidad es comMn en muchas aplicaciones eb Imostrar errores
completos de la base de datosJ pero es extremadamente peli"roso. AunAue esta salida es Mtil
para el desarrolladorD no tiene nin"Mn si"ni!icado para el usuario !inalD y peorD proporciona
in!ormaci4n .aliosa a los atacantes.
Apuntemos esta QR' con )['%ap y .eamos si es capa0 de de.ol.ernos in!ormaci4n .aliosa.
Sa hemos obtenido el tipo de base de datos Aue estB utili0ando como %y)[' asG Aue podemos
adaptar )['%ap para Aue se ejecute de una manera mBs e!iciente indicBndole el tipo de base
de datos del objeti.o. Accede a )['%ap desde Applications 2ac9Trac9 Explotation Tools
?atabase Explotation Tools %y)[' Explotation Tools sAlmap. )e abrirB una nue.a
.entana con un prompt en el directorio raG0 de instalaci4n para )['%ap e imprimirB una
descripci4n de uso. (ara atacar al objeti.o con )['%ap escribe Itodo en el mismo comandoJ#
# .%s;lmap.p< - =http#%%192.168.1.1,6%ne&sletter"id>1=
--coo'ie>=0.0747789>il6l(aemran0'dcgerhfd1:*(= --d!ms>=?<7@6= -* 1 --d!s
Ase"Mrate de sustituir la QR' apropiada y la coo9ie de sesi4n para el objeti.o. 'o Aue le
estamos diciendo a )['%ap Aue ha"a es testear la QR' utili0ando la coo9ie para Aue intente
listar todas las bases de datos Aue haya en el bac9 end %y)[' con un ni.el de in!ormaci4n de
+ Ide +F5J. )['%ap se AuejarB de Aue no se le ha proporcionado nin"Mn parBmetro y cuando
pre"unte Kdo you ant to try QR& injections in the tar"et url itsel!YKD responde KyK. ?eberGas
de .isuali0ar c4mo )['%ap de !orma apropiada identi!ica toda las bases de datos en el
objeti.o#
A continuaci4nD lo Aue haremos serB descar"ar todos los datos de las tablas de las bases de
datos Aue pueda encontrar )['%ap. Qna .e0 mBsD debido a la !alta del soporte para el
apilamiento de consultas en (8($%y)['D esto puede tomar cierto tiempo. (ara hacer estoD
simplemente cambia el !la" KFFdbsK en el comando anterior por el de KFFdumpK para descar"ar
toda la in!ormaci4n. Responder KyesK a las pre"untas Aue realice o .alores su"eridosD deberGa
ser su!iciente para lle.ar a cabo la tarea#
14tese Aue )['%ap debe recurrir a la !uer0a bruta para descubrir el contenido de las bases de
datos. ?e nue.oD esto resulta de las limitaciones de la inyecci4n )[' con (8($%y)['. ?e
!orma especG!icaD aunAue un parBmetro pudiera ser inyectableD el pre!ijo de la consulta )[' no
puede ser alteradaD por consi"uiente la consulta#
74641/ A 23B? ta!le C.434 id>x
(odrGa ser inyectable en la posici4n KTK sin embar"o el pre!ijo de la consulta IAue es la parte
Aue dice K)E'ECT ] *R<% table W8ERE idKJ no puede ser cambiado. 'a consulta debe
comen0ar siempre con el pre!ijo. Esto supone Aue no podamos cambiar la consulta para leer
K?E)C tableK ya Aue no permite
nin"una cantidad de cambios en el pre!ijo )['.
)['%ap es notablemente malo para reali0ar inyecciones con peticiones Aue utili0an corchetes
Ilustracin 15: 9?>Map identi/icando las bases de datos
Ilustracin 27: 9?>Map "aciendo un dump de los datos
y parEntesis alrededor de un parBmetro inyectable. (or ejemploD la consulta#
74641/ ser$id 23B? sers C.434 sername > $$0B7/DEsernameEF 5-9
pass&ord > ?95G$$0B7/DEpass&ordEFHI
es tri.ial para el humano para bypassear la aplicaci4n utili0ando la inyecci4n )['D pero
)['%ap !alla al explotar esta .ulnerabilidad. Es un buen ejemplo deD a pesar de la potencia de
)['%apD s4lo !unciona de manera 4ptima para un conjunto restrin"ido de circunstancias.
>ste es el por AuE la mayorGa de los scanners Aue utili0an esta herramienta descubrirBn s4lo
strin"s de inyecci4n clBsicos Itales como YidZT en una QR' donde T es un nMmeroJ.
A pesar de estas limitacionesD )['%ap reali0arB un buen trabajo para descubrir el contenido
de las bases de datos utili0ando un diccionario con nombres de posibles nombres de columnas
Ipero no descubrirBD por ejemploD la columna PdtstampP en la tabla PcontactPJ.
14tese Aue )['%ap almacenarB los resultados de cualAuier tabla Aue descar"ue en un
archi.o de texto. En el caso de Aue Auisieras iniciar una nue.a sesi4n de )['%apD y por tantoD
eliminar los datos almacenados en la sesi4n anteriorD hay Aue utili0ar el comando#
# .%s;lmap.p< Jprge-otpt
(ara re.isar cualAuier in!ormaci4n almacenada por )['%ap puedes hacerlo en el
directorio $pentest$database$sAlmap$output$ y en cualAuiera de los subdirectorios. VEase Aue
)['%ap ha hecho un trabajo excelente en la identi!icaci4n de los contenidos de la tabla lo"D la
cuBl parece Aue incluye contrase=as sin modi!icar#
Este es un ejemplo per!ecto de una .ulnerabilidad noFtEcnica Ip.ej. una !alla de ne"ocio
l4"icaJ. ?ise=ada como una !unci4n de auditorGa interna para la aplicaci4n Iprobablemente
para ayudar al soporte del usuarioD por ejemploD para ser capa0 de locali0ar la contrase=a
inmediatamente despuEs de Aue un usuario la cambie y ayudarle a reali0ar un reset de dicha
passordJD es en realidad un problema de se"uridad. AunAue la aplicaci4n estE almacenando
las contrase=as de los usuarios como hashes en la tabla de usuariosD la tabla Plo"P almacena
cualAuier contrase=a actuali0ada sin modi!icarD lo Aue lo con.ierte en una .ulnerabilidad.
Asumiendo Aue la contrase=a para KRubyK es correctaD podemos ahora testear si la
reutili0aci4n de contrase=as estB permitida. )abemos Aue el sitio permite !unciones
administrati.as por el puerto :@:@. &ntentamos acceder al sitio utili0ando para ello
Kruby@localhost.localdomainK y la contrase=a K)helly7@+7K
Ilustracin 21: 9?>Map encuentra datos de lo! de la aplicacin
-AsG Aue e!ecti.amente la contrase=a es .Blida/ Ahora Aue tenemos acceso a la 0ona
administrati.a de la aplicaci4nD podemos .ol.er a utili0ar ,a!D )['%ap o ;A(.
Ilustracin 22: >as contrase=as e0puestas permiten el acceso al area de administracin
PAS0 1% Crac)ear las contrase2as
Sa hemos conse"uido un punto de apoyo en el sistemaD .amos a intentar escalar pri.ile"ios.
Problemas con las contraseas
'a reutili0aci4n de contrase=as es un problema extendido Aue pla"a muchos sitios y
ser.idores en &nternet. (uesto Aue una buena contrase=a es di!Gcil de recordarD los usuarios a
menudo tienen la misma contrase=a para distintos ser.icios. (ara matar la curiosidadD
.eamos si el usuario KrubyK y la contrase=a K)helly7@+7K nos permite acceder al ser.idor .Ga
))8#
-AsG Aue e!ecti.amente podemos acceder/ Ahora tenemos otro punto de apoyo en el ser.idor
objeti.o. El si"uiente paso serB intentar obtener el acceso a la cuenta root. (odemos hacerlo
de distintas !ormas. 'a !orma mBs simple es comprobar si podemos utili0ar KsudoK para "anar
los pri.ile"ios de rootD mediante la ejecuci4n del comando#
$ sdo s
(arece Aue la cuenta KrubyK no tiene acceso al comando sudo Ino aparece en $etc$sudoersJ.
<tro !orma de obtener permisos de rootD es crac9ear otras contrase=as de usuario locales y
Ilustracin 2#: >a reutili4acin de contrase=as nos permite acceder va 998 al objetivo
Ilustracin 2(: :sta cuenta no puede utili4ar sudo para obtener permisos de root
comprobar si tienen acceso a sudo. Esto es di!Gcil puesto Aue el sistema almacena las
contrase=as en un !ichero Aue las oculta I$etc$shadoJ y s4lo puede ser leGdo con permisos de
root. (odrGa existir la posibilidad de Aue existiesen otros !icheros con Kcontrase=asK en el
sistemaD pensBndolo bien. AunAue )['%ap no !uese capa0 de obtener una lista de
contrase=as de los usuarios desde la tabla KusersK en la base de datos KebsiteKD podrGamos ser
capaces de acceder a dicha in!ormaci4n Iya Aue nos encontramos en una cuenta del sistemaJD
siempre Aue seamos capaces de encontrar las credenciales para acceder a la base de datos
%y)[' de !orma directa mediante lGnea de comandos.
Qn mEtodo para buscar las credenciales de acceso a la base de datos %y)[' es buscarlas en
los archi.os (8( Aue utili0a la aplicaci4n. (uesto Aue la aplicaci4n debe tener acceso a las
credenciales estBs estarBn almacenadas en al"Mn sitio sin modi!icarD dentro del sistema de
!icheros. AunAue esta in!ormaci4n no estE disponible .Ga ebD es probable Aue estE disponible
para un usuario con acceso al sistema de !icheros. 8a0 un listado de directorios y !icheros en
el directorio raG0 eb por de!ectoD mediante el comando#
$ ls %*ar%&&&%html
Al obser.ar los resultadosD Estos destacan dos errores de con!i"uraci4n desastrosos. El
primero es Aue la aplicaci4n eb estB ejecutBndose utili0ando para ello el usuario KrootK en
%y)['D una cuenta con poderes ilimitados en la base de datos. El se"undo es Aue el sistema
parece Aue estB utili0ando una cuenta una contrase=a .acGa para dicha cuenta.
(odemos probar estas credenciales utili0ando la utilidad de la lGnea de comandos de %y)['
como si"ue#
$ m<s;l - root &e!site
Ilustracin 2-: %uscando las credenciales de My9?> en el sistema de /ic"eros
Este comando intentarB acceder a la base de datos KebsiteK en el ser.idor local %y)[' como
el usuario root sin contrase=a.
-*uncion4/ Ahora Aue tenemos acceso a la base de datos podemos descar"arnos las
contrase=as con el comando#
m<s;lK select sernameL pass&ord from sersI
(or supuesto estos son los hashes de las contrase=as Aue .amos a crac9ear. (uedes intentarlo
mediante la bMsAueda en "oo"le para el hashD o simplemente utili0ando un crac9eador de
Ilustracin 2.: *ccediendo a la base de datos My9?>
Ilustracin 21: Mostrando los "as"es de las contrase=as en la tabla de usuarios
contrase=as como John the Ripper Ihttp#$$.openall.com$john$J.
John the Ripper estB instalado en 2ac9Trac9D pero podrGa tomar bastante tiempo debido a Aue
necesita un uso intensi.o de la C(Q para reali0ar hashes y comprobar los .alores. (or esta
ra04nD es mejor instalarlo en un ).< no .irtuali0ado con bastante capacidad de procesamiento.
(ara empe0ar a trabajar con JohnD primero copia y pe"a los usuarios y sus correspondientes
hashes de contrase=as en un archi.o de texto utili0ando "Edit Io KateJ. 'o si"uiente serB
limpiar los pipes I^J del !icheroD utili0ando la !unci4n Kreempla0arK del editorD reempla0ando
los pipes por nin"Mn carBcter.
Esto le permitirB a John reconocer el contenido del !ichero de !orma mBs sencilla. 'o si"uiente
Aue haremos serB empla0ar el sGmbolo dos puntos K#K entre cada usuario y el hash de la
contrase=a correspondiente. (or Mltimo nos ase"uramos Aue todos los espacios en blanco se
han eliminado del !ichero. Ruarda el !ichero como Kpasshashes.txtK en el directorio $root.
A continuaci4n arranca John desde Applications 2ac9Trac9 (ri.ile"e Escalation
(assord Attac9s <!!line Attac9s john the ripper. En la lGnea de comandosD escribe#
# .%:ohn Jformat>ra&-md5 %root%passhashes.txt
)i obtienes al"Mn error del tipo K1o passord hashes loaded Isee *A[JK puede si"ni!icar Aue
el !ormato de tu archi.o es incorrecto y es probable Aue conten"a espacios en blanco al
comien0o y$o al !inal del archi.o.
Ilustracin 22: Proporcionndole el /ormato adecuado al /ic"ero de contrase=as para @o"n t"e 6ipper
14tese Aue s4lo se necesita una contrase=a con !uer0a dEbil en una cuenta con permisos de
root para obtener control completo del host. Vamos a cambiar a la cuenta PjuliaPcon el
comando su desde nuestra terminal donde hemos accedido al ser.idor de la aplicaci4n con la
cuenta PrubyP mediante ))8#
$ s :lia
A continuaci4n introducimos la contrase=a de julia ImadridJ cuando lo solicite. 'o si"uiente
serB intentar ele.ar los pri.ile"ios IsuJ a los de la cuenta root Icon el comando Ksudo suKJ y reF
introduciremos la contrase=a de julia cuando lo solicite.
Ilustracin 25: @o"n crac&eando "as"es de contrase=as
-Voil_D tenemos permisos de root/ A continuaci4n podemos reali0ar una copia del !ichero
$etc$shado y utili0ar John the Ripper para crac9ear la contrase=a de la cuenta root.
Ilustracin #7: Abteniendo permisos de root a travBs de la cuenta de julia
AP3N4*C/ *
Esta mBAuina .irtual posee un "ran nMmero de problemas. Como se ha demostrado durante el
ejercicioD el tema mBs da=ino ha sido el Aue los usuarios del sistema reutilicen las contrase=as
para la inter!a0 eb y para el acceso mediante la shell. Esto si"ni!ica Aue cualAuier contrase=a
Aue se expon"a .Ga ebD permitirB el acceso a la cuenta shell local correspondiente. Endurecer
la polGtica de contrase=as es complicadoD especialmente cuando a los usuarios se les tiene
permitido crear sus propias contrase=as. &ncluso si la aplicaci4n reali0ase una comprobaci4n
para ase"urarse Aue la contrase=a de acceso .Ga eb es distinta de la contrase=a de acceso al
sistema .Ga shellD serGa tambiEn problemBtico Ipor ejemploD un cuenta eb comprometida
podrGa ser utili0ada para determinar la contrase=a para el acceso .Ga shell mediante el reset de
contrase=as y obser.ando cuBles !allaronJ.
'as aplicaciones eb especG!icas en el puerto :@ y :@:@ posee otro "ran nMmero de
problemasD pero el utili0ar al"unos trucos en presentaci4n Icomo solicitar un lo"in para
acceder a ciertas pB"inas y las redirecciones de Apache para todas las peticionesJ reducen
bastante la e!ecti.idad de las herramientas automati0adas. AunAue las herramientas
automati0adas rBpidamente encuentran distintas !allasD no parece Aue sean capaces de
identi!icar muchas de las mBs peli"rosas Icomo los !ormularios de lo"inD Aue son .ulnerables a
la inyecci4n )[' lo Aue permite sobrepasar el proceso de autenticaci4nJ. Esta obser.aci4n es
crGtica cuando estamos e.aluando la utili0aci4n de cualAuier soluci4n automati0ada.
El tema mBs extendido y con mayor impacto Aue a!ecta al c4di"o de una aplicaci4n adaptado
es las .ulnerabilidades atacadas mediante la inyecci4n )['. >stas pueden conducir a la
re.elaci4n de in!ormaci4n y al acceso al sistema de !icheros por parte de los atacantes. Cada
consulta )[' debiera testearse a tra.Es de al"Mn conjunto de rutinas de entradas saniti0adas.
El alcance mBs prBctico podrGa ser utili0ar consultas preparadas con la inter!a0 %y)['i.
AdemBs cada aplicaci4n deberGa ejecutarse en una cuenta no pri.ile"iada y con permisos
limitados a los cambios Aue .aya a reali0ar Aue permita la !uncionalidad de la aplicaci4n. Esto
pre.iene cambios no autori0ados en la base de datos mBs allB de la .isibilidad de la aplicaci4n.
)i"uiendo al tema de las .ulnerabilidades explotables mediante inyecci4n )['D en tErminos
de cantidadD si"uen un buen nMmero de .ulnerabilidades T)) y T)R* Aue posee las
aplicaciones eb. >stas son de al"una !orma mBs di!Gcil de demostrar en este ejercicio
Kcapture the !la"K puesto Aue reAuiere la interacci4n de usuarios de aplicaci4n le"Gtimos y e
ahG el por AuE no han sido estudiadas en este documento.
TambiEn hay un nMmero de .ulnerabilidades '*& Aue podrGan exponer c4di"o (8( y otros
archi.os sensibles del sistema de !icheros. Todos los datos de entrada del usuario Aue son
utili0ados para abrir archi.os Aue acceden a los archi.os del sistema local deberGan
comprobarse !rente a una lista blanca de recursos disponibles y el acceso de los archi.os
deberGa limitarse a directorios especG!icos.
Qn buen nMmero de recursos del objeti.o deberGa tener un acceso restrin"ido. Esto incluye el
acceso a muchos de los ser.icios Itales como )WAT y WebminJ asG como los directorios en el
raG0 eb Itales como ebali0erJ. 'imitar el acceso a estos recursos utili0ando un !ireall como
iptables es una soluci4n directa. Como mGnimo las contrase=as del archi.o .htaccess deberGa
utili0arse para prote"er ciertos recursos obtenidos .Ga eb.
AP3N4*C/ **
'o si"uiente es una lista de .ulnerabilidades Aue aparecen en el objeti.oD Aue puede ser
utili0adas para estimar la e!ecti.idad del testin" automati0ado.
!evelaci"n de informaci"n
El directorio $ebali0er se encuentra bajo el directorio raG0 ebD lo Aue lo hace
locali0able. 'os reportes en este directorio contienen detalles de con!i"uraci4n del
sistema
'a pB"ina de error 3@3 contiene in!ormaci4n sobre el tipo de sistema I)istema
<perati.o y .ersi4n de 8TT(?J
'os errores de %y)[' Aue se muestran contienen detalles sobre la base datos asG como
las consultas completas
$phpin!o re.ela la salida del comando phpin!oIJ
'a pB"ina $pro!ile permite la enumeraci4n de cuentas
Inclusi"n de fic#eros locales $%&I'
'a pB"ina indexD Aue es solicitada en cada petici4nD contiene una .ulnerabilidad
explotable mediante '*& en la .ariable KactionK de la QR'
'a pB"ina $read contiene una .ulnerabilidad explotable mediante '*& puesto Aue la
.ariable K!ileK no se comprueba antes de Aue se incluya o no estB limitada al directorio
de descar"as.
In(ecci"n )*%
El !ormulario de lo"in contiene una .ulnerabilidad explotable mediante inyecci4n )['
puesto Aue las .ariables KusernameK y KpassordK no estBn saniti0adas
'a pB"ina $nesletter contiene una .ulnerabilidad explotable mediante inyecci4n )['
puesto Aue el parBmetro id no estB saniti0ado
'a pB"ina $pro!ile contiene una .ulnerabilidad explotable mediante inyecci4n )['
puesto Aue el !ormulario de entrada no estB saniti0ado
'a pB"ina $reco.ery contiene una .ulnerabilidad explotable mediante inyecci4n )['
para la .ariable KemailK con el mEtodo (<)T.
'a pB"ina $re"isterVsrc contiene mMltiples .ulnerabilidades explotables mediante
inyecci4n )[' Aue pro.ienen de .ariables no saniti0adas con el mEtodo (<)T
'a pB"ina $si"nupVsrc contiene mMltiples .ulnerabilidades explotables mediante
inyecci4n )['
+))
'a pB"ina $pro!ile contiene mMltiples .ulnerabilidades explotables mediante T)) Aue
incluye T)) re!lejados en el parBmetro KidK de la QR' asG como T)) almacenados Aue
pro.ienen de los datos en la base de datos Aue no estBn siendo saniti0ados antes de
mostrarse
'a pB"ina $re"ister contiene una .ulnerabilidad explotable mediante T)) re!lejado Aue
pro.iene del parBmetro KidK
&allas l"gicas
'a pB"ina $reco.ery permite Aue cualAuier cuenta utilice como contrase=a de reset
Kchan"emeK sin nin"una .alidaci4n.
AP3N4*C/ ***
-Alerta de spoiler/
1o leas esta parte del documento si toda.Ga no has completado el ejercicioD contiene las
credenciales de las cuentas Aue puede utili0arse para acceder al sistema.
'a contrase=a para la cuenta root es KrootCCpassK sin comillas dobles. 8ay .arias cuentas de
usuario en el sistema con las si"uientes credenciales#
Qsuario Contrase=a
ebde. chan"eme
brian my7cents
john trans!ormersrule
alice turtles66
ruby )helly7@+7
leon Aer+7,3
julia madrid
michael somepassord
bruce 'osAn"eles'a9ers
neil Jets3E.er
charles chuc9,,
AP3N4*C/ *
%e "ustarGa a"radecer el soporte de la Qni.ersidad de (ennsyl.aniaD la Escuela de Artes \
Ciencias de la Computaci4n por permitir Aue mi trabajo en este ejercicio haya sido posible.
Este ejercicio !uE en primera instancia reali0ado en las jornadas de (hiladelphia del <pen
Web Application )ecurity (roject I<WA)(J. (ara mBs detalles sobre <WA)(D y las jornadas
de (hiladelphiaD .Ease https#$$.oasp.or"$index.php$(hiladelphia. %e "ustarGa tambiEn
a"radecer mi ?rexel coFop %att 2ucciD por su ayuda testeando el objeti.o y re.isando esta
documentaci4n.
?oy la bien.enida a cualAuier !eedbac9D cuestiones o comentarios. )iEntete libre de escribirme
un mail a la direcci4n justin@madirish.net
%e "ustarGa dedicar este trabajo en la memoria de mi hijoD Tristan.

Vous aimerez peut-être aussi