Diferenciar Bases de Datos del Sistema de Bases de Datos de Usuario
En este paso final, diferenciaremos explícitamente entre bases de datos del sistema y bases de datos de usuario basándonos en los resultados de la enumeración. Esta distinción es importante para priorizar sus próximos pasos en una prueba de penetración.
Como se observó en el paso anterior, bases de datos como information_schema, mysql y performance_schema son típicamente bases de datos a nivel de sistema. Forman parte de la funcionalidad principal del sistema de gestión de bases de datos y generalmente contienen metadatos, cuentas de usuario para el propio DBMS y estadísticas de rendimiento. Si bien a veces pueden ser explotadas, rara vez contienen los datos sensibles específicos de la aplicación que los atacantes suelen buscar.
Por otro lado, las bases de datos con nombres que no son nombres de sistema estándar (por ejemplo, acuart en nuestro ejemplo, o webapp_db, users, products, etc.) son generalmente bases de datos creadas por el usuario. Estas bases de datos almacenan los datos reales de la aplicación web, como:
- Credenciales de usuario (nombres de usuario, contraseñas hasheadas)
- Información del cliente
- Catálogos de productos
- Registros financieros
- Otros datos comerciales propietarios
Al realizar una prueba de penetración, después de enumerar las bases de datos, su enfoque debe cambiar a estas bases de datos creadas por el usuario. El siguiente paso lógico sería enumerar las tablas dentro de estas bases de datos de usuario, luego las columnas dentro de esas tablas y, finalmente, volcar los datos.
Al comprender esta distinción, puede dirigir eficientemente sus siguientes comandos de sqlmap para extraer la información más valiosa. Por ejemplo, para enumerar tablas en la base de datos acuart, usaría un comando como:
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --tables
Este comando demuestra cómo procedería a la siguiente etapa de extracción de datos, centrándose en la base de datos de usuario identificada.