- wordpress概述
- 漏洞原理
- 危害
- 修复
通过ichunqiu的实验平台学习了这个漏洞的原理和利用,这是一个17年的漏洞
WordPress是一种PHP语言开发的博客平台,REST API 是 WordPress 面向开发人员的功能,对于非开发人员,它可以启用块编辑器和现代插件界面,而不会影响网站的安全性和隐私
该漏洞主要影响4.7.0-4.7.1版本
漏洞原理:
图片是转载的
这个update_item_permissions_check()函数检测了文章是否存在和检查用户有无权限编辑:
- $post=get_post($request['id']);这一行判断的是提交的id有无文章
- 几个if判断的是发生错误的类型,如果都不满足这些if就返回true,用户有权限的意思;
要使 if 不执行,就要使$post为空,再看get_post()函数
看最后 return null,那么如何满足这个条件?就要看$_post,顺藤摸瓜就要看get_instance()函数,要使$_post为假,就是return false,当我们传入的id不是全由数字构成的时候会返回false
经过上面的一系列操作后,$post为null,update_item_permissions_check()函数返回true,成功绕过该函数。
再执行方法upload_item()中,由于类型转换,使用户发送的任意请求,如?id=2ddddd,就会转换为,就能对为2的文章进行更新修改了
利用方向:
在ichunqiu中实验的时候,只是简单修改了文章。但这样的话,感觉也没什么用处。后来想到,如果借由这个来添加超链接,进行钓鱼或刷流量;或者构造csrf攻击链接。结合其他的攻击方法,就会有很大影响。
看了别人的复现,说可以利用wordpress功能可解析html以及javascriot,那么能做到的事情就更多了
在复现中使用的命令:curl 172.16.12.2 | grep entry-title
python title_wp_rest_api.py http://172.16.12.2/ ichunqiu
修复:
对于该漏洞,主要修复在get_instance()函数中