SimpleCTF
Write-up oficial do SimpleCTF, com enumeração, exploração de CMS vulnerável, acesso SSH e Linux privesc.
Aviso: este conteúdo contém spoilers do desafio. Tente resolver a máquina antes de consultar o passo a passo completo.
A máquina começa com serviços expostos na rede. A enumeração inicial leva até uma aplicação web em um diretório não óbvio. A identificação da versão permite encontrar uma vulnerabilidade pública de SQL Injection associada ao CMS usado pela aplicação.
A exploração permite obter credenciais de um usuário local. Com essas credenciais, o acesso inicial é feito por SSH. A etapa final envolve enumeração local e abuso de uma permissão sudo mal configurada para obter uma shell privilegiada.
Categoria
Web / Linux
Dificuldade
Easy
Caminho
Enumeração → SQL Injection → SSH → Privesc
Conceitos
Nmap, Gobuster, CMS, CVE, hash, sudo, GTFOBins
Plataforma
TryHackMe
Sistema
Linux
Serviço principal
HTTP
Acesso inicial
SSH
A instância usada durante a resolução possuía o IP 10.10.219.187. Em ambientes como TryHackMe, esse IP muda conforme a instância iniciada.
Enumeration
Identificar serviços, versões, portas e diretórios relevantes.
Dirbusting
Encontrar caminhos que não aparecem diretamente na página inicial.
Exploit research
Relacionar aplicação e versão com CVEs e PoCs públicas.
SQL Injection
Explorar uma falha conhecida em CMS Made Simple.
SSH
Usar credenciais obtidas para acesso inicial.
Privilege escalation
Usar sudo -l, GTFOBins e um binário permitido para obter root.
nmap -sC -sV -Pn 10.10.219.187
A enumeração revela três portas relevantes:
21/tcp
FTP
80/tcp
HTTP
2222/tcp
SSH
A porta 80 exibe a página padrão do Apache2. Isso indica que a aplicação principal provavelmente não está na raiz do servidor web.
A porta 2222 mostra que o SSH está em uma porta diferente da padrão. Essa informação será importante depois que credenciais forem encontradas.
gobuster dir -u http://10.10.219.187 -w /usr/share/wordlists/dirb/common.txt
A enumeração web identifica caminhos interessantes, incluindo:
/simple
Diretório onde a aplicação principal está disponível.
/robots.txt
Arquivo útil para verificar caminhos sugeridos ou bloqueados.
Ao acessar /simple, a aplicação exibida é o CMS Made Simple. No rodapé da página, a versão identificada é 2.2.8.
A versão exata da aplicação é uma das informações mais importantes nessa etapa. Ela permite pesquisar vulnerabilidades conhecidas com muito mais precisão.
searchsploit "CMS Made Simple" searchsploit "CMS Made Simple" "2.2.8"
A versão encontrada é afetada por uma vulnerabilidade pública de SQL Injection associada ao CVE-2019-9053.
Essa falha permite extrair informações sensíveis do CMS, incluindo dados de usuário que podem ser aproveitados na próxima etapa.
Aplicação
CMS Made Simple
Versão
2.2.8
CVE
CVE-2019-9053
Tipo
SQL Injection
python3 exploit.py -h # Verifique: # - URL alvo # - parâmetros obrigatórios # - dependências # - suporte a cracking de hash # - formato da saída
A PoC permite obter dados de um usuário local. A credencial pode ser revelada abaixo.
▸ Mostrar credencial obtida_ □ ×
mitch:secret
Em muitos desafios, o exploit não entrega uma shell diretamente. Ele pode entregar hashes, salts, usuários, e-mails ou senhas. Esses dados ainda precisam ser reaproveitados em outro serviço.
▸ Mostrar comando de SSH_ □ ×
ssh -p 2222 mitch@10.10.219.187
Após o login, a flag de usuário pode ser lida no diretório do usuário.
whoami pwd ls -la cat user.txt
whoami id hostname uname -a ls -la /home
Ao listar os diretórios em /home, outro usuário pode ser identificado:
cd /home ls
sunbath
Em seguida, a verificação das permissões sudo mostra quais comandos o usuário atual pode executar com privilégios elevados.
sudo -l
Esse tipo de caso pode ser pesquisado no GTFOBins. O raciocínio é:
1. sudo -l mostra um binário permitido. 2. O binário é interativo. 3. Pesquise o binário no GTFOBins. 4. Procure por uso em contexto sudo. 5. Verifique se existe forma de chamar uma shell.
A técnica usada permite abrir uma shell a partir do editor executado com privilégios elevados.
sudo vim -c ':!/bin/sh'
Com a shell privilegiada aberta, a flag de root pode ser lida em /root.
whoami id cd /root cat root.txt
Quantos serviços estão rodando abaixo da porta 1000?
2
O que está rodando na porta mais alta?
ssh
Qual é o CVE utilizado contra a aplicação?
CVE-2019-9053
A que tipo de vulnerabilidade a aplicação é vulnerável?
SQL Injection
Qual é a senha obtida?
secret
Onde é possível logar com os dados obtidos?
ssh
Há outro usuário no diretório home?
sunbath
O que pode ser usado para obter um shell privilegiado?
vim
User flag
redacted
Root flag
redacted
A página inicial nem sempre é a aplicação
A raiz do servidor web mostrava apenas Apache2. O caminho relevante apareceu depois da enumeração de diretórios.
Versão exata muda tudo
Identificar CMS Made Simple 2.2.8 permitiu encontrar uma vulnerabilidade pública aplicável.
Exploit nem sempre dá shell
A SQL Injection levou a credenciais. O acesso inicial veio depois, via SSH.
Depois do foothold, começa outra enumeração
A privesc surgiu a partir de sudo -l, não da exploração web inicial.
GTFOBins ajuda a interpretar permissões perigosas
Um binário comum pode se tornar perigoso quando pode ser executado com privilégios elevados.
- GTFOBins: técnicas de abuso de binários Unix em contextos inseguros.
- ExploitDB / Searchsploit: pesquisa de PoCs públicas.
- TryHackMe SimpleCTF: sala original do desafio.
- CVE-2019-9053: SQL Injection em CMS Made Simple.