Serie de preguntas de la entrevista: Preguntas comunes de las pruebas de penetración-3

51. Además del atributo onerror de la etiqueta img, ¿existen otras formas de obtener la ruta del administrador?

src especifica un archivo de script remoto para obtener un referente

52. Además del atributo onerror de la etiqueta img, y el nombre del sufijo del atributo src debe terminar con .jpg, cómo obtener la ruta del administrador.

1) El servidor remoto modifica el archivo de configuración de apache y configura el archivo .jpg para que se analice en modo php. La aplicación AddType / x-httpd-php .jpg se analizará en modo php

53. ¿Por qué la autoridad del troyano aspx es mayor que asp?

Aspx utiliza tecnología .net. No es compatible de forma predeterminada en IIS, ASP es solo un lenguaje de secuencias de comandos. En el momento de la intrusión, el troyano asp generalmente tiene permisos de invitado ... El troyano APSX generalmente tiene permisos de usuario.

54. ¿Cómo omitir waf?

El método de conversión de mayúsculas y minúsculas interfiere con los caracteres / ! / Codificación de URL hexadecimales unicode base64 ascll múltiples parámetros

55. ¿Cómo escribir webshell en el servidor?

Varias vulnerabilidades de carga mysql tiene permisos de escritura y usa sentencias sql para escribir métodos put de shellhttp

56. Puertos comunes en las pruebas de penetración

a, categoría web (vulnerabilidad web / directorio sensible) puntales de vulnerabilidad de componentes comunes de terceros thinkphp jboss ganglia zabbix

80 web 80-89 web 8000-9090 web

b. Clase de base de datos (buscar contraseñas débiles)

1433 MSSQL 1521 Oracle 3306 MySQL 5432 PostgreSQL

c. Servicios especiales (no autorizados / ejecución de comandos / vulnerabilidades)

443 SSL Heart Dripping 873 Rsync no autorizado 5984 CouchDB  http: // xxx: 5984 / _utils /  6379 redis no autorizado 7001,7002 Contraseña débil predeterminada de WebLogic, secuencia inversa 9200, 9300 referencia de elasticsearch WooYun: Reproducir un servidor ElasticSearch vulnerabilidad de ejecución de comandos 11211 Memcache acceso no autorizado 27017, 27018 Mongodb acceso no autorizado 50000 Ejecución de comandos SAP 50070, 50030 hadoop puerto predeterminado acceso no autorizado

d. Tipos de puertos comunes (escanear contraseñas débiles / explosión de puertos)

21 ftp 22 SSH 23 Telnet 2601,2604 enrutamiento zebra, contraseña predeterminada zebra3389 escritorio remoto

TODOS, detalles del total del puerto

21 ftp 22 SSH 23 Telnet 80 web 80-89 web 161 SNMP 389 LDAP 443 SSL Heartbeat y algunas pruebas de vulnerabilidad web 445 SMB 512,513,514 Rexec 873 Rsync No autorizado 1025,111 NFS 1433 MSSQL 1521 Oracle: (Puerto iSqlPlus: 5560,7778 ) 2082/2083 Inicio de sesión en el sistema de administración de host cpanel (se usa más en el extranjero) 2222 DA Inicio de sesión en el sistema de administración de host virtual (se usa más en el extranjero) 2601,2604 Enrutamiento de cebra, contraseña predeterminada zebra3128 Puerto predeterminado del proxy de calamar, si no se establece una contraseña, es probable que sea directamente Intranet de itinerancia 3306 MySQL 3312/3311 Inicio de sesión del sistema de administración de host kangle 3389 Escritorio remoto 4440 Referencia de rundeck WooYun: tomó prestado un servicio de Sina para desplazarse con éxito por la intranet de Sina 5432 PostgreSQL 5900 vnc 5984 CouchDB  http: // xxx: 5984 / _utils / 6082 barniz consulte WooYun: Varnish HTTP acelerador CLI El acceso no autorizado puede conducir fácilmente a la manipulación directa del sitio web o ingresar a la intranet como un proxy 6379 redis no autorizado 7001,7002 Contraseña débil predeterminada de WebLogic, secuencia inversa 7778 Inicio de sesión del panel de control del host de Kloxo 8000-9090 son algunos Puertos web comunes, algunas operaciones y mantenimiento les gusta abrir el fondo de administración en estos puertos que no son 80 8080 tomcat / WDCP host management system, la contraseña débil predeterminada 8080,8089,9090 JBOSS 8083 Vestacp host management system (usado más en el extranjero) 8649 ganglia 8888 amh / LuManager puerto predeterminado del sistema de administración de host 9200, 9300 elasticsearch reference WooYun: Reproducir un servidor ElasticSearch vulnerabilidad de ejecución de comandos 10000 Virtualmin / Webmin server sistema de administración de host virtual 11211 Memcache acceso no autorizado 27017, 27018 Mongodb acceso no autorizado 28017 mongodb página de estadísticas 50000 Ejecución de comandos de SAP 50070, 50030 hadoop puerto predeterminado acceso no autorizado

Tres, convencido a un lado

  • Sepa qué vulnerabilidades
  • ¿Cuáles son los métodos de protección para la carga de archivos?
  • Qué puerto de escaneo, directorio
  • Cómo juzgar la inyección
  • Qué hacer si la inyección está protegida
  • ¿Alguna vez ha escrito sabotaje?
  • Qué puerto es 3306 1443 8080
  • Red informática de la capa física a la capa de aplicación xxxx
  • Tener experiencia en desarrollo de servicios web
  • Cómo escribir webshell en el servidor
  • ¿Has usado la plataforma xss?
  • Proceso de penetración del sitio web
  • mysql dos formas de escalada (udf ,?)
  • Métodos de cifrado habitualesxxx
  • Cómo proteger ddos
  • ¿Alguna vez ha capturado el paquete? ¿Escribirá las reglas de filtrado de Wireshark?
  • Que limpiar el tronco

Cuatro, protección de inyección SQL

1. Utilice una API segura

2. Escape de los caracteres especiales de entrada

3. Utilice listas blancas para estandarizar los métodos de verificación de entrada

4. Controle la entrada del cliente y no permita la entrada de caracteres especiales relacionados con la inyección SQL

5. Antes de enviar a la base de datos para la consulta SQL, el lado del servidor filtra, escapa, reemplaza y elimina los caracteres especiales.

6. Codificación estándar, juego de caracteres

5. Por qué las consultas parametrizadas pueden evitar la inyección de SQL

principio:

El uso del servidor de base de datos de consultas parametrizado no ejecutará el contenido del parámetro como parte del comando sql, aplicará el parámetro para ejecutarse después de que la base de datos complete la compilación del comando sql

En pocas palabras: la razón por la que la parametrización puede evitar la inyección es que la declaración es una declaración, el parámetro es un parámetro y el valor del parámetro no es parte de la declaración. La base de datos solo se ejecuta de acuerdo con la semántica de la declaración.

Seis, punto de inyección de encabezado SQL

UAREFERERCOOKIEIP

7. ¿Qué son las persianas? ¿Cómo cegar?

La inyección ciega significa que el servidor apaga el eco de error durante el ataque de inyección SQL Simplemente juzgamos si hay una forma de inyección y utilización de SQL basado en el cambio del contenido devuelto por el servidor. Hay dos métodos para la inyección a ciegas: uno es verificar si hay una inyección mediante si el contenido devuelto de la página es correcto (basado en booleanos). Una es juzgar si hay inyección (basada en el tiempo) en función de la diferencia en el tiempo de procesamiento de la declaración sql. Aquí, funciones como el punto de referencia y el sueño se pueden usar para causar el efecto de retardo, o se puede construir la tabla de búsqueda conjunta del producto cartesiano grande. Para lograr el propósito de la demora.

8. Principios y causas fundamentales de la inyección de bytes amplios

1. Principio de producción

En el caso de que la base de datos use un conjunto de caracteres amplio y la WEB no considere este problema, en la capa WEB, ya que 0XBF27 son dos caracteres, en PHP como Addlash y magic_quotes_gpc están activados, porque las comillas simples 0x27 se escaparán, entonces 0xbf27 se convertirá en 0xbf5c27, y cuando los datos ingresen a la base de datos, debido a que 0XBF5C es otro carácter, el símbolo \ escape será "comido" por el bf anterior, y la comilla simple se puede usar para cerrar la declaración.

2. Dónde codificar

3. La causa raíz

Character_set_client (juego de caracteres del cliente) y character_set_connection (juego de caracteres de la capa de conexión) son diferentes, o las funciones de conversión como iconv y mb_convert_encoding se utilizan incorrectamente.

4. Solución

El conjunto de caracteres utilizado por la base de datos unificada, la aplicación web y el sistema operativo debe establecerse en UTF-8 para evitar diferencias en el análisis. O los datos deben escaparse correctamente, como el uso de mysql_real_escape_string + mysql_set_charset.

5. Cómo usar solo la actualización en SQL

Primero entiende este SQL

ACTUALIZAR usuario SET contraseña = 'MD5 ($ contraseña)', página de inicio = '$ página de inicio' DONDE id = '$ id'

Si este SQL se modifica en la siguiente forma, se logra la inyección

a. Modifique el valor de la página de inicio a http://xxx.net ', userlevel =' 3

Entonces la declaración SQL se convierte en

ACTUALIZAR user SET password = 'mypass', homepage = ' http://xxx.net ', userlevel = '3' WHERE id = '$ id'

userlevel es el nivel de usuario

b. Modifique el valor de la contraseña a mypass) 'WHERE username =' admin '#

Entonces la declaración SQL se convierte en

ACTUALIZAR user SET password = 'MD5 (mypass)' WHERE username = 'admin' #) ', homepage =' $ homepage 'WHERE id =' $ id '

c. Después de modificar el valor de id a 'O username =' admin ', la declaración SQL se convierte

ACTUALIZAR usuario SET contraseña = 'MD5 ($ contraseña)', página de inicio = '$ página de inicio' DONDE id = '' O nombre de usuario = 'admin'

Nueve, se filtra cómo escribir shell SQL / cita única

Escritura de shell: autoridad raíz, GPC cerrado, conocer la función de archivo de salida de la ruta del archivo

http://127.0.0.1:81/sqli.php?id=1 into outfile 'C:\\wamp64\\www\\phpinfo.php' FIELDS TERMINATED BY '<?php phpinfo(); ?>'
http://127.0.0.1:81/sqli.php?id=-1 union select 1,0x3c3f70687020706870696e666f28293b203f3e,3,4 into outfile 'C:\\wamp64\\www\\phpinfo.php'

Inyección de bytes amplios

1. El método de reemplazar espacios

% 0a,% 0b,% a0, etc./**/ y otros caracteres de comentario <>

2. ¿Cuál es la diferencia entre la inyección del sitio web mysql por encima de 5.0 y por debajo de 5.0?

Por debajo de 5.0, no hay una tabla de sistema information_schema, y ​​no puede enumerar nombres, etc., solo nombres de cronómetros violentamente.

Por debajo de 5.0 es operación única multiusuario, y por encima de 5.0 es operación múltiple multiusuario.

Diez, XSS

1. Principio XSS

reflexivo

Los datos enviados por el usuario se pueden construir en código para ejecutar, con el fin de lograr ataques como el robo de información del usuario. Necesidad de inducir a los usuarios a "hacer clic" en un enlace malicioso para que el ataque tenga éxito.

Tipo de almacenamiento

El XSS almacenado "almacenará" los datos ingresados ​​por el usuario en el lado del servidor. Este XSS tiene una gran estabilidad.

Tipo DOM

El XSS que se forma modificando los nodos DOM de la página se denomina XSS basado en DOM.

2. La diferencia entre el tipo DOM y el tipo reflectante

XSS reflejado: un XSS que se activa mediante nuestra carga útil maliciosa construida al inducir a los usuarios a hacer clic. Detección reflectante de XSS. Cada vez que solicitamos un enlace con una carga útil, la página debe tener datos específicos mal formados. Tipo DOM: XSS formado modificando el nodo DOM de la página. El XSS basado en DOM es XSS generado por la operación DOM a través del código js, ​​por lo que es posible que ni siquiera obtengamos los datos mal formados correspondientes en la respuesta de la solicitud. La diferencia fundamental en mi opinión es la diferencia en los puntos de salida.

3. Pruebas automáticas o manuales de tipo DOM y XSS

Idea de prueba manual: busque funciones como document.write, asignación de innerHTML, asignación de outsideHTML, operación de window.location, escritura de javascript: post content, eval, setTimeout, setInterval, etc. para ejecutar directamente. Encuentre su variable, regrese al origen de la variable para observar si es controlable y si ha pasado una función de seguridad. Para las pruebas automatizadas, consulte el blog de Dao. La idea es comenzar con la entrada, observar el proceso de transmisión variable y finalmente verificar si hay una salida de función peligrosa y si hay una función segura en el medio. Pero esto requiere un analizador de JavaScript, de lo contrario, perderá parte del contenido introducido a través de la ejecución de js.

Al responder a esta pregunta, dado que la detección habitual de clientes se basa básicamente en las funciones de diferentes puntos funcionales, más la experiencia y la intuición, la detección de diferentes tipos de métodos de detección XSS en realidad no está demasiado estandarizada. Método de detección, por lo que la respuesta es mala. . .

4. Cómo encontrar rápidamente la ubicación XSS

5. Sugerencias sobre cómo reparar XSS

Verificación del punto de entrada: verifique la validez de los datos ingresados ​​por el usuario, use el filtro para filtrar caracteres sensibles o escape de la codificación, y verifique el formato para tipos específicos de datos. La verificación de los puntos de entrada se implementa mejor en el lado del servidor.

Verificación del punto de salida: cuando la variable se envía a la página HTML, el contenido de salida se codifica y se escapa, cuando la salida está en HTML, es HTMLEncoded, si la salida está en el script Javascript, es JavascriptEncoded. Las variables que usan JavascriptEncode se ponen entre comillas y se escapan caracteres peligrosos, y la parte de datos no puede escapar de las comillas y convertirse en parte del código. También puede usar un método más estricto, usando codificación hexadecimal para todos los caracteres excepto números y letras. Además, debe tenerse en cuenta que en el navegador, el análisis de HTML tendrá prioridad sobre el análisis de JavaScript, y el método de codificación debe considerarse claramente. Para diferentes puntos de salida, nuestros métodos de defensa de XSS pueden ser diferentes. Esto se puede analizar en un artículo posterior. Hacer un resumen.

Además, existen restricciones sobre el secuestro de cookies por parte de HTTPOnly.

6. Condiciones de producción del gusano XSS

En circunstancias normales, una es que la página que genera puntos XSS no pertenece a la propia página, y la página que genera interacción entre usuarios puede provocar la generación de XSS Worm.

Storage XSS no es necesario

11. CSRF

1. Principio de CSRF

CSRF es un ataque de falsificación de solicitud entre sitios, iniciado por el cliente, porque no confirmó si el usuario inició voluntariamente la operación de clave durante la ejecución de la operación de clave.

2. Defensa

Verificar Referente

Agregar token

3. Al comparar el token y el referente horizontalmente, ¿quién tiene el nivel de seguridad más alto?

El nivel de seguridad del token es más alto, porque ningún servidor puede obtener el referente, y si saltas de HTTPS a HTTP, no se enviará el referente. Y algunas versiones de FLASH pueden personalizar el referente. Pero para el token, asegúrese de que sea lo suficientemente aleatorio y no se pueda filtrar. (El principio de imprevisibilidad)

4. ¿Cuál es el ángulo de verificación del referente? Si es así, cómo eliminar el problema

Para la verificación del referente en el encabezado, uno es un referente vacío y el otro es filtrado de referer o detección imperfecta. Para eliminar este problema, las reglas regulares deben escribirse en la lista blanca verificada.

5. Con respecto al token, ¿a qué aspectos de la prueba del token se le prestará atención y a qué aspectos del token se probarán?

Citando una respuesta de un predecesor:

Ataques al token, uno es el ataque a sí mismo, la prueba de repetición es única, se analizan las reglas de cifrado, si el método de verificación es correcto, etc. El segundo es la adquisición del mismo en combinación con vulnerabilidades de fuga de información, combinado con el lanzamiento de ataques combinados. Es posible la fuga de información Es caché, registro, obtención, y es posible que muchos inicios de sesión que usan saltos entre sitios dependan de tokens. Existe una vulnerabilidad de salto y sitios cruzados reflectantes que se pueden combinar para secuestrar el inicio de sesión. Además, también se puede combinar con otros servicios para describir el token. ¿Cómo se pueden eludir la seguridad y el diseño deficiente, como agarrar negocios de sobres rojos?

11. SSRF

SSRF (Falsificación de solicitudes del lado del servidor: Falsificación de solicitudes del lado del servidor) es una laguna de seguridad construida por un atacante para formar una solicitud iniciada por el servidor. En general, el objetivo de un ataque SSRF es un sistema interno al que no se puede acceder desde la red externa. (Debido a que es iniciado por el servidor, puede solicitar un sistema interno conectado a él pero aislado de la red externa)

La razón de la formación de SSRF se debe principalmente a que el servidor proporciona la función de obtener datos de otras aplicaciones del servidor y no filtra ni restringe la dirección de destino. Por ejemplo, obtenga el contenido de texto de la página web de la dirección URL especificada, cargue la imagen en la dirección especificada, descargue, etc.

1. Seguimiento

Método de verificación de vulnerabilidades de la SSRF:

1) Debido a que la vulnerabilidad SSRF es una vulnerabilidad de seguridad que permite al servidor enviar una solicitud, podemos analizar si la solicitud enviada es enviada por el servidor capturando el paquete para determinar si existe una vulnerabilidad SSRF.

2) Busque la dirección del recurso al que se accede en el código fuente de la página. Si el tipo de dirección del recurso es  www.baidu.com/xxx.php?image= (dirección), puede haber una vulnerabilidad SSRF 4 [1]

2. La causa de la omisión de la defensa contra vulnerabilidades de la SSRF

Causa: el servidor simulado solicita otros recursos del servidor sin verificación de legalidad. Utilización: construya una IP de intranet maliciosa para la detección o utilice otros protocolos compatibles para atacar otros servicios. Defensa: prohíbe la redirección, restringe el protocolo, restringe la red interna y externa, restricción de URL. Omitir: use diferentes protocolos, omita para IP, formato de IP, agregue otros caracteres, @ y similares para URL y URL maliciosas. 301 jump + dns rebindding.

12. Cargar

1. El principio de vulnerabilidad de carga de archivos

Debido al control insuficiente del control del programador sobre la parte de carga de archivos del usuario o defectos de procesamiento, el usuario puede eludir su propia autoridad para cargar archivos de script dinámicos ejecutables al servidor.

2. Métodos comunes de omisión de carga

Verificación de js de front-end: deshabilite el paquete de cambio js / burp

Caso

Sufijo doble

Filtro bypass pphphp-> php

3. Protección

El directorio de carga de archivos está configurado como no ejecutable

Utilice la lista blanca para determinar el tipo de carga de archivos

Vuelva a escribir el nombre del archivo y la ruta con números aleatorios

4. ¿Cuál es el punto de revisar los elementos del punto de carga?

Las restricciones sobre los tipos de archivos de carga de algunos sitios se implementan en la interfaz. En este momento, simplemente aumente el tipo de carga para romper las restricciones.

13. El archivo contiene

1. Principio

Introduzca un script o código que el usuario pueda controlar y deje que el servidor ejecute funciones como include () para importar los archivos que deben incluirse mediante variables dinámicas;

El usuario puede controlar la variable dinámica.

2. La función que hace que el archivo contenga

PHP: include (), include_once (), require (), re-quire_once (), fopen (), readfile (),… JSP / Servlet: ava.io.File (), java.io.Fil-eReader () ,… ASP: incluir archivo, incluir virtual,

3. El archivo local contiene

Las vulnerabilidades que pueden abrir y contener archivos locales se denominan vulnerabilidades de inclusión de archivos locales.

14. Escaneo de lógica faltante

1. Lagunas lógicas comunes en la industria financiera

El enfoque principal en los servicios financieros es la manipulación de datos (que involucra datos financieros o datos de juicio para algunas empresas), vellón causado por condiciones competitivas o diseño inadecuado, fuga de información de transacciones / pedidos y visualización no autorizada de cuentas de otras personas u operaciones maliciosas , Se omite la transacción o el paso comercial.

15. Hombre en el medio ataque

Un ataque man-in-the-middle es un (falta) ataque de autenticación mutua; una vulnerabilidad causada por la falta de autenticación mutua entre el cliente y el servidor durante el protocolo de enlace SSL.

Las soluciones para defenderse de los ataques man-in-the-middle generalmente se basan en las siguientes tecnologías

1. La infraestructura de clave pública PKI utiliza el mecanismo de autenticación mutua PKI, el cliente verifica el servidor y el servidor verifica al cliente; en los dos ejemplos anteriores, solo se verifica el servidor, lo que crea una laguna en el enlace de protocolo de enlace SSL, y si se usa la autenticación mutua Si es así, la autenticación mutua básicamente puede ser más fuerte

2. Prueba de retraso

Las complicadas funciones de hash criptográficas se utilizan para que los cálculos provoquen un retraso de decenas de segundos; si ambas partes suelen tardar 20 segundos en calcular, y toda la comunicación tarda 60 segundos en calcularse para comunicarse, esto puede indicar la existencia de un intermediario externo.

3. Utilice otras formas de intercambio de claves

Suplantación de ARP

principio

Cada host tiene una tabla de caché ARP La tabla de caché registra la correspondencia entre la dirección IP y la dirección MAC, y la transmisión de datos LAN se basa en la dirección MAC. Existe un defecto en el mecanismo de la tabla de caché ARP, es decir, cuando el host solicitante recibe el paquete de respuesta ARP, no verifica si ha enviado el paquete de solicitud ARP al otro host y corresponde directamente la dirección IP y la dirección MAC en el paquete devuelto. La relación se almacena en la tabla de caché ARP, si la IP correspondiente original es la misma, se reemplazará la original. De esta forma, el atacante tiene la posibilidad de espiar los datos transmitidos por el host.

Proteccion

1. La vinculación de la dirección IP y MAC de la puerta de enlace en el host es estática (el valor predeterminado es dinámico), comando: arp -s puerta de enlace IP puerta de enlace MAC

2. Vincular la dirección IP y MAC del host en la puerta de enlace

3. Utilice el cortafuegos ARP

Supongo que te gusta

Origin blog.csdn.net/GUDUzhongliang/article/details/108659532
Recomendado
Clasificación