~$ ls -la ~/WriteUps/machines/

CTF & Lab Writeups

Documentações exaustivas de comprometimento de máquinas (root/system). Cadeia completa de ataque, enumeração, weaponization, exploração e escalação de privilégios.

7

Máquinas Documentadas

7

100% Pwned / Rooted

2

Plataformas

Cyber-News

PWNEDDifícil
LinuxHacking Club

O comprometimento total foi alcançado através de uma cadeia de seis vulnerabilidades encadeadas em uma plataforma de notícias de cibersegurança com múltiplos subdomínios. O ataque iniciou com **BOPLA** (Broken Object Property Level Authorization) no endpoint `/api/articles`, que expunha o objeto `user` completo incluindo hash de senha e flag `isAdmin`. Combinado com **Mass Assignment**, foi possível criar uma conta com privilégios administrativos. Autenticado como admin no blog, **fuzzing de API** revelou a rota `/configs` com o subdomínio do backoffice. No backoffice, **Source Map exposto** revelou rotas internas, e uma falha de **API Versioning (BOLA)** (`v2` → `v1`) expôs a lista de usuários. O hash do usuário `manager` foi quebrado, e um **IDOR** no endpoint de atualização de senha permitiu resetar a senha do `admin`. Com acesso admin ao backoffice, foi possível editar a configuração do Nginx, habilitando acesso à intranet PHP e um servidor WebDAV. O upload de uma webshell PHP via WebDAV resultou em **RCE** no container da intranet. Por fim, a webshell foi usada como proxy para interagir com a aplicação interna **Appmon**, que possuía um sistema de webhooks vulnerável a **SSRF via docker.sock**, permitindo criar um container privilegiado montando o filesystem do host e capturar a flag root.

BOPLAMass AssignmentAPI Versioning (BOLA)IDORSource Map Leak+5
Abrir Relatório Completo

Retro

PWNEDMédio
LinuxHacking Club

O comprometimento total foi alcançado através de uma cadeia de quatro vulnerabilidades encadeadas em uma plataforma de jogos arcade (Django). O ataque iniciou com **Broken Access Control** no fluxo de autenticação OTP — o token JWT era gerado antes da validação do código, permitindo acesso direto ao `/dashboard` sem completar a autenticação. Autenticado, uma vulnerabilidade de **IDOR** no endpoint `/api/profile/{id}` possibilitou enumerar perfis de outros usuários e extrair o hash Django do usuário `ronin@games.com`, quebrado via **hashcat**. Com o acesso ao plano premium, uma funcionalidade de chatbot expôs uma vulnerabilidade de **Command Injection** via backticks, resultando em uma reverse shell no servidor. A escalação de privilégios foi obtida através de uma lógica insegura em `verification_rom.py`: o script executado como `root` criava um diretório de ROMs caso não existisse e executava arquivos `.smc` nele — permitindo substituir o diretório por um controlável e injetar um payload que habilitou o SUID no `/bin/bash`.

API FuzzingIDORBroken Access ControlHash CrackingCommand Injection+1
Abrir Relatório Completo

Poisoning

PWNEDMédio
LinuxHacking Club

O comprometimento total foi alcançado através de uma cadeia de exploração clássica que iniciou com uma vulnerabilidade de **Local File Inclusion (LFI)** no parâmetro `page` de uma aplicação PHP. O LFI permitiu a leitura do `access.log` do Apache, e como o PHP interpreta qualquer código embutido nos arquivos incluídos, a técnica de **Log Poisoning** foi utilizada para injetar um payload PHP no campo `User-Agent` via `curl`. O Apache gravou o payload no log, e ao incluí-lo via LFI, o servidor executou o código — resultando em **Remote Code Execution (RCE)**. Uma reverse shell foi obtida via `curl | sh` com payload `mkfifo`. A escalação de privilégios foi realizada explorando a capability `cap_setuid+ep` configurada no binário `/usr/bin/python3.6`, que permitiu alterar o UID do processo para `0` (root) e abrir um shell privilegiado.

LFILog PoisoningApache access.logRCE via User-AgentLinux Capabilities+1
Abrir Relatório Completo

Lion

PWNEDMédio
LinuxHacking Club

O comprometimento total foi alcançado através de uma cadeia de exploração que partiu de uma vulnerabilidade de **SQL Injection UNION-Based** no endpoint de busca da aplicação web. A injeção possibilitou enumerar o banco de dados, extrair credenciais administrativas (hash bcrypt — não crackável), e, aproveitando o privilégio `FILE` do MySQL, escrever uma **webshell PHP** diretamente no servidor via `INTO OUTFILE`. Com a webshell estabelecendo **RCE**, uma reverse shell Python foi obtida. A escalação de privilégios foi realizada via **Crontab Hijacking**: um script shell em `/opt/lion/lion.backup.sh`, pertencente ao cron do `root` e executado a cada minuto, era **gravável pelo usuário comprometido**, permitindo a injeção de uma reverse shell e a obtenção de acesso root total.

SQL InjectionUNION-BasedINTO OUTFILEWebshellCrontab PrivEsc
Abrir Relatório Completo

Calc

PWNEDMédio
LinuxHacking Club

O comprometimento total foi alcançado por meio de uma cadeia de exploração que iniciou com uma vulnerabilidade de **Command Injection** em uma calculadora online. A aplicação PHP utilizava a função `eval()` para processar expressões matemáticas, e o suporte nativo do PHP ao operador de execução com backticks (`` ` ``) permitiu a execução arbitrária de comandos no servidor, resultando em **Remote Code Execution (RCE)**. A partir do acesso inicial como `apache`, um arquivo `.bash_history` expôs credenciais em texto plano que possibilitaram a movimentação lateral para o usuário `sysadmin`. A escalação de privilégios foi obtida via **Python Library Hijacking**: o usuário tinha permissão `sudo` para executar um script Python que importava a biblioteca `os`, e essa biblioteca era gravável, permitindo a injeção de uma reverse shell executada com privilégios de `root`.

Command InjectionPHP eval()Backtick OperatorPython Library HijackingSudo PrivEsc
Abrir Relatório Completo

Laravel-Time

PWNEDMédio
LinuxHacking Club

O comprometimento total foi alcançado através de uma cadeia de exploração que começou com uma vulnerabilidade crítica de **SQL Injection Time-Based Blind** no formulário de login de uma aplicação Laravel. Através de automação com busca binária e a função `LOAD_FILE()` do MySQL, foi possível extrair o conteúdo do arquivo `.env` sem acionar alertas, obtendo credenciais em texto plano. O reuso dessas credenciais nos serviços de infraestrutura (SMB e SSH) possibilitou acesso remoto ao servidor. Por fim, a presença de um arquivo editável pelo grupo da aplicação, executado periodicamente pelo agendador do sistema (`cron`) com privilégios de `root`, permitiu a escalação total de privilégios.

SQLi Time-BasedLOAD_FILESMBCrontab PrivEsc
Abrir Relatório Completo