Wordpress 插件 Media Library Assistant 2.81-(LFI和XSS)
字数 1343 2025-08-25 22:58:35

WordPress插件Media Library Assistant 2.81漏洞分析报告

1. 漏洞概述

Media Library Assistant是WordPress的一个用于图像和文件管理的插件。在2.81版本中存在两个安全漏洞:

  1. 本地文件包含(LFI)漏洞:允许攻击者读取服务器上的文件
  2. 跨站脚本(XSS)漏洞:在管理后台存在存储型XSS

2. 影响版本

Media Library Assistant插件版本 < 2.82

3. LFI漏洞分析

3.1 漏洞位置

/media-library-assistant/includes/mla-file-downloader.php

3.2 漏洞原理

  1. 该文件引入了class-mla-file-downloader.php

  2. 处理两个关键参数:

    • mla_download_file:指定要下载的文件
    • mla_download_type:指定文件类型
  3. 漏洞存在于mla_process_download_file()函数中:

    $file_name = $args['mla_download_file'];
    $match_name = str_replace( '\\', '/', $file_name );
    $base_dir = pathinfo( __FILE__, PATHINFO_DIRNAME );
    $match_dir = str_replace( '\\', '/', $base_dir );
    $allowed_path = substr( $match_dir, 0, strpos( $match_dir, 'plugins' ) );
    
    if ( 0 !== strpos( $match_name, $allowed_path ) ) {
        $message = 'ERROR: download path out of bounds.';
    } elseif ( false !== strpos( $match_name, '..' ) ) {
        $message = 'ERROR: download path invalid.';
    }
    
  4. 安全限制:

    • 过滤了..防止目录穿越
    • 只能读取plugins目录下的内容

3.3 漏洞利用

虽然有限制,但仍可读取插件目录下的敏感文件:

http://127.0.0.1/wordpress/wp-content/plugins/media-library-assistant/includes/mla-file-downloader.php?mla_download_type=text/html&mla_download_file=C:\phpstudy\PHPTutorial\WWW\wordpress\wp-content\plugins\rest-api\extras.php

3.4 修复方案

在2.82版本中直接禁止了这一行为。

4. XSS漏洞分析

4.1 漏洞前提

需要管理员(admin)权限

4.2 漏洞位置

存在于插件设置页面(/wp-admin/options-general.php?page=mla-settings-menu)的所有标签的搜索框中,特别是:

includes/class-mla-settings-view-tab.php

4.3 漏洞原理

s参数未经过滤直接输出,导致存储型XSS。

4.4 漏洞利用

在Views标签或其他标签的搜索框中注入恶意脚本即可触发。

4.5 修复方案

在2.82版本中增加了WordPress内置函数esc_attr()进行过滤。

5. 漏洞验证与测试

5.1 测试环境搭建

  1. 下载漏洞版本插件:
    https://downloads.wp.xz.cn/plugin/media-library-assistant.2.81.zip
    
  2. 安装WordPress并启用该插件

5.2 LFI测试步骤

  1. 构造包含mla_download_filemla_download_type参数的URL
  2. 尝试读取plugins目录下的其他文件

5.3 XSS测试步骤

  1. 以管理员身份登录
  2. 访问插件设置页面
  3. 在任意标签的搜索框中输入XSS payload

6. 防护建议

  1. 立即升级到2.82或更高版本
  2. 对于无法立即升级的情况:
    • 限制对mla-file-downloader.php的访问
    • 添加输入过滤函数对所有用户输入进行处理

7. 参考链接

  1. Exploit-DB: https://www.exploit-db.com/exploits/48315
  2. 官方插件页面: https://wordpress.org/plugins/media-library-assistant/#developers

8. 总结

虽然这两个漏洞的威胁程度有限(LFI受限于目录访问范围,XSS需要管理员权限),但仍可能被攻击者利用进行信息收集或权限提升。建议所有使用该插件的网站管理员及时更新到最新版本。

WordPress插件Media Library Assistant 2.81漏洞分析报告 1. 漏洞概述 Media Library Assistant是WordPress的一个用于图像和文件管理的插件。在2.81版本中存在两个安全漏洞: 本地文件包含(LFI)漏洞 :允许攻击者读取服务器上的文件 跨站脚本(XSS)漏洞 :在管理后台存在存储型XSS 2. 影响版本 Media Library Assistant插件版本 < 2.82 3. LFI漏洞分析 3.1 漏洞位置 /media-library-assistant/includes/mla-file-downloader.php 3.2 漏洞原理 该文件引入了 class-mla-file-downloader.php 处理两个关键参数: mla_download_file :指定要下载的文件 mla_download_type :指定文件类型 漏洞存在于 mla_process_download_file() 函数中: 安全限制: 过滤了 .. 防止目录穿越 只能读取 plugins 目录下的内容 3.3 漏洞利用 虽然有限制,但仍可读取插件目录下的敏感文件: 3.4 修复方案 在2.82版本中直接禁止了这一行为。 4. XSS漏洞分析 4.1 漏洞前提 需要管理员(admin)权限 4.2 漏洞位置 存在于插件设置页面( /wp-admin/options-general.php?page=mla-settings-menu )的所有标签的搜索框中,特别是: includes/class-mla-settings-view-tab.php 4.3 漏洞原理 s 参数未经过滤直接输出,导致存储型XSS。 4.4 漏洞利用 在Views标签或其他标签的搜索框中注入恶意脚本即可触发。 4.5 修复方案 在2.82版本中增加了WordPress内置函数 esc_attr() 进行过滤。 5. 漏洞验证与测试 5.1 测试环境搭建 下载漏洞版本插件: 安装WordPress并启用该插件 5.2 LFI测试步骤 构造包含 mla_download_file 和 mla_download_type 参数的URL 尝试读取 plugins 目录下的其他文件 5.3 XSS测试步骤 以管理员身份登录 访问插件设置页面 在任意标签的搜索框中输入XSS payload 6. 防护建议 立即升级到2.82或更高版本 对于无法立即升级的情况: 限制对 mla-file-downloader.php 的访问 添加输入过滤函数对所有用户输入进行处理 7. 参考链接 Exploit-DB: https://www.exploit-db.com/exploits/48315 官方插件页面: https://wordpress.org/plugins/media-library-assistant/#developers 8. 总结 虽然这两个漏洞的威胁程度有限(LFI受限于目录访问范围,XSS需要管理员权限),但仍可能被攻击者利用进行信息收集或权限提升。建议所有使用该插件的网站管理员及时更新到最新版本。