代码审计 - PHP

RCE

RCE函数
eval、preg_replace + /e模式、assertJavascript:evalVbscript: Execute、EvalPython:exec
<?php include($_SERVER['DOCUMENT_ROOT'].'/btslab/header.php'); ?>
  <br/><b>Ping:</b>Please Enter Domain Name or IP Address: <br/><br/>
  <form action="cmd.php" method="get">
  <input type="text" name="host" value=""/>
  <br/><br/><input type="submit" name="Go" value="Go"/>
  </form>
  <br/>

<?php 
if(isset($_GET['host']))
{
if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
{
$result=shell_exec("ping ".$_GET['host']);
}
else
{
$result=shell_exec("ping -c 4 ".$_GET['host']);
}

echo "<b>Result:</b></br><pre>".$result."</pre>";
}
?>

<?php include($_SERVER['DOCUMENT_ROOT'].'/btslab/footer.php'); ?>
View Code

防御

防御        
1. 尽量少用执行命令的函数或者直接禁用        
2. 参数值尽量使用引号包括        
3. 在使用动态函数之前,确保使用的函数是指定的函数之一        
4. 在进入执行命令的函数/方法之前,对参数进行过滤,对敏感字符进行转义        
5. 能使用脚本解决的工作,不要调用其他程序处理。尽量少用执行命令的函数,并在disable_functions中禁用        
6. 对于可控点是程序参数的情况下,使用escapeshellcmd函数进行过滤,对于可控点是程序参数值的情况下,使用escapeshellarg函数进行过滤        
7. 参数的值尽量使用引号包裹,并在拼接前调用addslashes进行转义        
而针对由特定第三方组件引发的漏洞,我们要做的就是及时打补丁,修改安装时的默认配置    

猜你喜欢

转载自www.cnblogs.com/AtesetEnginner/p/11325892.html