faqiadegege 发表于 2024-10-31 17:31

faqia浅析CVE-2024-27954

CVE-2024-27954 - WordPress plugin Automatic 路径遍历漏洞
根据已知的网传poc验证文件如下


根据已知条件对源码进行分析
1、定位参数值 download



对插件 automatic 源码进行正则搜索,yyds,就一个匹配项
在函数

wp_automatic_parse_request
中,判断当

$wp->query_vars['wp_automatic'] == 'download'
时,加载文件
downloader.php
再看 wp_automatic_parse_request,该函数被使用的位置是:





add_action('parse_request', 'wp_automatic_parse_request');

以上代码,add_action可推断是某种机制,参考wordpress源码如下





而 parse_request 参考wordpress源码如下


至此上面有关 download 的细节是:
parse_request 动作执行钩子函数 wp_automatic_parse_request

即,对网络请求中的参数执行 wp_automatic_parse_request 函数
当其中的参数
wp_automatic == download
包含文件 downloader.php 文件

2、定位参数 link
巧了,yyds,如下图在 downloader.php 文件中



使用php中 curl_init 函数始化一个cURL会话。发送HTTP请求(以及其他类型的网络请求)到远程服务器,并接收其响应
而 link 参数的值,处理之后被作为 cURL 的 url 选项值
并且 cURL 的 CURLOPT_RETURNTRANSFER 被设置为 1 ,可直接返回内容





最终如上图所示,该 cURL 被执行


至此
该利用链已经完整,搭建 wordpress 环境,安装 automatic 3.92.0 版本插件
使用bps进行尝试


ssrf 利用



file read



YES!!!

wasd71 发表于 2024-10-31 19:35

curl_init 没对 link 参数做验证吧

faqiadegege 发表于 2024-10-31 19:52

wasd71 发表于 2024-10-31 19:35
curl_init 没对 link 参数做验证吧

不知道新版本这块代码怎么改的,但是正常来说php中cURL这里面的传递的参数应该是可访问路径或者服务就可以

chenshien 发表于 2024-11-1 14:23

感谢楼主分享

xiaobai 发表于 2024-11-1 17:03

普及一下,需要安装插件Automatic<3.92.1
/?p=3232&wp_automatic=download&link=file:///etc/passwd
页: [1]
查看完整版本: faqia浅析CVE-2024-27954