
CVE-2024-22515 任意文件上传和 CVE-2024-22514 远程代码执行针对 AgentDVR 5.1.6.0(已认证)
CVE-2024-22515 任意文件上传和 CVE-2024-22514 远程代码执行,针对 AgentDVR 5.1.6.0(已验证)
(旧版本可能受影响)
https://github.com/Orange-418/CVE-2024-22514-Remote-Code-Execution
https://github.com/Orange-418/CVE-2024-22515-File-Upload-Vulnerability
https://www.ispyconnect.com/docs/agent/about
https://www.youtube.com/watch?v=RXmoXERWVk8
已在 4.7.3.0 和 5.1.6.0 上测试。中间版本和旧版本也可能受影响。已在 Windows x64、Linux x64 和 Docker 安装上测试。值得注意的是,Windows 的利用路径略有不同。无需调用 bash,可以直接调用 exe 文件,例如 "/AgentDVR/sounds/payload.exe"。
AgentDVR 5.1.6.0 版本存在两个漏洞:任意文件上传漏洞和任意文件执行漏洞。这两个漏洞可以结合起来,实现上传的任意文件的执行,包括恶意负载。这可能导致拥有 AgentDVR 服务器有效凭据的个人实现远程代码执行(RCE)。
由于该程序的性质(主要使用 WebRTC),我没有制作 PoC 脚本。然而,手动过程复杂度非常低。如果有人制作了 PoC 脚本并联系我,我会在此处链接。
首先,登录仪表板后,添加一个新设备。创建一个带有默认设置的“虚拟”设备。

在设备上,添加一个动作,当拍摄照片时触发任务。然后,添加一个任务,选择“执行命令”,并在下拉菜单中选择任意“文件”作为要触发的命令。

现在,准备你的有效负载。你可以修改并使用本仓库中的 "payload.sh" 文件。这是一个非常简单的反弹 Shell 脚本。
准备就绪后,返回服务器菜单,选择“文件上传”。选择“音频”,然后开始浏览文件,但将文件选择器下拉菜单从 "*.wav" 切换到“所有文件”。


接下来,返回服务器菜单,选择“备份/恢复”。选择“下载”。你将收到一个包含几个不同 .XML 文件的 zip 文件。

解压内容并打开 "config.xml"。在底部附近,你会找到类似 '<Directory Entry="/path/to/media/"' 的行。这很重要,因为它代表了 AgentDVR 安装的文件夹结构,根据安装类型的不同,可能有几种不同的形式。

接下来,编辑 objects.xml 文件,找到底部附近类似 '<entry type="EXE" param1=' 的行。编辑路径,该路径应该是调用默认的警报 bat 文件,插入一个调用 bash 来调用你的 .sh 脚本的路径。你可以根据上一步的路径来调整,从而知道要插入什么。

之后,你可以启动你的监听器。

现在,再次返回服务器菜单,选择“备份/恢复”。这次,选择上传文件,并选择你修改后的 "objects.xml" 文件。

仪表板应会重启以应用更改。理论上,你现在有一个虚拟摄像头,当拍摄照片时会触发警报来运行你的反弹 Shell 脚本。在监听器已启动的情况下,右键点击虚拟摄像头画面,选择“拍摄照片”。

你现在应该拥有了一个 root Shell。
