Web构成组件

-Web服务组件的分层结构

从整体来看,Web服务架构的立体式结构由上至下共可分为8或9层

抽象结构

具体实例

第三方内容

广告统计、mockup

Web前端框架

HTML5、jQuery、Bootstrap

Web应用

CMS、BBS、Blog

Web开发框架

ThinkPHP、Django、Rails

Web服务端语言

PHP、JSP、.NET

Web容器 Web服务器

Tomcat、Jetty Apache、IIS、Nginx

存储

数据库存储、内存存储、文件存储

操作系统

Windows、Linux

其中不同的层级,发挥着各自的作用,承担起在Web通信、服务独特的使命与责任。

【自下而上的概览】各部分的基本概念、作用及典例等

I.操作系统

概念:

操作系统(Operating System ,OS)是一种软件,是硬件基础上的第一层软件,是用以管理计算机硬件与软件资源的计算机程序,是硬件和其他软件沟通的桥梁,同时也是计算机系统的内核与基石。

作用:

在管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等方面发挥重要作用;提供最基本的运算等基础服务

​典例:

​嵌入式系统,如VxWorks等

​类Unix系统,如Linux等

​微软Windows系统,如Win10等

II.存储

​概念:

​-现代信息技术中用于保存信息的记忆设备

​-用于存储的设备被称为存储介质

​-用于规定、管理存储的软件,称为存储管理系统

​作用:

​按照一定的约定,有规律的存放数字信息

​典例:

​内存、硬盘、U盘、数据库(MySql、Oracle)等

​III.Web服务器端

​①Web服务器

​概念:

​对外提供静态页面Web服务的软件系统

​作用:

​-处理Http协议

​-接收、处理、发送静态页面

​-处理并发、负载均衡

​典例:

​Apache、IIS、Nginx

​②Web容器

​概念:

​为了满足交互操作,获取动态结果,而提供的一些拓展机制能够让HTTP服务器调用服务端程序

​作用:

​处理动态页面请求(解释器),如asp、jsp、php、cgi

​典例:

​Tomcat、Weblogic、Jboss、Jetty、Webshere等

Web服务器和Web容器的关系【利用分层结构理解】

*以Apache和Tomcat为例

Apache

Tomcat

本质

Apache是Web服务器,处理浏览器HTTP请求

Tomcat是一个Servlet容器(可以认为是Apache的拓展)可独立运行在Apache上

支持对象

只支持HTML等静态普通网页可以单项连通Tomcat(Apache可以单向访问Tomcat中的资源,而反之则不行)

可以支持动态对象JSP、PHP、CGI等

作用基础

HTTP Server

Servlet引擎

​IV.服务器语言

​概念:

​为了对客户端请求的动态响应,在服务端通过编程实现,编程的语言称为Web服务端语言

​作用:

​-实现用户注册、信息查询、数据库访问

​-为不同的用户定制页面

​-对不同的网页提供安全的访问控制

​典例:

​ASP、ASP.NET、JSP、PHP等

​Ⅴ.Web开发框架

​概念:

​为了解决基础Web开发的基础功能,节省开发时间、成本,开发者更多的精力放在Web网站所需的功能上,形成的开发框架系统。

​作用:

​-接受请求

​-内容请求的路由处理

​-动态生成HTML模板

​典例:

​Django、Flask、ThinkPHP、Rails

​VI.Web应用

​概念:

​一种采用B/S架构,通过Web访问的应用程序,程序的最大好处是用户很好访问应用程序,用户只需有浏览器即可,不需要再安装其它的软件

作用:

​实现某种信息、内容的高效管理沟通、信息发布的需求

​典例:

​内容管理系统(CMS)、Blog、BBS等

Web访问流程

整体流程:

用户在浏览器地址栏输入网址Url

DNS域名解析

建立TCP链接

发送HTTP Request

Web服务器响应

应用服务器响应

关闭TCP链接

用户浏览器渲染界面

Web安全问题

层面

典型安全问题

Web前端

XSS

Web开发框架

远程命令执行

Web服务器和容器

远程溢出、DDos攻击

存储

Sql注入

操作系统层

系统漏洞、系统命令非法执行

跨站脚本攻击(XSS)

概念:

​ 跨站脚本攻击(XSS),指攻击者通过在Web页面写入恶意脚本,造成用户在浏览页面时,控制用户浏览器进行操作的攻击方式。

类型:

-反射型

-存储型

-DOM型

危害:

​ 盗取cookie、XSS蠕虫攻击、对话劫持、钓鱼攻击等

XSS攻击示例

XSS攻击示例

zOxygeNz

2020-04

Powered by Edraw Max

SQL注入漏洞

概念:

​ SQL注入漏洞,Web系统对数据库访问语句过滤不严,入侵者在合法参数的位置,传入特殊的字符、命令,实现对后台数据库的入侵。

类型:

-数据型

​ -Select * from table where id = 360

-字符型

​ -Select * from table where username = ‘sanliuling’

危害:

​ 数据库信息泄露、数据篡改、挂马等

文件上传漏洞

概念:

​ 文件上传漏洞,网站WEB应用都有一些文件上传功能,比如文档、图片、头像、视频上传,当上传功能的实现代码没有严格校验上传文件的后缀和文件类型时,就可以上传任意文件,甚至可执行文件后门。

类型:

​ 根据网站使用及可解析的程序脚本不同,可以上传的恶意脚本可以是PHP、ASP、JSP、ASPX文件等

危害:

​ 恶意文件传递给解释器去执行,之后就可以在服务器上执行恶意代码,可实现数据库执行、服务器文件管理,服务器命令执行等恶意操作。

命令执行

概念:

​ 命令执行,应用程序有时需要执行一些执行系统命令的函数,而Web开发语言中部分函数可以执行系统命令,如PHP中的system、exec、shell_exec等函数。

危害:

​ 当黑客控制这些函数的参数时,就可以将恶意的系统命令拼接到正常的命令中,从而造成命令执行攻击,若当前用户为root用户,则危害程度更大。

文件包含

概念:

​ 文件包含,程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时,直接调用此文件,而无需再次编写,这种文件调用的过程一般被称为文件包含。所有的脚本语言都会提供文件包含功能,但文件包含漏洞在PHP Web Application中居多,而在JSP、ASP、ASP.NET程序中却非常少,甚至没有。

常见包含函数有:include()、require()

类型:

​ 本地包含

​ 远程包含

危害:

​ 文件包含函数加载的参数没有经过过滤或者严格定义,可以被用户控制,包含其他恶意文件,导致执行了非预期的代码。

Web中间件

概念:

​ Web中间件,介于操作系统和应用程序之间的产品,面向信息系统交互,集成过程中的通用部分的集合,屏蔽了底层通讯,交互,连接等复杂又通用化的功能,以产品的形式提供出来,系统在交互时,直接采用中间件进行连接和交互即可,避免了大量的代码开发和人工成本。

类型:

IIS

Apache

Tomcat

Nginx

WebLogic

Jboss

常见漏洞

中间件名称

漏洞

IIS

解析漏洞、PUT命令执行漏洞、PUT文件上传漏洞、短文件名猜测

Apache

文件解析漏洞

Tomcat

任意写文件漏洞(CVE-2017-12615)、任意文件取\包含漏洞(CVE-2020-1938)远程部署漏洞

Nginx

文件解析漏洞、目录穿越\遍历漏洞

Weblogic

任意文件上传漏洞(CVE-2018-2894)、SSRF漏洞(CVE-2014-4210)弱口令&&远程部署漏洞

Jboss

JBoss 4.x JBossMQ JMS反序列化漏洞(CVE-2017-7504)反序列化漏洞(CVE-2017-12149)、弱口令&&远程部署漏洞

漏洞样例(Tomcat-CVE-2020-1938)

Tomcat

​ Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器,按照SunMicrosystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持。

​ 由于Tomcat本身也内含了HTTP服务器,因此可以是做单独的Web服务器。

影响版本

Apache Tomcat 9.x<9.0.31

Apache Tomcat 8.x<8.5.51

Apache Tomcat 7.x<7.0.100

Apache Tomcat 6.x

漏洞危害

​ 读取到/WEB-INF/web.xml文件

OWASP TOP10

​ 反映影响比较广泛、危害性较大的重点风险所在处

推荐图书

·《白帽子讲Web安全》

·《Web安全深度剖析》

·《Web安全攻防》

本篇内容总结自360网络安全大学公开课

网址 https://university.360.cn/