Apuntes Ciberseguridad (Cibaism)
HTBGitHubLinkedInNotion (Writeups)
  • Welcome to My Digital Garden
  • About me
  • Hacking notes (Personal)
    • Tratamiento TTY
    • Hacking Web Tecniques
      • File Inclusion
    • Linux Privilage Escalation
    • Arreglar bloodhound
  • Hacking Notes (Learning Path)
    • (HTB) Penetration Tester
      • Getting Started
        • Common Terms
          • Tipos de Shell
          • Puertos importantes
          • OWASP Top 10
        • Service Scanning
          • Nmap
          • Attacking Network Services
            • Captura de banners
            • FTP
            • SMB
            • SNMP
        • Web Enumeration
        • Public exploits
          • Encontrar exploits públicos
          • Introducción a Metasploit
        • Types of Shells
          • Reverse Shell
          • Bind Shell
          • Web Shell
        • Privilage escalation
        • Transferring Files
      • Footprinting
        • Infrastructura Based Enumeration
          • Domain Information
          • Cloud Resources
          • Staff
        • Host Based Enumeration
          • FTP
          • SMB
          • NFS
          • DNS
          • SMTP
          • IMAP / POP3
          • SNMP
          • MySQL
          • MSSQL
          • Oracle TNS
          • IPMI
          • Protocolos de administración remota de Linux
          • Protocolos de administración remota de Windows
      • Introduction to Active Directory Enumeration & Attacks
        • Tools of the Trade
        • Initial enumeration
          • External Recon and Enumeration Principles
          • Initial Enumeration of the Domain
        • Sniffing out a Foothold
          • LLMNR/NBT-NS Poisoning - from Linux
          • LLMNR/NBT-NS Poisoning - from Windows
        • Sighting In, Hunting For A User
          • Password Spraying Overview
          • Enumerating & Retrieving Password Policies
          • Password Spraying - Making a Target User List
        • Spray Responsibly
          • Internal Password Spraying - from Linux
      • File Inclusion
        • File Disclousure
          • Local File Inclusion (LFI)
          • Basic Bypasses
          • PHP Filters
        • Remote Code Execution
          • PHP Wrappers
    • (CRTA) Red Team Analyst
      • (CRTA) Red Team Analyst - Lab
    • (eJPT) Junior Penetration Tester
      • Assessment Methodologies
        • Assessment Methodologies: Footprinting & Scanning
          • Windows Recon: Nmap Host Discovery
          • Scan the Server 1
          • Windows Recon: SMB Nmap Scripts
        • Assessment Methodologies: Enumeration
          • Importing Nmap Scan Results Into MSF
          • T1046 : Network Service Scanning
          • FTP Enumeration
          • Samba Recon: Basics
          • Apache Enumeration
          • MySQL Enumeration
          • SSH Login
          • Postfix Recon: Basics
        • Assessment Methodologies: Vulnerability Assessment
          • Windows: IIS Server DAVTest
          • Shellshock
          • Web App Vulnerability Scanning With WMAP
      • Host & Network Penetration Testing
        • Host & Network Penetration Testing: System/Host Based Attacks
          • Windows
            • Windows: IIS Server: WebDav Metasploit
            • Windows: SMB Server PSexec
            • Windows: Insecure RDP Service
            • WinRM: Exploitation with Metasploit
            • UAC Bypass: UACMe
            • Privilege Escalation: Impersonate
            • Unattended Installation
            • Windows: Meterpreter: Kiwi Extension
          • Linux
            • ProFTP Recon: Basics
            • Samba Recon: Dictionary Attack
            • Cron Jobs Gone Wild II
            • Exploiting Setuid Programs
            • Password Cracker: Linux
        • Host & Network Penetration Testing: Network-Based Attacks
          • NetBIOS Hacking
          • SNMP Analysis
          • DNS & SMB Relay Attack
        • Host & Network Penetration Testing: The Metasploit Framework (MSF)
          • Windows: Java Web Server
          • Windows: HTTP File Server
          • Vulnerable FTP Server
          • Vulnerable File Sharing Service
          • Vulnerable SSH server
          • Vulnerable SMTP Server
          • Meterpreter Basics
          • Upgrading Command Shells To Meterpreter Shells
          • Windows Post Exploitation Modules
          • UAC Bypass: Memory Injection (Metasploit)
          • Exploiting SMB With PsExec
          • Windows: Enabling Remote Desktop
          • Clearing Windows Event Logs
          • Pivoting
  • Blue team notes
    • Digital Forensics
      • Malware Analysis with VirusTotal
      • Wireshark
    • (Falcon) CrowdStrike
      • FALCON 104: Getting Started with the Endpoint Security Module
      • FALCON 106: Customizing Dashboards in Falcon
      • FALCON 180: Falcon Forensics Fundamentals
  • Programming
    • Powershell
Powered by GitBook
On this page
  • Clientes MySQL
  • Bases de datos MySQL
  • Comandos de MySQL
  • Cofiguración predeterminada
  • Configuración predeterminada
  • Configuraciones peligrosas
  • Footprinting del servicio
  • Escaneo del servidor MySQL
  • Interacción con el servidor MySQL
  1. Hacking Notes (Learning Path)
  2. (HTB) Penetration Tester
  3. Footprinting
  4. Host Based Enumeration

MySQL

PreviousSNMPNextMSSQL

Last updated 2 months ago

MySQLEs un sistema de gestión de bases de datos relacionales SQL de código abierto, desarrollado y respaldado por Oracle. Una base de datos es simplemente una colección estructurada de datos, organizada para facilitar su uso y recuperación. El sistema de base de datos puede procesar rápidamente grandes cantidades de datos con alto rendimiento. Dentro de la base de datos, el almacenamiento de datos se realiza de forma que ocupe el mínimo espacio posible. La base de datos se controla mediante el . MySQL funciona según el estándar client-server principley consta de un servidor MySQL y uno o más clientes MySQL. El servidor MySQL es el sistema de gestión de bases de datos en sí. Se encarga del almacenamiento y la distribución de los datos. Los datos se almacenan en tablas con diferentes columnas, filas y tipos de datos. Estas bases de datos suelen almacenarse en un único archivo con la extensión .sql, por ejemplo, wordpress.sql.

Clientes MySQL

Los clientes MySQL pueden recuperar y editar los datos mediante consultas estructuradas al motor de base de datos. La inserción, eliminación, modificación y recuperación de datos se realiza mediante el lenguaje de bases de datos SQL. Por lo tanto, MySQL es ideal para gestionar diversas bases de datos a las que los clientes pueden enviar múltiples consultas simultáneamente. Según el uso de la base de datos, se puede acceder a ella a través de una red interna o de la red pública de Internet.

Uno de los mejores ejemplos del uso de bases de datos es el CMS WordPress. WordPress almacena todas las publicaciones, nombres de usuario y contraseñas creadas en su propia base de datos, a la que solo se puede acceder desde el host local. Sin embargo, como se explica con más detalle en el módulo , también existen estructuras de bases de datos distribuidas en varios servidores.

Bases de datos MySQL

MySQL es ideal para aplicaciones como [ dynamic websitesnombre del servidor], donde una sintaxis eficiente y una alta velocidad de respuesta son esenciales. Suele combinarse con Linux, PHP y un servidor web Apache, y también se conoce en esta combinación como (Linux, Apache, MySQL, PHP), o al usar Nginx, como . En un alojamiento web con base de datos MySQL, sirve como instancia central donde se almacena el contenido requerido por los scripts PHP. Entre estos se encuentran:

Encabezados

Textos

Metaetiquetas

Formularios

Clientes

Nombres de usuario

Administradores

Moderadores

Direcciones de correo electrónico

Información del usuario

Permisos

Contraseñas

Enlaces externos/internos

Enlaces a archivos

Contenidos específicos

Valores

MySQL puede almacenar datos confidenciales, como contraseñas, en formato de texto simple; sin embargo, generalmente los scripts PHP los cifran de antemano mediante métodos seguros como .

Comandos de MySQL

Una base de datos MySQL traduce internamente los comandos a código ejecutable y realiza las acciones solicitadas. La aplicación web informa al usuario si se produce un error durante el procesamiento, que SQL injectionspuede ser provocado por diversas causas. A menudo, estas descripciones de error contienen información importante y confirman, entre otras cosas, que la aplicación web interactúa con la base de datos de forma distinta a la prevista por los desarrolladores.

La aplicación web envía la información generada al cliente si los datos se procesan correctamente. Esta información puede consistir en extractos de datos de una tabla o registros necesarios para su posterior procesamiento con inicios de sesión, funciones de búsqueda, etc. Los comandos SQL permiten mostrar, modificar, agregar o eliminar filas en las tablas. Además, SQL permite cambiar la estructura de las tablas, crear o eliminar relaciones e índices, y administrar usuarios.

MariaDB, que suele asociarse con MySQL, es una bifurcación del código MySQL original. Esto se debe a que el desarrollador principal de MySQL dejó la empresa MySQL ABtras su adquisición Oracley desarrolló otro sistema de gestión de bases de datos SQL de código abierto basado en el código fuente de MySQL, al que llamó MariaDB.

Cofiguración predeterminada

La gestión de bases de datos SQL y sus configuraciones es un tema muy amplio. Es tan complejo que profesionales como [nombre del departamento] database administratorse dedican prácticamente exclusivamente a bases de datos. Estas estructuras se expanden rápidamente y su planificación puede complicarse. Entre otras cosas, la gestión de bases de datos es una competencia fundamental para [nombre del departamento], software developerspero también [ information security analystsnombre del departamento]. Abordar este tema en su totalidad excedería el alcance de este módulo. Por lo tanto, recomendamos configurar una instancia de MySQL/MariaDB para experimentar con las distintas configuraciones y comprender mejor la funcionalidad y las opciones de configuración disponibles. Veamos la configuración predeterminada de MySQL.

Configuración predeterminada

sudo apt install mysql-server -y
cat /etc/mysql/mysql.conf.d/mysqld.cnf | grep -v "#" | sed -r '/^\s*$/d'

Configuraciones peligrosas

Ajustes

Descripción

user

Establece bajo qué usuario se ejecutará el servicio MySQL.

password

Establece la contraseña para el usuario MySQL.

admin_address

La dirección IP en la que se escucharán las conexiones TCP/IP en la interfaz de red administrativa.

debug

Esta variable indica la configuración de depuración actual

sql_warnings

Esta variable controla si las instrucciones INSERT de una sola fila producen una cadena de información si ocurren advertencias.

secure_file_priv

Esta variable se utiliza para limitar el efecto de las operaciones de importación y exportación de datos.

Las configuraciones user, passwordy admin_addressson importantes para la seguridad, ya que las entradas se crean en texto plano. Con frecuencia, los permisos del archivo de configuración del servidor MySQL no se asignan correctamente. Si encontramos otra forma de leer archivos, o incluso un shell, podemos ver el archivo, el nombre de usuario y la contraseña del servidor MySQL. Supongamos que no existen otras medidas de seguridad para evitar el acceso no autorizado. En ese caso, se puede ver e incluso editar toda la base de datos, así como la información de los clientes, las direcciones de correo electrónico, las contraseñas y los datos personales.

Footprinting del servicio

Hay muchas razones por las que se puede acceder a un servidor MySQL desde una red externa. Sin embargo, no es la mejor práctica, y siempre podemos encontrar bases de datos accesibles. A menudo, estas configuraciones eran temporales, pero los administradores las olvidaban. Esta configuración del servidor también podría utilizarse como solución temporal ante un problema técnico. Normalmente, el servidor MySQL se ejecuta en [nombre del puerto] TCP port 3306y podemos escanear este puerto con [nombre del puerto] Nmappara obtener información más detallada.

Escaneo del servidor MySQL

sudo nmap <ip> -sV -sC -p3306 --script mysql*

Como en todos nuestros análisis, debemos ser cuidadosos con los resultados y confirmar manualmente la información obtenida, ya que parte de ella podría resultar un falso positivo. El análisis anterior es un excelente ejemplo de ello, ya que sabemos con certeza que el servidor MySQL de destino no usa una contraseña vacía para el usuario root, sino una contraseña fija. Podemos probar esto con el siguiente comando:

Interacción con el servidor MySQL

mysql -u root -h <ip>

Por ejemplo, si usamos una contraseña que hemos adivinado o encontrado a través de nuestra investigación, podremos iniciar sesión en el servidor MySQL y ejecutar algunos comandos.

mysql -u root -p<password> -h <ip>
show databases;
select version();
use <base de datos>;
show tables;
select <columna>,<columna> from <tabla>;

También es information schemauna base de datos que contiene metadatos. Sin embargo, estos metadatos se obtienen principalmente de la system schemabase de datos. La razón de su existencia es el estándar ANSI/ISO establecido. System schemaEs un catálogo de sistema de Microsoft para servidores SQL y contiene mucha más información que el information schema.

Algunos de los comandos que debemos recordar y anotar para trabajar con bases de datos MySQL se describen a continuación en la tabla.

Dominio

Descripción

mysql -u <user> -p<password> -h <IP address>

Conéctese al servidor MySQL. No debe haber ningún espacio entre el indicador '-p' y la contraseña.

show databases;

Mostrar todas las bases de datos.

use <database>;

Seleccione una de las bases de datos existentes.

show tables;

Mostrar todas las tablas disponibles en la base de datos seleccionada.

show columns from <table>;

Mostrar todas las columnas de la tabla seleccionada.

select * from <table>;

Mostrar todo en la tabla deseada.

select * from <table> where <column> = "<string>";

Busca lo necesario stringen la tabla deseada.

Muchos aspectos de MySQL pueden estar mal configurados. Podemos consultar con más detalle la para determinar qué opciones se pueden configurar en el servidor. Las principales opciones relevantes para la seguridad son:

La configuración debugy sql_warningsproporciona información detallada en caso de errores, esencial para el administrador, pero que no debe ser vista por otros. Esta información suele contener contenido sensible, que podría detectarse mediante ensayo y error para identificar posibles ataques. Estos mensajes de error suelen mostrarse directamente en las aplicaciones web. Por consiguiente, las inyecciones SQL podrían manipularse incluso para que el servidor MySQL ejecute comandos del sistema. Esto se explica y se muestra en el módulo y .

Si analizamos las bases de datos existentes, veremos que ya existen varias. Las bases de datos más importantes para el servidor MySQL son system schema( sys) y information schema( information_schema). El esquema del sistema contiene tablas, información y metadatos necesarios para la gestión. Puede encontrar más información sobre esta base de datos en el de MySQL.

Necesitamos saber cómo interactuar con diferentes bases de datos. Por lo tanto, recomendamos instalar y configurar un servidor MySQL en una de nuestras máquinas virtuales para experimentar. El manual de referencia también incluye una sección ampliamente abordada , que describe las mejores prácticas para proteger servidores MySQL. Deberíamos usarla al configurar nuestro servidor MySQL para comprender mejor por qué algo podría no funcionar.

lenguaje de bases de datos SQL
Introducción a las Aplicaciones Web
LAMP
LEMP
One-Way-Encryption
referencia de MySQL
Fundamentos de la inyección SQL
Fundamentos de SQLMap
manual de referencia
sobre problemas de seguridad,