2021-2022-1学期 20212318 《网络空间安全导论》第十二周学习总结
《网络空间安全导论》第五章自学笔记
Chapter.5 应用安全
Web应用安全,数据库安全,中间件安全和恶意代码
Web应用安全:SQL注入,文件上传,XSS,CSRF和远程代码执行
恶意代码:病毒,木马和其他恶意代码进行分类,分别阐述上述恶意代码的危害,原理及发展。
5.1 应用安全概述
早期的应用系统采用的客户/服务器模式是一种双层的结构
- 缺点:一旦客户的业务逻辑改变,将引起应用程序的修改以及后台数据库组件的修改,耗费大量资源
三层客户/服务器结构构建了一种分隔式的应用程序,由三个层次共同组成应用系统。
攻击者会利用Web应用系统,中间件或者数据库的漏洞进行攻击,得到Web应用服务器或者数据库服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据。
5.2 常见的Web应用安全漏洞
Web应用安全漏洞类型的原理,攻击过程和防范方法等基本常识。
5.2.1 SQL注入漏洞
SQL注入漏洞的形成原因:用户输入的数据被SQL解释器执行。
-
参数类型检测
- int intval
- bool is numeric
- ctype digit
-
参数长度控制
成功执行的SQL注入语句的字符数量通常非常多,严格控制这些提交点的字符长度 -
危险参数过滤
常见的危险参数过滤包括关键字,内置函数,敏感字符的过滤,其过滤方法主要有如下三种: -
黑名单过滤
白名单过滤
GPC过滤 -
参数化查询
参数化查询是指数据库服务器在数据库完成SQL指令的编译后,才套用参数运行,因此就算参数中含有有损的指令,也不会被数据库运行,仅认为它是一个参数。
5.2.2 文件上传漏洞
-
文件上传漏洞的原理
一些文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致攻击者可上传任意PHP文件,并能够将这些文件传递给PHP解释器,从而可以在远程服务器上执行任意PHP脚本。
此脚本可以是后缀为PHP,ASP,JSP脚本,也可以是篡改后缀后的这几类脚本。 -
造成恶意文件上传的原因:
1)文件上传时检查不严
2)文件上传后修改文件名时处理不当
3)使用第三方插件时引入 -
文件上传攻击实例分析
上传正常图片和WebShell
修改文件扩展名绕过上传检测
获取WebShell权限 -
文件上传漏洞常见的防护手段
1)系统开发阶段的防御
2)系统运行阶段的防御
3)安全设备的防御
5.2.3 XSS
-
XSS的定义
跨站脚本攻击(XSS):攻击者利用网站程序对用户输入过滤的不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料,利用用户身份进行某种动作或者对访问者进行病毒侵害的一 种攻击方式
XSS属于客户端攻击,受害者是用户。 -
XSS漏洞攻击实例
- XSS的分类
- 1)反射型XSS
黑客通过诱骗或加密变形,将存在恶意代码的链接发给用户,只有用户点击以后才能使得攻击成功实施 - 2)存储型XSS
黑客将包含恶意代码的数据信息直接写入文章或文章评论中,所有浏览文章或评论的用户都会在他们客户端浏览器环境中执行插入的恶意代码。 - 3)基于DOM的XSS
需要针对具体的JavaScript DOM代码进行分析,并根据实际情况进行XSS的利用。
- 1)反射型XSS
- XSS的分类
-
XSS漏洞常见的防护手段
- XSS的原理:注入一段能够被浏览器解释执行的代码,并且通过各类手段使得这段代码“镶嵌”在正常网页中,有用户在正常访问中触发。
1)过滤特殊文字
2)使用实体化编码
- XSS的原理:注入一段能够被浏览器解释执行的代码,并且通过各类手段使得这段代码“镶嵌”在正常网页中,有用户在正常访问中触发。
5.2.4 CSRF
跨站请求伪造(CSRF):攻击者盗用你的身份,以你的名义进行某些非法操作。
-
CSRF的原理
1)登录受信任网站A,并在本地生成Cookie
2)在不登出A的情况下,访问危险网站B
关闭浏览器不能结束一个会话 -
CSRF的三种不同危害方式
1)论坛等可交互的地方
2)Web攻击者
3)网络攻击者 -
CSRF漏洞的常见防护手段
1)添加验证码
2)验证referer
推荐使用referer来监控CSRF行为
3)利用token
5.2.5 远程代码执行漏洞
- 远程代码执行漏洞的原理
- 远程代码执行漏洞的防范
1)禁用高危系统函数
2)严格过滤关键字符
3)严格限制允许的参数类型
5.3 恶意代码
5.3.1 恶意代码的定义
恶意代码:又称为恶意软件,是指额能够在计算机系统中进行非授权操作的代码。
5.3.2 恶意代码的特征
恶意代码通常是一段可以执行的程序,能够在很隐蔽的情况下嵌入另一个程序,通过允许别的程序而自动运行,从而达到破坏被感染将计算机的数据,程序以及对被感染计算机进行信息窃取的目的。
5.3.3 恶意代码的分类
逻辑炸弹
Rookit
木马
病毒(具有自我复制能力)
蠕虫(独立,自我复制)
Zombie(独立,自我复制)
WebShell
5.3.4 恶意代码的危害
1)破坏数据
2)占用磁盘存储空间
3)抢占系统资源
4)影响计算机运行速度
5.3.5 恶意代码案例
5.3.6 典型恶意代码原理与防范分析
WebShell介绍
WebShell危害
一句话WebShell案例
一句话木马服务端
一句话木马客户端
- 防范安全
1)服务器安全设置
加强对脚本文件的代码审计
Web服务器通过正则表达式,限制用户输入信息长度等方法对用户提交信息的合法性进行必要的验证,过滤
使用数据库系统自身的安全性设置访问数据库权限
2)应用安全防护
Web软件开发的安全
FTP文件上载安全
文件系统的存储权限
不要使用超级用户运行Web服务
3)控制文件上传
加强对脚本文件的代码审计
设置虚拟目录,并合理设置这些文件夹的访问权限
5.4 中间件安全
5.4.1 中间件概述
中间件:独立的系统软件或服务程序,分布式应用程序借助这种软件在不同的技术之间共享资源
1)屏蔽了底层操作系统的复杂性,简单,统一的开发环境
2)减少了系统的维护,运行和管理的工作量
3)将不同时期,在不同操作系统上开发应用软件集成起来
5.4.2 中间件的分类
中间件包括:交易中间件,消息中间件,集成中间件等
三大类:应用服务类,应用集成类,业务架构类
-
应用服务类
为应用系统提供一个综合的计算环境和支撑平台,包括对象请求代理中间件,事务监控交易中间件,Java应用服务器中间件等
对象管理结构,对象请求代理是这个模型的核心组件,它的作用在于提供一个通信框架,透明地在异构的分布计算环境中传递对象请求。
交易中间件,适用于联机交易处理系统,主要功能是管理分布于不同计算机上的数据一致性,保障系统处理能力的效率与均衡负载。 -
应用集成类中间件
应用集成类中间件是提供各种不同网络应用系统之间的消息通信,服务集成和数据集成的功能。
消息中间件:利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。
企业应用整合是指企业内部不同应用系统之间的互连,以便通过应用整合实现数据在多个系统之间的同步和共享。 -
业务架构类中间件
业务架构类中间件包括业务流程,业务管理和业务交互等几个业务领域的中间件。
业务流程是处理业务模型的重要方法。
业务管理是对业务对象的建模和业务规则的定义,运行和监控的中间件平台。
业务交互的中间件平台提供组织的合作伙伴,员工和客户通过Web与移动设备等交互工具,实现个性化的用户体验。
5.4.3 典型中间件安全案例
- 漏洞产生原因
在Java编写的Web应用于Web服务器间,Java通常会发送大量的序列化对象
HTTP请求中的参数,cookies以及Parameters
RMI协议,被广泛使用的RMI协议完全基于序列化
JMX用于处理序列化对象
自定义协议,用来接收与发送原始的Java对象
在序列化中使用的方法,在接收数据时采用同样的方法进行反序列化读取数据。
35.5 数据库安全
5.5.1 数据库概述
数据库中的数据按照一定数据模型进行组织,描述和存储,具有较小的冗余度,较高的独立性和易扩展性,并为各种用户共享
5.5.2 数据库标准语言SQL
- SQL:结构化查询语言,用于对存放在计算机数据库中的数据进行组织,管理和检索的一种工具。
- SQL语言的主要功能:同各种数据库建立联系,进行沟通。
5.5.3 经典数据库安全案例
- 数据库的防护方法
1)加强拥有最高权限的账号的密码,尽量使用能满足要求的一般账号
2)对扩展存储过程进行处理,删除一般用不到的存储过程
3)阻止非授权用户访问
4)加强对数据库登录的日志记录,最好记录所有登录事件
5)用管理员账号定期检查所有账号,看密码是否为空或者过于简单,如发现此类情况应及时弥补。
浙公网安备 33010602011771号