-
- 思维导图
-
- 命令执行含义
当应用需要调用一些外部程序去处理内容情况下,就会用到一些执行系统命令的函数,比如php中的system、exec、shell_exec、passthru、popen、popc_popen等,当用户调用这些函数时,将恶意系统命令注入到正常命令中,造成命令执行漏洞;
PHP可动态执行PHP代码的有eval,
jsp有Runtime、getruntime()、exec();
Asp/aspx有eval等
本质:程序设计违背了”数据与代码分离”的原则;
-
- 命令执行漏洞成因
成因
-
- 代码层过滤不严
一些商业应用需要执行命令,商业应用的一-些核心代码可能封装在二进制文件中,在web应用中通过system函数来调用之:eg:system("/bin/program --arg $arg");
-
- 系统漏洞造成的命令注入
bash破壳漏洞(CVE-2014-6271),如果我们能够控制执行的bash的环境变量就可以通过破壳漏洞来执行任意代码;
-
- 调用第三方组件存在代码执行漏洞
典型的就是WordPress中,可以选择使用lmageMagick这个常用的图片处理组件,对用户. 上传的图片进行处理(默认是lmageMagick库)造成命令执行。
另外JAVA中的命令执行漏洞(struts2/ElasticsearchGroovy等)很常见。
-
- 漏洞危害
- 继承权限,执行系统命名,读写文件
- 反弹shell
- 控制整个服务器
-
- 漏洞分类
- 命令直接注入执行漏洞
命令注入