"Después del juego es antes del juego"
Sepp Herberger

sábado, 7 de mayo de 2016

Saltar los límites en shell restringidos inyectando comandos Unix

Muchos routers wifi y dispositivos similares tienen un Linux dentro al que podemos acceder por ssh o por telnet, pero una vez allí vemos que tienen un shell o un busybox restringido, que solo deja ejecutar algunos comandos Unix.

Buscando otras cosas sobre un router ADSL Nucomm llegué aquí en donde nos cuentan como saltarnos esa limitación. La idea es inyectar comandos shell de forma parecida a como se puede inyectar SQL en un formulario que no está bien protegido. Por ejemplo, si el comando pwd está permitido pero el comando cat no, podemos intentar:
# pwd & cat /etc/passwd
o bien
# pwd ; cat /etc/passwd
Con sorpresa veremos que ambos comandos se ejecutan (concurrentemente en el primer caso y en serie en el segundo, da igual), de tal forma que tenemos acceso al fichero /etc/passwd del router.

La causa seguramente es que el analizador sintáctico de esa shell limitada es tan cutre que solo comprueba el primer comando introducido para filtrarlo, dando paso al resto sin analizarlo.

Un truco interesante que me apunto para otros router, switch y sistemas embebidos parecidos.

Y con esta pildorita vuelvo a la madriguera, que el trabajo nos tiene muuuuuuy atareados.

No hay comentarios:

Publicar un comentario