Tenemos una aplicación web que usa XPATH para consultar información guardada directamente en el documento XML que previamente hemos construido.
Se pretende recuperar el elemento
Algunas aplicaciones pueden embeber esos datos ingresados directamente en la consulta XPATH, lo cual significaría que la aplicación web tiene un hueco de seguridad.
Esta función nos va a validar los datos de los usuarios, y si estos datos ingresados son correctos, la aplicación debería devolver el título... por poner un ejemplo.
Private Function GetTitle(ByVal strUser As String, ByVal strPassword As String) As String
Dim Doc As New XmlDocument
Doc.Load(Server.MapPath(".") & "\XML.xml")
Dim nav As XPathNavigator = Doc.CreateNavigator()
Dim expr As XPathExpression = nav.Compile( _
"string(//Tigrillo[Nombre/text()='" + strUser + _
"' and Password/text()='" + strPassword + "']/Titulo/text())")
Dim Titulo As String = Convert.ToString(nav.Evaluate(expr))
If Titulo = String.Empty Then Return "Credenciales incorrectas, trate de nuevo" _
Else Return Titulo
End Function
No lo crean confuso, que es bastante sencillo. La función recibe dos parámetros: Usuario y Password y, devuelve el título. Nada más.
Si nosotros no somos usuarios de una aplicación web... nos podemos pasar toda la vida intentando ingresar, probando a poner usuarios y passwords que se nos ocurran.
Lógicamente nadie sería tan tonto de hacer eso, verdad? ...verdad?
Claro, para eso se hicieron las inyecciones XPATH (pareciera que se las estoy recomendando jeje).
En los datos de autenticación ingresamos esto,
Usuario:' or 1=1 or ''=' (Esta sentencia es quien hace todo el trabajo sucio)
Password: loquequieras (debes ingresar algo, pero no será tomado en cuenta)
Esta imagen me ayudará,
al presionar el botón OK, voilá... recibimos el título... de quién? del primer registro en el XML.
Pareciera poco importante, pero qué hubiera pasado si en lugar del título obtuviéramos un dato importante? por ejemplo, el número de la tarjeta de crédito u otra información confidencial? Eso sería preocupante, no es cierto?
No es mi costumbre alargar tanto un post, así que en la próxima la seguimos. Chau.
No hay comentarios.:
Publicar un comentario