漏洞描述
命令执行一般发生在远程,故被称为远程命令执行,即RCE(remote command exec)
漏洞原理
在网站应用中,为了方便程序处理,通常会存在各种执行外部程序的函数,当调用函数命令执行且未对输入做出过滤时,通过注入恶意命令,从而造成危害
相关函数
- PHP:
eval()、assert()、preg_replace()、call_user_func()、call_user_func_array()以及array_map()等
system、shell_exec、popen、passthru、proc_open等 - Python:
eval exec subprocess os.system commands - Java:
Java中没有类似php中eval函数这种直接可以将字符串转化为代码执行的函数,
但是有反射机制,并且有各种基于反射机制的表达式引擎,如: OGNL、SpEL、MVEL等
漏洞产生
1.没有对用户输入进行过滤或过滤不严
2.系统漏洞造成的命令执行
3.调用的第三方组件存在代码执行漏洞
漏洞防御
1.禁用高危函数
2.参数的值尽量使用引号包括,并在拼接前调用addslashes进行转义
3.严格过滤