Eliminar tuplas o tablas a traves de SQL injection

Iniciado por Schaiden, 24 Agosto 2017, 05:30 AM

0 Miembros y 1 Visitante están viendo este tema.

Schaiden

Muy buenas! Yo se que siempre que se hace una consulta para ver algún dato de alguna tabla, si el parametro que está dentro de la consulta no filtra los '' (en caso de que el parámetro fuera un string), o si no verifica que sea estrictamente un entero (en caso de que el parametro fuera un entero), la aplicación sería vulnerable a mandar un UNION SELECT y elegir datos de campos y tablas que nosotros queramos, siempre y cuando se respete el num de columnas respecto a los correspondientes de la consulta original, de ésta forma podríamos estar leyendo en la base de datos. Pero lo que yo siemrpe quise saber es cómo eliminar tuplas o tablas enteras. Para borrar todas las tablas intenté utilizando ; (púnto y coma) en medio de la inyección y luego la sentencia DROP ALL TABLES. Ejemplo:

http ://www.example.com/articles.php?id=-1'; or 68 = '66; DROP ALL TABLES; --

Y no funciono, luego de googlear un poco encontré que la mayoria de aplicaciones no soportan el apilamiento de consultas, es decir, luego de llegar al punto y coma no se sigue leyendo más:

https://security.stackexchange.com/questions/33900/sql-injection-drop-all-tables

Documentación de PHP:
mysql_query() sends a unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified link_identifier.

Entonces por lógica, supongo que la única forma de eliminar tuplas o tablas sería lograr inyectar en una consulta que en vez de ser de tipo SELECT, fuera DELETE (para eliminar tuplas), o DROP (para eliminar tablas), lo que me parece muy dificil de encontrar, ya que por ejemplo un delete_user.php vulnerable que tuviera una consulta como ésta:

DELETE FROM users WHERE id = ?

yo supongo que el delete_user.php solo sería accesible para el admin, y si consiguieramos el panel y las credenciales del admin, ya no tendría utilidad la vulnerabilidad de SQL inejction, ya que el delete_user.php ya nos permite en si eliminar datos de la BD

Me gustaría saber si estoy acertado en ésto, o si tal vez estoy ignorando algún otra técnica para eliminar cosas de la BD. Y también saber si alguna vez encontraron alguna aplicacion vulnerable que permitiera la eliminacion de datos en la DB. Saludos y gracias!

D3Maxwell

Jelou amigo!

Sólo puedes eliminar tuplas o tablas si el código original es para eliminarlas. Es decir, que solo va a hacer caso a los comandos SQL con la base en el comando original, no sé si me explico. Si tienes un archivo php vulnerable que extraiga información de la DB, tú solo podrás extraer información de la DB, no añadirla ni eliminarla. Por tanto, para añadir tuplas a una tabla, por ejemplo, necesitarias un formulario vulnerable que creara estas tuplas.

Un saludo.