Ejecutando comandos arbitrarios a través de la entrada iptables-restore

4

Durante un pentest encontré una manera de agregar reglas de firewall iptables arbitrarias a un servidor. Estas reglas se aplican mediante el comando iptables-restore, y me he estado preguntando si hay alguna forma de ejecutar comandos manipulando la entrada.

Mi punto de partida es el siguiente, que dará como resultado la ayuda para iptables-restore :

printf '*filter\n--help\n' | iptables-restore --test

Así que sé que las opciones se ejecutan como se esperaba. Ahora, la página de manual menciona una opción --modprobe=command , que se describe como:

  

--modprobe = comando

     

Al agregar o insertar reglas en una cadena, use el comando para cargar los módulos necesarios (destinos, coincidencias de extensiones, etc.).

Genial, pensé, puedo ejecutar un comando proporcionando un objetivo inexistente y persuadiendo a iptables para que lo pruebe. He intentado lo siguiente (y sus variantes):

printf '*filter\n--modprobe=/some/command -A INPUT -j sometarget\n' | iptables-restore --test

Pero esto solo da un error sin intentar ejecutar /some/command :

  

iptables-restore v1.4.12: No se pudo cargar el destino 'sometarget': no existe tal archivo o directorio

También he intentado usar un módulo que existe pero no está cargado actualmente, pero el módulo se carga correctamente sin llamar al comando modprobe personalizado.

¡Cualquier sugerencia o sugerencia sobre dónde ir a continuación (o cualquier otra ruta que pueda investigar) sería muy apreciada!

Editar: --modprobe parece estar fuera de cuestión, por lo que la pregunta es: ¿existen otras posibles vulnerabilidades al pasar reglas maliciosas a iptables ?

    
pregunta morphics 17.05.2013 - 13:41
fuente

2 respuestas

2

La opción --modprobe es parte de la sintaxis de la línea de comandos del comando iptables-restore . No es algo que iptables-restore analice como entrada.

Entonces, si hay una regla sudo que le permite ejecutar iptables-restore con argumentos arbitrarios, puede pasar --modprobe=/bin/sh o sus variantes. Pero si todo lo que puede hacer es pasar la entrada a iptables-restore , entonces este método en particular no permite la ejecución de código arbitrario.

Tenga en cuenta que no afirmo que iptables-restore no permita la ejecución de código arbitrario de alguna otra manera. En particular, si puede controlar el entorno pero no las opciones de la línea de comando, export MODPROBE_OPTIONS='-d ~/malicious_modules' (en combinación con una regla que activa la carga de un módulo) parece prometedor, pero no lo he intentado. Y, por supuesto, la modificación de las reglas del cortafuegos puede causar todo tipo de estragos (a partir de DoSes triviales y a partir de ahí, a menudo los servicios restringidos a localhost serían peligrosos si se exponen a todo Internet).

    
respondido por el Gilles 17.05.2013 - 14:22
fuente
1

Dependiendo de los módulos disponibles , es posible que pueda utilizar xt_sysrq para un poco de diversión.

    
respondido por el Michael 17.05.2013 - 18:19
fuente

Lea otras preguntas en las etiquetas