Command Injection
- Command Injection,即命令注入,是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。
- PHP命令注入攻击漏洞是PHP应用程序中常见的脚本漏洞之一,国内著名的Web应用程序Discuz!、DedeCMS等都曾经存在过该类型漏洞。
命令执行产生原因
命令执行漏洞是指应用有时需要调用一些执行系统命令的函数如: system()、exec()、 shell exec()、eval()、 passthru0,代码未对用户可控参数做过滤,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。
分类
- 代码层过滤不严:商业应用的一些核心代码封装在二进制文件中,在Web应用中通过 system函数来调用:system("/bin/program --arg Sarg")
- 系统的漏洞造成命令注入:bash破壳漏洞(CVE-20146271)
- 调用的第三方组件存在代码执行漏洞Word Press中用来处理图片的 mageMagick组件,JAVA中的命令执行漏洞( struts/Elasticsearch Groovy等);ThinkPHP命令执行;
利用条件
- 应用调用执行命令的函数
- 将用户输入作为系统命令的参数拼接到命令中
- 没有对用户输入过滤或者过滤不严格
常见连接符
- A;B 先执行A,再执行B
- A&B 简单拼接,AB之间无制约关系
- A|B 显示B的执行结果
- A&&B A执行成功,然后才会执行B
- A||B A执行失败,然后才会执行B
目录