OBS: CONTEM SPOILER !!!!! SE VC ESTIVER FAZENDO ESSE CTF E NAO QUISER SABER ONDE ESTAO AS FLAGS SEM NEM AO MENOS TENTAR, NAO TERMINE DE LER ESSE WRITEUP
alvo: 10.10.11.38
primeiro vamo começar fazendo um reconhecimento, apra procurar por portas aberta nesse ip.
vimos que tem dois serviços rodando, ssh na porta padrão e a porta 5000, vou tentar acessar essa porta 5000 na web
encontramos esse CIF Analyzer, não sei o que é, então fui dar uma pesquisada, parece que é um sistema que extrai informações de ligação de arquivos de informações cristalográficas (CIF), vou clicar em register para me registrar e conheçer melhor a aplicação
aqui vemos que da pra fazer um upload de arquivo CIF válido
cliquei em here para ele baixar esse example.cif para eu tentar entender melhor como funciona esse cif
analisei e mesmo assim não sai do lugar, mas vi que CIF significa Crystallographic Information Files, vou pesquisar se existe algum cve desse tipo de arquivo
depois de um bom tempo de pesquisa, encontrei algo interessante no CVE-2024-23346 que se refere à uma vulnerabilidade crítica no pymatgen, uma biblioteca Python de código aberto utilizada para análise de materiais.
aqui encontrei o seguinte exploit:
fui pesquisar mais sobre essa vulnerabilidade desta lib pymatgen e encontrei o seguinte exploit no github:
https://github.com/materialsproject/pymatgen/security/advisories/GHSA-vgv8-5cpj-qj2f
depois de um bom tempo de pesquisa, vou tentar montar meu exploit a partir do arquivo exemple.cif que encontramos lá e tentar explorar essa vuln
Quando vejo que posso fazer um upload de arquivos, logo penso em reverse shell. Fui pesquisar sobre execução de comandos de sistema em python.
Agora, voltando lá no arquivo que baixamos, contém o seguinte conteúdo:
De acordo com minha pesquisa, essa é a parte do exploit que executa comando:
_space_group_magn.transform_BNS_Pp_abc 'a,b,[d for d in ().class.mro[1].getattribute ( *[().class.mro[1]]+["sub" + "classes"]) () if d.name == "BuiltinImporter"][0].load_module ("os").system ("touch pwned");0,0,0'
vou tentar adaptar o arquivo exemple.cif e transformá-lo em um exploit.
Depois de muitas tentativas e erros, finalmente consegui montar meu exploit. Ficou da seguinte forma:
o intuito desse exploit eh ver se conseguimos um RCE (execução de código remoto) no servidor que processa arquivos .cif. O exploit injeta um comando de shell reverso que tenta se conectar de volta ao servidor do atacante (eu), fornecendo uma shell remota.
Deixei meu servidor escutando na porta que coloquei no exploit:
agora, vamos fazer o upload do meu arquivo exemple.cif (exploit).
arquivo upado, agora, precisamos executar ele. Para isso, irei clicar bo botao view para abrir(executar) o arquivo, e ver se tivemos respostas.
nao deu certo, mas depois de alguns ajustes consegui.
conseguimos executar comandos no sistema, encontramos uma vulnerabilidade RCE, estamos conectados no alvo atravez de um reverse shell. Agora vamo explorar diretorios e arquivos do servidor.
apos explorar os diretorios, o unico arquivo suspeito que encontrei foi um database.db
enviei esse arquivo para meu pc, para analisar.
acessei o db usando o sqlite3 e encontramos o seguinte:
users e passwords criptografados, provavelmente uma hash md5, vamos descobrir se nosso velho amigo crackstation.net da conta dessas.
apos algumas tentativas, so consegui quebrar esse hash que corresponde ao user "rosa":
vamos testar o login na aplicacao com esse user e senha que descobrimos
sabe mais onde podemos tentar logar com esse user? Exatamente.
Lembra quando usamos o nmap para procurar por portas e servicos abertos? A porta ssh esta open.
Dei enter e logo de cara veio aquela pergunta de yes or no, entao, esse user existe. Agora vamos colocar a hash que quebramos.
Estamos dentro. Conseguimos acessar o servidor da aplicacao via ssh.
Agora eh continuar explorando, logo de cara, dei um ls para ver oq tinha nesse dir e finalmente... Encontramos a primeira flag:
Precisamos encontrar agora a flag root.
Depois de muito tempo procurando e nao encontrar nada, resolvi usar o nmap mais uma vez e encontrei algumas portas abertas localmente. Entao fiz um tunelamento ssh para permitir meu acesso `a um servico que esta disponivel apenas localmente no host como se ele estivesse rodando em minha maquina:
Acessei na web e fui analisar.
era uma outra aplicacao rodando, que coletava dados e exibia em graficos. Entao iniciei minha pesquisa nessa aplicacao usando ferramentas e scripts de coleta de dados. Depois de ter pesquisado batante, usei o whatweb para analistar as tecnologias utilizadas.
Encontramos tecnologias utilizadas pelo servidor e suas versões. Vimos que o servidor http é python e a biblioteca é aiohttp/3.9.1. Então fui pedir ajuda ao pai dos burros (Google) para ver se tinha algum cve dessa lib do python.
Encontrei o seguinte cve:
https://github.com/z3rObyte/CVE-2024-23334-PoC
peguei o exploit desse cve, modifiquei de acordo com o meu cenário e executei.
consegui burlar o sistema e finalmente obtive a flag root.
























