Professional Documents
Culture Documents
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.
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:
Prefacio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Inyeccin HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
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.
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
Por lo consiguiente, cada ejemplo dentro de esos captulos est estructurado de la misma manera e
incluye:
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
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:
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
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
Con este ejemplo, que tal si se te ocurre inyectar una etiqueta meta como la siguiente:
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:
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.
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
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.
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:
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
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
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.
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.
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:
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.