vBulletin 5.6.1 SQL注入漏洞
2020-06-03 10:37:25 Author: xz.aliyun.com(查看原文) 阅读量:1073 收藏

vBulletin5 5.6.1 SQL注入漏洞

安装

php=7.2.10

步骤如下:

  1. 将config.php.bkp重命名为config.php(ren config.php.bkp config.php)
  2. 进入/ upload / core / includes目录。
  3. 将config.php.new重命名为config.php(ren config.php.new config.php)
  4. 编辑config.php并更改这些值以匹配您的信息。
    • $ config ['Database'] ['dbname'] ='数据库名称';
    • $ config ['Database'] ['technicalemail'] ='[email protected] ';
    • $ config ['MasterServer'] ['servername'] ='localhost'; //可以称为主机名
    • $ config ['MasterServer'] ['port'] = 3306;
    • $ config ['MasterServer'] ['username'] ='用户名';
    • $ config ['MasterServer'] ['password'] ='密码';
    • 对于vBulletin Connect的基本安装,无需在此文件中更改其他值。
  5. 将htaccess.txt重命名为.htaccess
  6. 其他按照系统引导安装就行
  7. 安装成功后要记得删除/ upload / core /install目录

成功后如图:

漏洞描述

cve披露的信息似乎比较轻描淡写:

5.5.6pl1之前的vBulletin,5.6.0pl1之前的5.6.0和5.6.1pl1之前的5.6.1具有错误的访问控制。

实际是nodeId未授权sql注入漏洞,且危害较大。

影响范围

vBulletin 5.5.6pl1之前版本

vBulletin 5.6.0pl1之前的5.6.0版本

vBulletin 5.6.1pl1之前的5.6.1版本

复现

payload:

nodeId[nodeid]=1 AND text.nodeid = 1 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,user(),19,20,21,22,23,24,25,26--

分析

vBulletin在/core/vb/api/实现ajax API调用

下面是栈调用情况

详细分析

payload:

nodeId[nodeid]=1 UNION SELECT 26,25,24,23,22,21,20,19,20,17,16,15,14,13,12,11,10,"cve-2020-12720",8,7,6,5,4,3,2,1;--

首先要说的是:

vB_Api_Content_Infraction继承于vB_Api_Content_Text

而vB_Api_Content_Text继承于vB_Api_Content

因此vB_Api_Content_Infraction拥有vB_Api_Content的方法

vB_Library_Content_Infraction也是同理

下图是类的继承关系:

下面我们来看vB_Api_Content->getIndexableContent(upload/core/vb/api/content.php):

调用了vB_Library_Content->getIndexableContent(upload/core/vb/library/content.php):

向下跳转,调用fillContentTableData

具体方法如下:

调用了getRow(upload/core/vb/db/assertor.php):

因为getRow传入getContentTablesData方法,我们跟进getContentTablesData(upload/core/packages/vbforum/db/mysql/querydefs.php)

调用cleanArray进行数据清洗:(upload/core/vb/cleaner.php)

进一步调用clean():

因为vartype为0,跳转到doclean方法(const CONVERT_SINGLE = 100):

因为type为0,直接跳转到TYPE_NOCLEAN(因为const TYPE_NOCLEAN = 0;):

经过清洗后返回的数据依然不变:

最后返回:

直接拼接不做处理

最后返回结果:

修复建议

官方已发布最新安全补丁,请及时更新补丁:

https://forum.vbulletin.com/forum/vbulletin-announcements/vbulletin-announcements_aa/4440032-vbulletin-5-6-1-security-patch-level-1

参考

https://www.exploit-db.com/exploits/48472

https://www.tenable.com/blog/cve-2020-12720-vbulletin-urges-users-to-patch-undisclosed-security-vulnerability


文章来源: http://xz.aliyun.com/t/7831
如有侵权请联系:admin#unsafe.sh