现在我们已经了解了作为Web服务环境的组成部分之一的操作系统是不安全的了,用么其他层次呢?是不是也面临着和操作系统一样的威胁呢?实际上确实如此,无论是只能运行在Windows操作系统的IIS,还是可以跨平台使用的Apache、Nigix、Jboss、Tomcat也都同样可能会存在各种各样的漏洞。这些漏洞的成因与提作系统漏洞的成因相同,都是由于代码编写的失误造成的。
Apache是全球最大的Web服务器软件。该系统可运行于几乎所有广泛应用的计算机平台。它具有跨平台、安全等特点,应用广泛,是当前最流行的网络服务器软件之一。其速度快,可靠性高,并且通过简单的API扩展,可以在服务器上编译hython解释器。
简言之,使用方便,可以支持HTML、PHP、Perl、Python等基本语言。一句话:强盗!
Apache目录结构。
Bin包括httpd等常用命令工具。
CGI-bin-用于存储诸如xxx.sh这样的Linux下常用命令。
例如httpd.conf的Conf-Linux配置相关文件。
误差-误差记录。
Htdocs-为网站发布源码。
图示-网站图示。
记录-记录。
说明书-手册。
模组-扩充模组
Apache原则介绍。
Apache存在的漏洞在下面讨论,请确保理解Apache的工作原理。
在构建PHP环境的过程中,很多朋友经常使用PHP、LAMP、XAMPP等集成环境,这些原理容易被忽视。要更好地理解这节课中提到的漏洞,我们必须了解Apache和PHP之间的小秘密。
WEB请求流程通过图表进行解释,如下图所示:
上面的图片是灵魂画师Margin的作品
下面的图表简单描述了Apache和PHP协作完成WEB请求的过程,Apache位于第一位,PHP位于最后,那么它们之间的交流如何?首先学习PHP的体系结构。下面的图片
上面是鸟哥的文章,深入了解ZendSAPIs。
以上图片将PHP分成五个级别(类似于Android的架构图),如下:
ZendEngine是PHP的底层实现,包括编译和执行,用C语言实现底层实现。
ZendAPI和ZendExtensionAPI提供基于Zend基础的外部封装服务。
该扩展使用一个扩展的应用程序接口,如各种内置函数和MySQL连接库,来实现扩展库和标准库。
SAPI是全称的核心,它是服务器应用程序的界面,也就是服务器应用程序的界面。PHP与Apache、Nginx、FastCGI进行交互。
这个应用程序在顶层,即我们编写的PHP代码。
现在,上面提到的PHP架构已经非常清楚,Apache和PHP之间的通信流程也不清楚。Apache本身并不支持PHP解析,从架构图中可以看出它是通过SAPI进行通信的,那么Apache如何与SAPI进行通信?Apache如何知道解析为哪种PHP文件?若要手动构建Apache解析PHP的环境,则必须了解以下两个步骤: