Estoy practicando la realización de un pentest y me quedo atascado tratando de obtener una shell inversa interactiva desde una máquina interna a mi máquina atacante.
Esto es lo que he hecho hasta ahora:
Yo (atacante): 67.67.67.67 (algunos ip públicos)
Aplicación web (víctima): 68.68.68.68 (algunos ip públicos)
Máquina interna (servidor web): 10.1.1.80
Información del servidor web:
- Centos
- Apache
- PHP
- mysql
Encontré una vulnerabilidad de Inyección SQL en la aplicación web en 68.68.68.68 y al usar sqlmap con la opción --os-shell pude obtener un shell web a través de esta aplicación como usuario de apache. Luego ejecuté el comando 'ifconfig' que me dio una ip interna 10.1.1.80.
Mi objetivo es obtener una shell interactiva, así que he estado tratando de usar una shell inversa para hacer un túnel fuera de la red interna hacia mi máquina atacante pública. Creo que el problema con el que me estoy topando es el firewall.
Esto es lo que sé (usando el shell web):
-
No se pueden ver las reglas del firewall
-
Puedo cargar archivos a través del shell web, pero no puedo descargar o usar HTTP / HTTPS directamente desde la máquina interna a través del shell web, por lo que http shell no funcionaría.
-
También intenté ejecutar 'host google.com > /tmp/output.txt 'a través del shell web que no da salida y me lleva a creer que DNS tampoco está permitido.
-
También he intentado escuchar mi shell inversa en numerosos puertos populares, lo que me hace pensar que el firewall está realizando una inspección profunda de paquetes, por lo que no permitirá que se canalice a través de estos puertos.
-
Lo único que funcionó es que pude hacer ping a mi máquina atacante pública desde la máquina interna a través del webshell, lo que me hace pensar que podría canalizar una shell inversa usando ICMP. Encontré una herramienta llamada 'icmpsh' pero desafortunadamente el cliente que se ejecuta en la máquina víctima está escrito en C para Windows solamente. Pensé que usaría 'vino' para hacer esto en la caja interna de Linux, pero no puedo instalar ningún programa desde Internet y cargar vino a través del webshell provocó muchos errores de dependencia. Así que mi próximo plan era escribir mi propia shell inversa ICMP en python puro, pero usar SOCK_RAW requiere sudo.
Mi pregunta es: ¿crees que ICMP es la forma de canalizar un shell inverso o hay un protocolo diferente que podría estar usando o probando? ¿Quizás haya una versión portátil de vino o equivalente que pueda cargar?
PS: Esto es para la práctica, por lo que se puede configurar para que sea alcanzable