命令执行漏洞

攻击者可以随意执行系统命令
存在于C/S B/S架构

站点提供一个接口可以执行系统命令,若不加过滤,则会触发系统命令执行漏洞

命令执行漏洞 直接调用操作系统命令
代码执行漏洞 类似于 eval(system(‘set’); );

php命令执行

php提供了部分函数来执行外部应用程序 如 system(),shell_exec(),exec()和passthru()

实例一


$host = $agrv[1];
system("ping".$host);
?>

实例二
php中提供一个eval()的函数

 eval($_POST['x'])?>
post get request

实例三
动态函数调用


function A(){
return "A函数..";
}
function B(){
return "B函数..";
}
$fun = $_REQUEST['fun'];
echo $fun();//调用动态函数
?>

php解析器可以根据$fun来调用对应的函数
$fun的值为phpinfo时,调用phpinfo()
http://www.xxx.con/fubction.php?fun=phpinfo

当有多个调用动态函数的情况


$fun = $_GET['fun'];
$par = $_GET['par'];
$fun($par);
?>

f u n 为 s y s t e m fun为system funsystempar为net user
构造payload system(“net user”)

实例四
php函数代码执行漏洞

php中preg_replace(),ob_start(),array_map()等函数存在代码执行问题

例如


$arr = $_GET['arr'];
$arrary = arrary(1,2,3,4,5);
$new_array=array_map($arr,$array);
?>

array_map()函数作用:返回用户自定义函数处理后的数组
构造payload http://xxx.com/function.php?arr=phpinfo
会执行phpinfo()
更多危险函数参阅《高级php漏洞审核技术》

Java代码执行漏洞

暂且略过jsp木马

框架执行漏洞

各种mvc框架会出现问题。
struts2
thinkphp等

如何防范?

  • 尽量不使用系统命令
  • 在进入执行命令函数之前,做好过滤
  • 使用动态函数之前,确保使用的函数是指定的函数之一,白名单
  • 对php来说,不能完全控制的危险函数不使用

有输入的地方就有可能有漏洞存在!

你可能感兴趣的:(笔记,web)