SlideShare una empresa de Scribd logo
BlindXPathInjectionPedro Laguna
Agenda¿Qué es XPath?Consultas XPathXPathInjectionBlindXPathInjectionSacar el numero de nodos y atributosSacar la longitud de nodos y atrib…Sacar el nombre de ya sabeis que :PSacar el contenidoY ahora… ¡Todo junto!
XPathExisten dos versiones: 1.0 y 2.0La 1.0 es una recomendación de la W3C del 16 de noviembre de 1999Permite realizar busquedas en ficheros XMLNos podemos referir a cualquier contenido del fichero de una manera rapidaDevuelve arrays con la informacionextraida
Conceptos en XPath<charlas>	 <!– Esto es un XML muy simple… --><charla id=“2”>	<titulo>BlindXPathInjection</titulo>	<ponente>Pedro Laguna</ponente>	<?processinghref=“charla.css” style=“text/css” ?></charla></charlas>COMENTARIONODOATRIBUTOCONTENIDOPROCESSING-INSTRUCTION
Elementos en XPath4 tipos de elementosNodo: Puede contener al resto de tiposText: Contiene textoComment: Un comentario de XMLProcessing-instruction: Instrucción para ejecutar comandos XSLT en el fichero XML
Preguntando…¿Cuál es la charla?/charlas/charla/titulo¿Cuál es el id de la charla?/charlas/charla/@id¿La charla de la que es ponente Pedro?/charlas/charla[ponente = “Pedro Laguna”]
Operadoresandor<><=>==!=Los operadores and y or no pueden ir en mayúsculas. XPathInjectionSimilar al SQL Injection de los logins:/usuarios/usuario[login = “$user” and password = “$pass”]Si no filtramos las variables nos pueden generar una consulta cierta para todos los casos:/usuarios/usuario[login = “a” or “a”=“a” or “a”=“b” and password = “asdf”
XPathInjection¿Por qué funciona? login = “a” or “a”=“a” or “a”=“b” and password = “asdf”ORCIERTOFALSO¡Estamos dentro!
DEMOXPathInjection en campos de login
BlindXPathInjectionNos permite extraer todo el arbol XMLVamos a seguir el siguiente procedimiento:Extraer el numero de nodos y atributosSacar la longitud de los nodos y los atributosExtraer el nombre de los nodos y atributosExtraer el contenido de los nodos y los atributos
Consultas “avanzadas” en XPathSeleccionar la raiz del arbol XML/Seleccionar todos los elementos:Nodos: //child::node()Texto: //child::*Comentarios: //child::comment()Processing-instructions: //child:processing-instruction()Seleccionar todos los atributos://attribute::* o //@*Seleccionar el primer subnodo de un nodo:/nodo/subnodo[1]
Funciones disponibles en XPathtext()Selecciona el texto contenido dentro de los nodosname()Selecciona el nombre de los nodos y atributosposition()Devuelve el indice del elementocount(consulta)Cuenta el numero de elementos devueltos por la consultastarts-with(string, string)Devuelve true si la primera cadena empieza por la segundacontains(string, string)Devuelve true si la primera cadena contiene la segundastring-length(string)Devuelve la longitud de la cadena
Numero total de nodos y atributoscount(//child::*)Cuenta el numero total de nodos y subnodoscount(//@*)Cuenta el numero total de atributosp.e.2” and count(//child::*) > 0 or “a”=“b2” and count(/users/user/@*) > 0 or “a”=“b
Longitud de nodos y atributos/nodo/subnodo/child::*[position()=X and string-length(name()) > 0]Devuelve la longitud del nodoqueeste en la posicion X/nodo/subnodo/@*[position()=X and string-length(name()) > 0]Devuelve la longitud del atributoqueeste en la posicion X
Reduccion de charset/nodo/subnodo[X]/child::*[position()=Y and contains(name(), 'abc')]Devuelveciertosi el subnodoXtiene en la posicionY un nodoquecontiene la cadenaabc/nodo/subnodo[X]/@*[position()=Y and contains(name(), 'abc')]Devuelveciertosi el subnodoXtiene en la posicionY un nodoquecontiene la cadenaabc
Búsqueda binariaSabiendo la longitud y el charset de un elemento se podría reducir el numero de consultas a realizar
Nombre de nodos y atributos/nodo/subnodo[1]/child::*[position() = 1 and starts-with(name(), ‘abc')Devuelveciertosi el primer nodoempieza con abc/nodo/subnodo[1]/@*[position() = 1 and starts-with(name(), ‘abc')]Devuelve cierto si el primer atributo del subnodo empieza con abc
Información contenida en nodos y atributosLongitud de nodos y atributosstring-length(/nodo/subnodo[X]/campo) > 0Devuelve la longitud del contenido del nodo campo dentro del subnodo en la posicionXstring-length(/nodo/subnodo[X]/@atrib) > 0Devuelve la longitud del contenido del atributo atribdentro del subnodo en la posicionX
Información contenida en nodos y atributosTexto de nodos y atributosstarts-with(/nodo/subnodo[X]/campo,’abc’)Devuelve cierto si el campo del subnodoX empieza por la cadena abcstarts-with(/nodo/subnodo[X]/@atrib,’abc’)Devuelve cierto si el atributo del subnodoX empieza por la cadena abcEvidentemente también se puede hacer reducción de charset y búsqueda binaria…
Y ahora… ¡Todo junto!Demostración de BXI
Universal XPathInjectionNos permite extraer todo el contenido de los nodos sin conocer nada acerca del arbolNo se puede hacer lo mismo con atributos, comentarios o processinginstructions.Se basa en las consultas:Longitud: string-length(//child::*) > 0Reduccioncharset: contains(//child::*)Extraccion: starts-with(//child::*, ‘abc’)
DEMOAxolote
ConclusionesMediante XPath podemos acceder a todo el contenido del ficheroEn campos de login hacer uso de BlindXPathInjection es abusar un poco :PDe nuevo, filtrar los parámetros se convierte en condición indispensableUXI vale para casos en los que la mayor parte de la información esta contenida en los nodos
http://www.equilibrioinestable.com/
¿Preguntas?Pedro Lagunaplaguna@informatica64.comhttp://www.equilibrioinestable.com/
Blind X Path Injection

Más contenido relacionado

DOCX
Entrega de reporte no 1, lab 1
PPTX
19 javascript servidor
PDF
Taller ruby
PDF
Curso sobre Python
PDF
4. Programación con arrays, funciones, y objetos definidos por el usuario
PPTX
PDF
Linux 3
PDF
Python para principiantes
Entrega de reporte no 1, lab 1
19 javascript servidor
Taller ruby
Curso sobre Python
4. Programación con arrays, funciones, y objetos definidos por el usuario
Linux 3
Python para principiantes

La actualidad más candente (12)

PPT
Programacion logica
PPT
Clase de ejemplo de implementación de una pila con punteros como tda
PPTX
Formato de ppt
PPTX
Compresion de archivos
PDF
Jyoc java-cap20 listas, colas y pilas
PDF
Firewall de linux.
DOC
DOCX
PPT
Mule Librerias en Java
PPT
Kruskal
PDF
Programacion logica
Clase de ejemplo de implementación de una pila con punteros como tda
Formato de ppt
Compresion de archivos
Jyoc java-cap20 listas, colas y pilas
Firewall de linux.
Mule Librerias en Java
Kruskal
Publicidad

Destacado (6)

PDF
PenTest Magazine Teaser - Mobile Hacking
PDF
Dissecting Java Server Faces for Penetration Testing
PDF
Defending against Java Deserialization Vulnerabilities
PPTX
AMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does It
PDF
BruCon (Brussels 2011) Hacking Conference - Botnets and Browsers (Brothers in...
PDF
BlackHat Arsenal 2014 - C-SCAD : Assessing Security Flaws in C-SCAD WebX Clie...
PenTest Magazine Teaser - Mobile Hacking
Dissecting Java Server Faces for Penetration Testing
Defending against Java Deserialization Vulnerabilities
AMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does It
BruCon (Brussels 2011) Hacking Conference - Botnets and Browsers (Brothers in...
BlackHat Arsenal 2014 - C-SCAD : Assessing Security Flaws in C-SCAD WebX Clie...
Publicidad

Similar a Blind X Path Injection (20)

PPTX
Aprendiendo XPath
ODP
PDF
Datos En La Web - Clase 2
PDF
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
PPT
Capacitacion xquery
PPTX
Dom
PDF
Datos En La Web - Clase 1
PDF
Introduccion a DOM y AJAX - Javier Oliver Fulguera
PPTX
programacion para la web (Dom)
PPTX
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
PDF
Introducciขn a XQuery.pdf
PDF
Bases de Datos - Parte 10/10 XPath
PPTX
Tema 3 xml processing ap is
PPT
Introducción a XML
PDF
Diseño de Ontologías: Protégé - OWL: SPARQL
PDF
Javascript dom
Aprendiendo XPath
Datos En La Web - Clase 2
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
Capacitacion xquery
Dom
Datos En La Web - Clase 1
Introduccion a DOM y AJAX - Javier Oliver Fulguera
programacion para la web (Dom)
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Introducciขn a XQuery.pdf
Bases de Datos - Parte 10/10 XPath
Tema 3 xml processing ap is
Introducción a XML
Diseño de Ontologías: Protégé - OWL: SPARQL
Javascript dom

Más de Chema Alonso (20)

PPTX
CyberCamp 2015: Low Hanging Fruit
PDF
Índice Pentesting con Kali 2.0
PDF
Configurar y utilizar Latch en Magento
PPTX
Cazando Cibercriminales con: OSINT + Cloud Computing + Big Data
PDF
New Paradigms of Digital Identity: Authentication & Authorization as a Servic...
PDF
CritoReto 4: Buscando una aguja en un pajar
PDF
Dorking & Pentesting with Tacyt
PDF
Pentesting con PowerShell: Libro de 0xWord
PDF
Foca API v0.1
PDF
Recuperar dispositivos de sonido en Windows Vista y Windows 7
PPTX
It's a Kind of Magic
PPTX
Ingenieros y hackers
PDF
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...
PDF
Auditoría de TrueCrypt: Informe final fase II
PPTX
El juego es el mismo
PDF
El Hardware en Apple ¿Es tan bueno?
PDF
Latch en Linux (Ubuntu): El cerrojo digital
PDF
Hacking con Python
PPTX
Shuabang Botnet
PPTX
Tu iPhone es tan (in)seguro como tu Windows
CyberCamp 2015: Low Hanging Fruit
Índice Pentesting con Kali 2.0
Configurar y utilizar Latch en Magento
Cazando Cibercriminales con: OSINT + Cloud Computing + Big Data
New Paradigms of Digital Identity: Authentication & Authorization as a Servic...
CritoReto 4: Buscando una aguja en un pajar
Dorking & Pentesting with Tacyt
Pentesting con PowerShell: Libro de 0xWord
Foca API v0.1
Recuperar dispositivos de sonido en Windows Vista y Windows 7
It's a Kind of Magic
Ingenieros y hackers
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...
Auditoría de TrueCrypt: Informe final fase II
El juego es el mismo
El Hardware en Apple ¿Es tan bueno?
Latch en Linux (Ubuntu): El cerrojo digital
Hacking con Python
Shuabang Botnet
Tu iPhone es tan (in)seguro como tu Windows

Último (20)

PDF
Diapositiva proyecto de vida, materia catedra
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PPTX
Propuesta BKP servidores con Acronis1.pptx
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PDF
taller de informática - LEY DE OHM
PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
Estrategia de apoyo tecnología grado 9-3
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
Calidad desde el Docente y la mejora continua .pdf
PPTX
Presentación de Redes de Datos modelo osi
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Diapositiva proyecto de vida, materia catedra
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
El-Gobierno-Electrónico-En-El-Estado-Bolivia
Propuesta BKP servidores con Acronis1.pptx
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
REDES INFORMATICAS REDES INFORMATICAS.pptx
historia_web de la creacion de un navegador_presentacion.pptx
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
taller de informática - LEY DE OHM
Influencia-del-uso-de-redes-sociales.pdf
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Estrategia de apoyo tecnología grado 9-3
Presentación PASANTIAS AuditorioOO..pptx
Calidad desde el Docente y la mejora continua .pdf
Presentación de Redes de Datos modelo osi
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Power Point Nicolás Carrasco (disertación Roblox).pptx
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx

Blind X Path Injection

  • 2. Agenda¿Qué es XPath?Consultas XPathXPathInjectionBlindXPathInjectionSacar el numero de nodos y atributosSacar la longitud de nodos y atrib…Sacar el nombre de ya sabeis que :PSacar el contenidoY ahora… ¡Todo junto!
  • 3. XPathExisten dos versiones: 1.0 y 2.0La 1.0 es una recomendación de la W3C del 16 de noviembre de 1999Permite realizar busquedas en ficheros XMLNos podemos referir a cualquier contenido del fichero de una manera rapidaDevuelve arrays con la informacionextraida
  • 4. Conceptos en XPath<charlas> <!– Esto es un XML muy simple… --><charla id=“2”> <titulo>BlindXPathInjection</titulo> <ponente>Pedro Laguna</ponente> <?processinghref=“charla.css” style=“text/css” ?></charla></charlas>COMENTARIONODOATRIBUTOCONTENIDOPROCESSING-INSTRUCTION
  • 5. Elementos en XPath4 tipos de elementosNodo: Puede contener al resto de tiposText: Contiene textoComment: Un comentario de XMLProcessing-instruction: Instrucción para ejecutar comandos XSLT en el fichero XML
  • 6. Preguntando…¿Cuál es la charla?/charlas/charla/titulo¿Cuál es el id de la charla?/charlas/charla/@id¿La charla de la que es ponente Pedro?/charlas/charla[ponente = “Pedro Laguna”]
  • 7. Operadoresandor<><=>==!=Los operadores and y or no pueden ir en mayúsculas. XPathInjectionSimilar al SQL Injection de los logins:/usuarios/usuario[login = “$user” and password = “$pass”]Si no filtramos las variables nos pueden generar una consulta cierta para todos los casos:/usuarios/usuario[login = “a” or “a”=“a” or “a”=“b” and password = “asdf”
  • 8. XPathInjection¿Por qué funciona? login = “a” or “a”=“a” or “a”=“b” and password = “asdf”ORCIERTOFALSO¡Estamos dentro!
  • 10. BlindXPathInjectionNos permite extraer todo el arbol XMLVamos a seguir el siguiente procedimiento:Extraer el numero de nodos y atributosSacar la longitud de los nodos y los atributosExtraer el nombre de los nodos y atributosExtraer el contenido de los nodos y los atributos
  • 11. Consultas “avanzadas” en XPathSeleccionar la raiz del arbol XML/Seleccionar todos los elementos:Nodos: //child::node()Texto: //child::*Comentarios: //child::comment()Processing-instructions: //child:processing-instruction()Seleccionar todos los atributos://attribute::* o //@*Seleccionar el primer subnodo de un nodo:/nodo/subnodo[1]
  • 12. Funciones disponibles en XPathtext()Selecciona el texto contenido dentro de los nodosname()Selecciona el nombre de los nodos y atributosposition()Devuelve el indice del elementocount(consulta)Cuenta el numero de elementos devueltos por la consultastarts-with(string, string)Devuelve true si la primera cadena empieza por la segundacontains(string, string)Devuelve true si la primera cadena contiene la segundastring-length(string)Devuelve la longitud de la cadena
  • 13. Numero total de nodos y atributoscount(//child::*)Cuenta el numero total de nodos y subnodoscount(//@*)Cuenta el numero total de atributosp.e.2” and count(//child::*) > 0 or “a”=“b2” and count(/users/user/@*) > 0 or “a”=“b
  • 14. Longitud de nodos y atributos/nodo/subnodo/child::*[position()=X and string-length(name()) > 0]Devuelve la longitud del nodoqueeste en la posicion X/nodo/subnodo/@*[position()=X and string-length(name()) > 0]Devuelve la longitud del atributoqueeste en la posicion X
  • 15. Reduccion de charset/nodo/subnodo[X]/child::*[position()=Y and contains(name(), 'abc')]Devuelveciertosi el subnodoXtiene en la posicionY un nodoquecontiene la cadenaabc/nodo/subnodo[X]/@*[position()=Y and contains(name(), 'abc')]Devuelveciertosi el subnodoXtiene en la posicionY un nodoquecontiene la cadenaabc
  • 16. Búsqueda binariaSabiendo la longitud y el charset de un elemento se podría reducir el numero de consultas a realizar
  • 17. Nombre de nodos y atributos/nodo/subnodo[1]/child::*[position() = 1 and starts-with(name(), ‘abc')Devuelveciertosi el primer nodoempieza con abc/nodo/subnodo[1]/@*[position() = 1 and starts-with(name(), ‘abc')]Devuelve cierto si el primer atributo del subnodo empieza con abc
  • 18. Información contenida en nodos y atributosLongitud de nodos y atributosstring-length(/nodo/subnodo[X]/campo) > 0Devuelve la longitud del contenido del nodo campo dentro del subnodo en la posicionXstring-length(/nodo/subnodo[X]/@atrib) > 0Devuelve la longitud del contenido del atributo atribdentro del subnodo en la posicionX
  • 19. Información contenida en nodos y atributosTexto de nodos y atributosstarts-with(/nodo/subnodo[X]/campo,’abc’)Devuelve cierto si el campo del subnodoX empieza por la cadena abcstarts-with(/nodo/subnodo[X]/@atrib,’abc’)Devuelve cierto si el atributo del subnodoX empieza por la cadena abcEvidentemente también se puede hacer reducción de charset y búsqueda binaria…
  • 20. Y ahora… ¡Todo junto!Demostración de BXI
  • 21. Universal XPathInjectionNos permite extraer todo el contenido de los nodos sin conocer nada acerca del arbolNo se puede hacer lo mismo con atributos, comentarios o processinginstructions.Se basa en las consultas:Longitud: string-length(//child::*) > 0Reduccioncharset: contains(//child::*)Extraccion: starts-with(//child::*, ‘abc’)
  • 23. ConclusionesMediante XPath podemos acceder a todo el contenido del ficheroEn campos de login hacer uso de BlindXPathInjection es abusar un poco :PDe nuevo, filtrar los parámetros se convierte en condición indispensableUXI vale para casos en los que la mayor parte de la información esta contenida en los nodos