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/