运维过程中工程师薄弱的防护意识,产生了越来越多安全事件。我们需要全面运维过程中的基础服务常见漏洞和Web server常见漏洞以及运维工具常见漏洞等安全风险,并深入探讨运维安全意识相关的思路方法,防患于未然。
系统组件常见漏洞原理包含以下4个:
1、Web server常见漏洞
2、基础服务常见漏洞
3、运维工具常见漏洞
4、运维安全意识相关
在这里,详细介绍一下Web server常见漏洞原理包含以下8种:
1、物理路径泄露
物理路径泄露一般是由于Web服务器处理用户请求出错导致的,如通过提交一个超长的请求,或者是某个精心构造的特殊请求,或是请求一个Web服务器上不存在的文件。这些请求都有一个共同特点,那就是被请求的文件肯定属于CGI脚本,而不是静态HTML页面。
2、目录遍历
目录遍历对于Web服务器来说并不多见,通过对任意目录附加“…/”,或者是在有特殊意义的目录附加“…/”,或者是附加“…/”的一些变形,如“…\”或“…//”甚至其编码,都可能导致目录遍历。前一种情况并不多见,但是后面的几种情况就常见得多,以前非常流行的IIS二次解码漏洞和Unicode解码漏洞都可以看作是变形后的编码。
3、执行任意命令
执行任意命令即执行任意操作系统命令,主要包括两种情况。一是通过遍历目录,如前面提到的二次解码和UNICODE解码漏洞,来执行系统命令。另外一种就是Web服务器把用户提交的请求作为SSI指令解析,因此导致执行任意命令。
4、缓冲区溢出
缓冲区溢出漏洞想必大家都很熟悉,无非是Web服务器没有对用户提交的超长请求没有进行合适的处理,这种请求可能包括超长URL,超长HTTP Header域,或者是其它超长的数据。这种漏洞可能导致执行任意命令或者是拒绝服务,这一般取决于构造的数据。
5、拒绝服务
拒绝服务产生的原因多种多样,主要包括超长URL,特殊目录,超长HTTP Header域,畸形HTTP Header域或者是DOS设备文件等。由于Web服务器在处理这些特殊请求时不知所措或者是处理方式不当,因此出错终止或挂起。
6、SQL注入
SQL注入的漏洞在编程过程造成的。后台数据库允许动态SQL语句的执行。前台应用程序没有对用户输入的数据或者页面提交的信息(如POST, GET)进行必要的安全检查。数据库自身的特性造成的,与web程序的编程语言的无关。几乎所有的关系数据库系统和相应的SQL语言都面临SQL注入的潜在威胁 。
7、条件竞争
这里的条件竞争主要针对一些管理服务器而言,这类服务器一般是以System或Root身份运行的。当它们需要使用一些临时文件,而在对这些文件进行写操作之前,却没有对文件的属性进行检查,一般可能导致重要系统文件被重写,甚至获得系统控制权。
8、CGI漏洞
通过CGI脚本存在的安全漏洞,比如暴露敏感信息、缺省提供的某些正常服务未关闭、利用某些服务漏洞执行命令、应用程序存在远程溢出、非通用CGI程序的编程漏洞。
以上内容参考《系统组件常见漏洞原理(立戳查看)》(来自安全牛课堂)