[ Server Pwnage ]

Home / Wiki / [ Server Pwnage ]

[ Server Pwnage ]

> Campus Party > Campus Party 2016 - CPBR9 > [ Server Pwnage ]

Descrição: Seu objetivo é capturar a bandeira no Servidor da Empresa XYZ, disponível em http://pwnage.ctf-br.org. Caso consiga, submeta a flag para contato@ctf-br.org. É proibido utilizar técnicas que deixam o sistema indisponível, e o primeiro a submeter será o vencedor e ganhará a premiação: Curso da Clavis de Auditoria Web. Boa sorte a todos! 🙂

Server: pwnage.ctf-br.org

Acessamos a página da Empresa XYZ (http://pwnage.ctf-br.org/) e analisamos seu código-fonte:

ServerPwnage_xyzPage

Conteúdo do index.html:

Decepcionados? Não, pois sabemos que estas skillz web foram aplicadas para nos enganar. Além da imagem de plano de fundo (includes/layout.png) o site aparentemente não nos oferece mais nada.

Nenhum dos botões da página funcionavam (ex: A Empresa, Nossa Localização, Produtos, etc…), então perdemos algum tempo rodando ferramentas como Dir Buster e Nikto apenas para descobrir outros diretórios existentes na aplicação e encontramos a página de Produtos http://pwnage.ctf-br.org/produtos. Então a XYZ realmente vende autopeças! o/

Cada um dos produtos era acompanhado por um linkVer detalhes”, que informava o ID do referido produto (figura abaixo). Então resolvemos testar se esta aplicação era vulnerável a SQL Injection. Utilizamos o sqlmap para realizar os testes na URL a seguir: http://pwnage.ctf-br.org/produtos.php?id=1.

serverPwnage_xyzProdutos

O sqlmap informou que o parâmetro ID era vulnerável, então realizamos um dump completo da base TECLAND:

serverPwnage_teclandDB

Ainda utilizando o sqlmap, obtivemos acesso às páginas produtos.phpindex.php. Através da página produtos.php, ilustrada a seguir, aprendemos as credenciais utilizadas para conexão com o banco de dados e também como a consulta é construída pela aplicação.

serverPwnage_produtosPHP

A página index.php é mais interessante, pois descobrimos a existência da variável page que após algumas validações é incluída (linha 18), sabendo disto começamos a pesquisar pela vulnerabilidade de LFI (Local File Inclusion).

serverPwnage_indexPHP

Utilizando o parâmetro page, conseguimos explorar a falha de LFI e listar o conteúdo do arquivo passwd. Então descobrimos que o hash da senha do usuário bduser estava na tabela usuários, conforme observado a seguir:

Conteúdo da tabela usuarios:

serverPwnage_tblUsuarios

Quebramos o hash do usuário bduser e obtivemos nossa primeira shell no servidor, utilizando as credenciais bduser / ltVZBi1303 para nos conectar via SSH. o/!

OBS: inicialmente nós acessamos o servidor através da porta 22/tcp (SSH). Porém este não era o único serviço SSH disponível na máquina, conforme exibido na figura a seguir:

serverPwnage_nmapOut

Demoramos um bom algum tempo até perceber que na verdade havíamos conectado em um Honey Pot. O que estranhamos foi o hostname da máquina que era exibido como ‘servidor-xyz’ e não ‘ubuntu’-512mb-nyc2-01’, conforme informado inicialmente pelo sqlmap. O shell também parecia muito limitado e então percebemos que havíamos sido enganados! >:\ Listamos novamente o conteúdo do arquivo /etc/passwd e para nossa surpresa o bduser não estava mais lá:

serverPwnage_passwdHoneyFS

Nesta hora lembramos que existia outro serviço SSH em execução na porta 31337/tcp, que coincidentemente era o ID do usuário bduser no banco de dados (vide imagem da tabela usuarios, acima).

Quando conectamos utilizando as credenciais do bduser e porta 31337 fomos recebidos com o banner a seguir:

serverPwnage_bannerl337

A partir daí, começamos nossa jornada para escalar privilégios e obter acesso root no servidor do desafio. Tentamos alguns exploits e tivemos sucesso na tentativa de um exploit local para a versão 2.6.39 do kernel:

serverPwnage_searchSploit

Compilamos e executamos o exploit no servidor para obter nossa root shell! Sucesso! \o/

serverPwnage_localExploit

No diretório /root/ reparamos que havia um diretório muito suspeito dentro de Documents cujo nome era “” (três pontos, ou reticências). Neste diretório encontramos um arquivo .wav que possuía uma estranha mensagem.

Abrimos este arquivo no Audacity e primeiro revertemos o áudio (pois ele soava como se houvesse sido gravado de trás para frente) e em seguida removemos o ruído (remove white-noise).

Após ouvir dezenas de milhares de vezes e solicitar ajuda universitária para entender melhor o conteúdo da mensagem, pudemos definir que a mensagem dizia:

Então realizamos uma busca e encontramos o arquivo /etc/skynet/morgan.tar.gz.gpg. Utilizamos o comando gpg -d morgan.tar.gz.gpg -o morgan.tar.gz e informamos o telefone da companhia como senha (+55 49 31337-1337).

O arquivo obtido, morgan.tar.gz, não era realmente um arquivo gzip, conforme a saída do comando file:

serverPwnage_morganFile

Como se tratava de um arquivo KGB, nós precisamos instalar o KGB archiver para conseguir extrair o arquivo 0aee0202.elt e chegar mais perto da solução do desafio…

Começamos a descompactar os arquivos KGB, e reparamos que estávamos novamente lidando com uma mathroshka (:então foi para isto que o Day 1 nos preparou para isso :), que estava alternando entre diversos formatos de arquivos compactados, dentre eles: TAR, GZip, KGB, LHarc e RAR. Para solucionarmos este desafio criamos o script solve.sh:

Após a execução do solve.sh recuperamos um arquivo Flag.odt. Após 8h consecutivas em cima deste challenge, achávamos que havíamos encontrado a flag… #SQN!

Este arquivo nos parabenizava e possuía uma informação codificada que nos informava a senha para acessar o canal #tecland-Yeah:

serverPwnage_FlagOdt

A senha para acesso ao canal é 3p1c-fl46-15-h3r3.

Após acessarmos o canal com o comando /join #tecland-Yeah 3p1c-fl46-15-h3r3, encontramos uma das flags mais difíceis e desafiadoras desta CPBR9 \o/!

serverPwnage_flag

FLAG

7h3_k3y-w45_4ll-7h15_71m3-0n_7h3-r00m_n3x7-d00r.

CRIADO POR

RTFM – Red Team Freakin’ Maniacs

AGRADECIMENTOS

RTFM{ Away, ChOkO, G4mbler e Will } pela persistência na resolução de todos desafios. #gabaritamosFellas!

Todos os responsáveis pelo projeto CTF-BR pela criatividade na criação dos desafios e principalmente por participarem conosco desta CPBR9:
[*] Alisson “gnx_” – CTF-BR;
[*] Bruno “v3ntur4” – CTF-BR;
[*] Dark Shmya – ELT;
[*] Bernardomr – The Goonies;

Todos que organizaram e trabalharam na #CPBR9 mad propz para: Borelli, c0r1ng4 e Gh0St.

Todos patrocinadores, em especial à Clavis e ao Garoa Hacker Clube que descolaram uns prêmios muito legais mesmo!

A todos os velhos e novos membros que participaram local ou remotamente e a todos os membros do Dumont Hackerspace, LampiãoSec e todos os hackerspaces e times de CTF brasileiros ou internacionais!

ChOkO
ChOkO
Rafael "ChOkO" possui 10 anos de experiência como consultor de Segurança da Informação dos quais atuou em diversos projetos, dentre as principais atividades desempenhadas destacam-se: (i) análise de requisitos de segurança tecnológica de projetos, (ii) análise de riscos, (iii) análise de malware, (iv) gestão de vulnerabilidades, (v) planejamento e execução de análises de vulnerabilidades e testes de intrusão. É co-fundador do RTFM, onde obteve experiência participando de campeonatos nacionais e internacionais, bem como, organizando competições e palestrando pelo projeto CTF-BR sobre este modelo de competição.
Recent Posts