复现一遍这个2.20曝出来的CVE-2019-6977,我根据lorexxar的这篇文章尝试了复现,中途还是遇到了很多问题,再记录一下
首先搭建一个wordpress环境,坑就从这里开始了。
我之前调试php完全就是用的自带的Apache和php,项目放到 /Library/WebServer/Documents 这个文件夹下,基本就可以运行了,今天这个虽然说也能运行,但是rewrite模块没打开,导致在查看附件页面疯狂报404,经过我的长时间调试仍然不知道哪里出了问题,就剩下重启电脑这个办法了嘤嘤嘤。
最终我换了MAMP,一键搭建环境太爽了。
因为步骤和lorexxar师傅的一样,所以不复述了,提几个师傅文章里重要的坑
文章开头说
在反复斟酌漏洞条件之后,我们最终把漏洞要求约束为
WordPress commit <= 43bdb0e193955145a5ab1137890bb798bce5f0d2 (WordPress 5.1-alpha-44280)
拥有一个author权限的账号
首先我就在这里被坑了,裁剪之后文件夹里并没有图片出现,调了很久都没有,最后尝试回退了一个版本
我用的 git checkout 8cb70582730998cdadd52593b70541cc3456463a 成功进行了漏洞的复现
还有一个点是LFI裁剪后的图片那里,因为裁剪后的图片发生了变化,所以我的马就被裁剪掉了,经过不断的尝试,我发现
点击查看附件页面,如果图片被裁剪之后仍保留敏感代码,则命令执行成功。
实现这句话很麻烦,于是我直接在裁剪后的图片里强行重新插了一句话(假装裁剪后仍然有马)
其实师傅的文章里也提到如何保留敏感代码
4、如何让图片在被裁剪过之后,保留或者出现包含php敏感代码。
这部分就涉及到了后端图片库的问题,WordPress用到的后端图片处理库有两个,gd和imagick,其中默认优先使用imagick做处理。
imagick
利用稍微比较简单,imagick不会处理图片中的exif部分。将敏感代码加入到exif部分就可以不会改动。
gd
gd的利用就比较麻烦了,gd不但会处理图片的exif部分,还会删除图片中出现的php代码。除非攻击者通过fuzz获得一张精心构造的图片,可以在被裁剪处理之后刚好出现需要的php代码(难度较高)。
最终成功的截图