阅读 58

WordPress REST API 内容注入漏洞

 

通过ichunqiu的实验平台学习了这个漏洞的原理和利用

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()函数中

 

原文:https://www.cnblogs.com/AAsisi/p/14923892.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐