Wordpress 5.0 RCE复现分析

复现一遍这个2.20曝出来的CVE-2019-6977,我根据lorexxar的这篇文章尝试了复现,中途还是遇到了很多问题,再记录一下

首先搭建一个wordpress环境,坑就从这里开始了。

我之前调试php完全就是用的自带的Apache和php,项目放到 /Library/WebServer/Documents 这个文件夹下,基本就可以运行了,今天这个虽然说也能运行,但是rewrite模块没打开,导致在查看附件页面疯狂报404,经过我的长时间调试仍然不知道哪里出了问题,就剩下重启电脑这个办法了嘤嘤嘤。

最终我换了MAMP,一键搭建环境太爽了。

因为步骤和lorexxar师傅的一样,所以不复述了,提几个师傅文章里重要的坑

文章开头说

1
2
3
4
5
在反复斟酌漏洞条件之后,我们最终把漏洞要求约束为

WordPress commit <= 43bdb0e193955145a5ab1137890bb798bce5f0d2 (WordPress 5.1-alpha-44280

拥有一个author权限的账号

首先我就在这里被坑了,裁剪之后文件夹里并没有图片出现,调了很久都没有,最后尝试回退了一个版本

我用的 git checkout 8cb70582730998cdadd52593b70541cc3456463a 成功进行了漏洞的复现

还有一个点是LFI裁剪后的图片那里,因为裁剪后的图片发生了变化,所以我的马就被裁剪掉了,经过不断的尝试,我发现

1
点击查看附件页面,如果图片被裁剪之后仍保留敏感代码,则命令执行成功。

实现这句话很麻烦,于是我直接在裁剪后的图片里强行重新插了一句话(假装裁剪后仍然有马)

其实师傅的文章里也提到如何保留敏感代码

1
2
3
4
5
6
7
8
9
4、如何让图片在被裁剪过之后,保留或者出现包含php敏感代码。

这部分就涉及到了后端图片库的问题,WordPress用到的后端图片处理库有两个,gd和imagick,其中默认优先使用imagick做处理。

imagick
利用稍微比较简单,imagick不会处理图片中的exif部分。将敏感代码加入到exif部分就可以不会改动。

gd
gd的利用就比较麻烦了,gd不但会处理图片的exif部分,还会删除图片中出现的php代码。除非攻击者通过fuzz获得一张精心构造的图片,可以在被裁剪处理之后刚好出现需要的php代码(难度较高)。

最终成功的截图1.png

php代码跟踪调试的还没做,当时感冒了,状态不太好,后期会补上。

作者

Dawnnnnnn

发布于

2019-04-03

更新于

2022-07-07

许可协议

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

评论