Web安全 - 命令执行漏洞

Command Execution

一、原理

命令执行漏洞是指应用有时需要调用一些执行系统命令的函数,如:system()exec()shell_exec()eval()passthru(),代码未对用户可控参数做过滤,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。

常见连接符

A;B    先执行A,再执行B
A&B    简单拼接,A B之间无制约关系
A|B    显示B的执行结果
A&&B   A执行成功,然后才会执行B
A||B   A执行失败,然后才会执行B

二、分类

1. 代码层过滤不严

商业应用的一些核心代码封装在二进制文件中,在Web应用中通过system函数来调用:
system("/bin/program --arg $arg");

2. 系统的漏洞造成命令注入

bash破壳漏洞(CVE-2014-6271)

3. 调用的第三方组件存在代码执行漏洞

WordPress中用来处理图片的ImageMagick组件;
JAVA中的命令执行漏洞(struts2/ElasticsearchGroovy等);
ThinkPHP命令执行;

三、防御

  1. 尽量少用执行命令的函数或者直接禁用
  2. 参数值尽量使用引号包括,并在拼接前调用addslashes函数进行转义
  3. 在使用动态函数之前,确保使用的函数是指定的函数之一
  4. 在进入执行命令的函数方法之前,对参数进行过滤,对敏感字符进行转义
  5. 对于可控点是程序参数的情况下,使用escapeshellcmd函数进行过滤,对于可控点是程序参数值的情况下,使用escapeshellarg函数进行过滤
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值