web • SimpleCTF • official write-up

SimpleCTF

Write-up oficial do SimpleCTF, com enumeração, exploração de CMS vulnerável, acesso SSH e Linux privesc.

by rideckszz • 22/05/2026
Simple CTF • TryHackMe • 2026

C:\>write-up oficial_ □ ×

SimpleCTF

O SimpleCTF é uma máquina introdutória focada em enumeração, exploração de uma aplicação web vulnerável, acesso via SSH e Linux privesc.

Este write-up mostra o caminho completo de resolução, mantendo as flags ocultas.

Aviso: este conteúdo contém spoilers do desafio. Tente resolver a máquina antes de consultar o passo a passo completo.

Visão geral

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

Informações da máquina

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.

Habilidades praticadas

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.

1. Enumeração inicial
C:\>nmap_ □ ×

Mapeando portas e serviços

O primeiro passo é identificar quais serviços estão expostos.

nmap_ □ ×
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.

2. Enumeração web
C:\>web_ □ ×

Procurando diretórios

Como a raiz do servidor mostra apenas a página padrão do Apache, o próximo passo é buscar diretórios e arquivos ocultos.

gobuster_ □ ×
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.

3. Pesquisa de vulnerabilidade
C:\>cve_ □ ×

CMS Made Simple 2.2.8

Com o nome da aplicação e a versão, a pesquisa por vulnerabilidades públicas se torna direta.

pesquisa_ □ ×
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

4. Exploração
C:\>exploit_ □ ×

Extraindo credenciais

A exploração foi feita com uma PoC pública para o CVE-2019-9053.

Antes de executar uma PoC, leia os parâmetros, dependências e o formato de saída esperado.

leitura da PoC_ □ ×
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_ □ ×
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.

5. Acesso inicial
C:\>ssh_ □ ×

Entrando na máquina

Com a credencial encontrada, o próximo passo é testar acesso via SSH.

A enumeração inicial mostrou que o SSH está rodando na porta 2222.

▸ Mostrar comando de SSH_ □ ×
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.

user flag_ □ ×
whoami
pwd
ls -la
cat user.txt
6. Enumeração local
C:\>linux_ □ ×

Depois do foothold, enumere de novo

Conseguir SSH não encerra o desafio. Agora a superfície passa a ser o sistema local.

primeiros comandos_ □ ×
whoami
id
hostname
uname -a
ls -la /home

Ao listar os diretórios em /home, outro usuário pode ser identificado:

/home_ □ ×
cd /home
ls
usuário encontrado_ □ ×
sunbath

Em seguida, a verificação das permissões sudo mostra quais comandos o usuário atual pode executar com privilégios elevados.

sudo_ □ ×
sudo -l
7. Privilege escalation
C:\>sudo_ □ ×

Permissão perigosa

A saída de sudo -l mostra que o usuário pode executar o editor vim com sudo.

Editores interativos podem possuir recursos para chamar comandos do sistema. Em um contexto de sudo, isso pode ser usado para obter uma shell privilegiada.

Esse tipo de caso pode ser pesquisado no GTFOBins. O raciocínio é:

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.

privesc_ □ ×
sudo vim -c ':!/bin/sh'

Com a shell privilegiada aberta, a flag de root pode ser lida em /root.

root flag_ □ ×
whoami
id
cd /root
cat root.txt
8. Perguntas do desafio
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

9. Flags

User flag

redacted

Root flag

redacted

10. Lições aprendidas
1

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.

2

Versão exata muda tudo

Identificar CMS Made Simple 2.2.8 permitiu encontrar uma vulnerabilidade pública aplicável.

3

Exploit nem sempre dá shell

A SQL Injection levou a credenciais. O acesso inicial veio depois, via SSH.

4

Depois do foothold, começa outra enumeração

A privesc surgiu a partir de sudo -l, não da exploração web inicial.

5

GTFOBins ajuda a interpretar permissões perigosas

Um binário comum pode se tornar perigoso quando pode ser executado com privilégios elevados.

Referências