A menudo el programador novato escribe código vulnerable sin saberlo. Es ese código que admite cualquier valor de entrada por parte del usuario, sin pasar por ningún proceso de control, de saneamiento o revisión.
Ya vimos hace unos días, cuando obtuvimos acceso al robots.txt, que había una página llamada injection.php
En esta página, hasta os he dejado una variable de debug para que podáis ver la cadena que se envía a la consulta SQL y podáis pensar mejor vuestro ataque.
La comilla simple, es la que delimita el texto y puedo usar eso que veo para crear otra consulta que se salte la verificación del usuario y la contraseña y me devuelva la lista de usuarios.
Es decir, quiero ejecutar un comando como este:
Esto ha sido borrado por hacer la KEY demasiado fácil. Suerte que no hay máquinas del tiempo.
A AND B OR C será cierto en su conjunto siempre que C sea cierto. Aunque ni A ni B sean ciertas. Es lo que se estudia en lógica matemática. Es decir, no necesito saber ni el usuario ni la contraseña porque si se cumple mi condición 1=1 es suficiente para que toda la consulta se ejecute.
Los dos guiones se usan para indicar un comentario en SQL. Así que si ponemos — lo que venga detrás será ignorado por la consulta.
Como nos conocemos, se que hay ahí fuera dos tipos de personas. Las que no sabéis gran cosa de ciberseguridad y estáis aprendiendo algo con estos artículos y el juego de hackme, y los que sabéis más que yo y podríais entrarme hasta la cocina con esa vulnerabilidad.
Así que ya os digo que he creado un usuario para acceder a esa base de datos concreta, que esa base de datos solo tiene esa tabla, y que ese usuario que he creado solo accede a esa tabla concreta de esa base de datos concreta en modo de lectura.
Ni loco lanzo un reto a hackers y creo una consulta de inyección con privilegios de administrador de BBDD. Que luego me borráis las tablas o me sacáis las KEY directamente de la base de datos.
Mucho ojo con el SQL mal usado, y con dar a un usuario más privilegios de los que necesita realmente.
Una última cosa … WordPress es famosa por sus fallos relativos a SQLInjection. Pero el problema no es WordPress en si, sino que la gente instala cualquier tipo de plugin y muchos de ellos estan hechos con poca habilidad, o tal vez los hacen asi precisamente para ser vulnerables, …
El caso es que evitéis instalar cosas raras en WordPress por muy chulas que parezcan, y menos aun si son «piratas». Avisados quedáis.
Y hasta aquí la solución a este reto. Os dejo que acabéis de obtener la KEY por vosotros mismos. ¡Hasta el próximo reto!