Web安全总结

28 篇文章 3 订阅
20 篇文章 8 订阅

本篇为课程总结,内容来自互联网和课程PPT

网站架构

一般web服务器结构

首先来看一个web服务器背后的网络结构

图中的IDS是用来检测办公网络的,也可以用来保护web服务器,放在防火墙之后镜像流量就可以

FIREWALL为网络防火墙,工作在传输层,检测数据报文的头部字段,匹配ip和端口是否合法。通过过滤网络流量来保护网络免受未经授权的访问、攻击和恶意软件等威胁。

WAF为web应用防火墙,工作在应用层,只属于web应用的防火墙,检测数据报文的载荷是否为攻击行为。WAF 能够监控 Web 应用程序的流量,分析 Web 应用程序的请求和响应,对恶意流量进行检测和拦截,从而保护 Web 应用程序的安全。

IDS为入侵检测系统,只需要对流量进行审计即可,并不会做出拦截或者放行等行为,所以只需要将流量镜像进行分析即可,不用接触真实传输中的流量。IDS只需实现检测功能,不负责防御,所以往往与流量传输并联,或是部署在旁路上,只负责检测恶意流量和已经配置好的攻击模式,然后对管理员示警,不做具体响应。

IPS是入侵防御系统,相比IDS来说,有了拦截的能力,需要有拦截数据包的能力。IPS为了实现防御功能,所以往往与流量传输以串联形式配置,关键网络的入口出口处都需要设置。

IPS和IDS都被部署在防火墙之后的流量传输链路上。

相比于传统的网络攻击,基于web的攻击有什么不同?

传统的网络攻击,相当于主动攻击,要求攻击者必须去主动发起扫描,并且主动利用漏洞进行攻击。

基于Web的攻击,可以利用xss、csrf等攻击方式,实现受害者主动下载恶意代码或者访问恶意网站,并不会直接与受害者连接。

传统的网络攻击可以看作为推(Push-based)的模式,即攻击者主动发起扫描,寻找具有可以利用的安全漏洞的主机,一旦发现目标,则实施漏洞利用,完成基本攻击过程。

基于Web访问的网络攻击,可以看作为拉(Pull-based)的模式,即受害者访问内含恶意代码的站点,恶意代码被下载至受害者的主机并运行,从而完成基本攻击过程。

HTTP协议

HTTP协议主要依靠,客户端发送请求给服务器,服务器收到请求后返回响应给客户端的请求-响应基本模型

对于HTTP的基本认证,只采用了base64编码来传输用户名和口令。

对于HTTP的摘要认证,采用了消息摘要技术。消息摘要是一种哈希函数(Hash Function),它将任意长度的消息映射为一个固定长度的摘要(Digest)。在摘要认证中,服务器首先向客户端发送一个随机数(称为nonce),客户端使用该随机数和用户密码生成一个消息摘要并发送给服务器。服务器使用相同的算法生成一个摘要,然后比较两个摘要是否相同。

HTTP响应状态码:

 1xx(临时响应)
表示临时响应并需要请求者继续执行操作的状态代码

 2xx (成功)
表示成功处理了请求的状态代码

3xx (重定向)
表示要完成请求,需要进一步操作

4xx(请求错误)
表示请求可能出错,妨碍了服务器的处理

5xx(服务器错误)
表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

HTTP响应拆分攻击

HTTP响应拆分攻击是针对响应包,将响应包的头部字段,利用换行符(\r\n)或其他控制字符,使得响应被拆分成两个或多个响应。

使得浏览器或者代理服务器解析出攻击者构造的响应页面。实现此攻击需要在中间传输过程中拦截响应数据包。

CR(= %0a = \r),LF(= %0d = \n)

为什么会造成这种攻击?

首先是HTTP的输入过滤不严格,其次是HTTP协议采用明文传输数据。

为了保证通信过程中的完整性,提出了下面的HTTPS协议

HTTPS

HTTPS相比HTTP安全,是因为使用了TLS协议。

TLS协议是一种加密通信协议,用于保护HTTP通信的安全性。当客户端与服务器之间进行HTTPS通信时,TLS协议会在两端之间建立一条加密通道,确保数据传输的机密性、完整性和可信性。

为了使HTTPS协议正常运作,服务器必须拥有有效的PKI证书。

PKI证书是一种数字证书,用于证明服务器的身份和公钥,以便客户端可以验证服务器的合法性并建立安全通信。服务器可以从受信任的证书颁发机构(CA)处获得有效的PKI证书。

相比之下,客户端不一定需要拥有证书。在大多数情况下,客户端只需要验证服务器的证书,而不需要自己拥有证书。客户端可以使用内置的根证书颁发机构列表来验证服务器的证书,以确保建立安全通信。

TLS 1.2 工作过程:

针对HTTPS协议的攻击

由于HTTPS协议依靠证书认证服务器端,那么可以通过伪造证书来进行对https协议的攻击。

由于证书颁发机构不止一家,攻击者可以利用证书颁发机构给一个已经认证过的服务器再次颁发证书,那么攻击者就可以担任中间人,拦截并查看用户访问该服务器的数据报文。

那么如何保证证书的唯一性?

HTTP 公钥固定(已弃用)

HPKP:HTTP Public Key Pinning
提供了针对中间人攻击的强大防御,糅合了HTTPS、HSTS以及HSTS预加载技术
TOFU:   首次使用的信任 (Trust on First Use)

证书透明度(主流)

思路:     CA 公告其所签发的全部证书的日志
浏览器仅使用其发布在日志服务器上的证书
使用 Merkle 哈希树可有效实现
公司可以扫描日志以发现非法签发证书

HTTP会话

HTTP协议是无状态的,因此无法保持同一个用户的登录状态,因此诞生了Cookie和Session。

无状态协议:指协议对事务处理没有记忆能力

Cookie和Session的关系

Cookie是客户端浏览器存储的,是方便在后续的HTTP请求中将其发送至服务器端。

Session是在服务器端存储的,Web应用程序可以使用该Session ID来查找用户的Session数据,以便在多个页面之间共享状态信息、存储用户的登录状态等。

Cookie和Session通常一起使用,以实现Web应用程序中的用户身份验证和状态管理。当用户首次访问Web应用程序时,服务器会创建一个Session,并将该Session ID存储在一个Cookie中,以便在后续的HTTP请求中将其发送回服务器。Web应用程序可以使用该Session ID查找用户的Session数据,并在多个页面之间共享状态信息、存储用户的登录状态等

Cookie机制是在客户端保持状态的方案,可以存储用户端会话状态。
Session机制是在客户端与服务器之间保持状态的解决方案。 服务器端保持状态的方案在客户端也需要保存一个标识,Session机制可以借助Cookie机制来达到保存标识。
在这里插入图片描述

除了Cookie和Session还有其他存储会话的方式,例如,URL重写,表单隐藏字段。

HTTP会话攻击

目标是窃取会话ID,劫持HTTP会话。来达到已受害者的身份登录服务端。

攻击方法有以下几种:

  • 截获
  • 猜测
  • 暴力攻击
  • 固定 使用户使用给定的会话ID

会话固定攻击的场景:
在这里插入图片描述
说明:

(1)攻击者与Web服务器建立合法连接
(2)攻击者获得会话ID或创建指定的会话ID
(3)攻击者向受害者发送带该会话ID的链接,受害者点击该链接
(4)服务器发现该会话已建立,无需创建新会话
(5)受害者向服务器提供其登录信息
(6)由于已知会话ID,攻击者可以访问受害者的帐户

解决方案

  • Web应用程序可以实现有效的会话确知攻击防护,而Web服务器仅能确保会话标识不会受到暴力攻击或推测攻击
  • 严格会话管理策略,拒绝非服务器产生的会话标识
    Web应用程序应仅在用户成功认证之后再产生新的会话标识,
    一旦用户登录之后,重新生成会话标识。
  • 会话标识绑定到IP地址并不能解决所有问题
    对于重要应用,会话标识应该绑定到SSL客户端证书,超时或登出后,会话应该清除
  • 用户应该使用登出选项以清除当前和其他的会话
  • 采用绝对的会话超时策略

Web访问中的隐私问题

Cookies跟踪用户浏览网页行为

Cookies 可被用来:

  • 跟踪用户在给定网站的行为 (第一方 cookies)
  • 跟踪用户跨多个网站的行为 (第三方 cookies),但用户并没有选择访问跟踪者网站 (!)
  • 跟踪可能对用户不可见: 并非显示和激活 HTTP GET 到跟踪者网站, 可能是不可见的链接

Web应用程序攻击

下面依次介绍主要的Web安全攻击方法
在这里插入图片描述

XSS跨站脚本攻击

Web应用中的计算机安全漏洞,攻击者利用XSS漏洞旁路掉同源策略。
XSS攻击的危害包括

  • 盗取各类用户帐号
  • 读取、篡改、添加、删除敏感数据
  • 非法转账
  • 强制发送电子邮件
  • 网站挂马
  • 控制受害者机器向其它网站发起攻击

XSS 是利用用户对网站的信任展开攻击

XSS主要有以下三种场景:

反射性XSS
在这里插入图片描述
存储型XSS
在这里插入图片描述
DOM型XSS (数据为传递到服务端)
在这里插入图片描述
XSS防范方法

  • 内容安全策略 (CSP)
    CSP的主要目标是减少和报告XSS攻击.
  • 服务器端防范措施-“限制、拒绝、净化”
    输入验证: 对用户提交数据进行尽可能严格的验证与过滤
    输出净化: HTMLEncode()方法
    消除危险的输入点
  • 客户端防范措施
    提高浏览器访问非受信网站时的安全等级
    关闭Cookie功能,或设置Cookie只读(IE6 SP1 HTTPonly cookie)
    安全意识和浏览习惯

CSRF跨站请求伪造

CSRF攻击通过在授权用户访问的页面中包含链接或者脚本的方式工作

基本特性: 利用网站对用户的信任展开攻击

常见特性:

  • 依靠用户标识危害网站
  • 欺骗用户的浏览器发送HTTP请求给目标站点
  • 已经通过cookie认证的用户将在完全无知的情况下发送HTTP请求到那个信任他的- 站点,进而进行用户不愿做的行为。
  • 通常使用图片攻击。

攻击场景:
在这里插入图片描述
CSRF防范方法

  • 秘密校验令牌
  • Referer 验证
  • 自定义 HTTP头部
  • 同站(sameSite) cookie

SQL注入攻击

SQL注入攻击是指攻击者利用Web应用程序数据层存在的输入验证不完善型安全漏洞,通过向Web应用程序的输入字段中注入SQL语句,从而实现对数据库的非法操作或者获取敏感数据的一类攻击技术。

攻击场景:
在这里插入图片描述

SQL注入攻击对Web应用程序的威胁

SQL注入攻击对Web应用程序的威胁非常大,因为它可以绕过应用程序的身份验证、授权和访问控制等安全机制,直接对数据库进行操作,导致数据泄露、数据损坏、应用程序崩溃等严重后果。

相当大部分Web应用程序使用后台数据库,动态产生内容
SQL注入攻击: 利用Web应用程序数据层存在的输入验证不完善型安全漏洞实施的一类代码注入攻击技术。

SQL注入漏洞机制

用户输入没有被正确地过滤:转义字符(引号、反引号、双下划线、分号、百分号)
没有进行严格类型检查:未判断输入是否预定类型

SQL注入防范方法

  • 不要自己直接构造 SQL 命令 !
  • 使用:
    参数化 SQL
    对象关系映射器 (ORM,Object Relational Mapper)

Web浏览器安全

Chrome浏览器,2008年9月正式发布,采用了Webkit 的网页渲染引擎

Chrome 采用多进程的架构

将每个页面分离成单个的进程

多个程序同时执行而互不影响,当资源过高或崩溃时,不会因为一个停顿而整个程序当掉。

javascript. 采用V8

安全性措施

黑名单
定期更新网络钓鱼和恶意软件的黑名单,第一时间反馈给用户所要访问的网页的危险性。

沙盒(Sandboxing)
每一个标签页都是一个沙盒(sandbox),以防止“恶意软件破坏用户系统”或“利用分页影响其他分页”。

插件(Plugins)
插件通常并没有统一的标准,且无法像标签页般沙盒化。插件在不同的处理程序中被执行。

无痕浏览(Incognito)
保护用户浏览网页的隐私

更新(Update)
每五小时自动更新主程序,更新后会在下一次启动中使用。

渲染引擎 Rendering Engine

渲染引擎负责处理网页的内容、样式和布局,以及将它们显示在屏幕上。不同的渲染引擎可能对同一HTML文档的渲染效果有所不同。

负责取得网页的内容(HTML、XML、图像等等)、整理信息(例如加入CSS等),以及计算网页的显示方式,输出至显示器或打印机。

渲染引擎对于网页的语法解释有差别,因此对同一HTML文档的渲染效果也可能不相同。

主要的渲染引擎 
Trident: IE6/IE7/IE8
Gecko:  Firefox
Webkit: Safari/Chrome
Blink: Chrome

Web浏览的基本安全策略

同源策略(Same Origin Policy)是浏览器中的一项主要安全措施,用于限制来自不同源的脚本之间的交互。

在同源策略中,同一个“源”指的是主机名、协议和端口号的组合,可以看作是某个Web页面或浏览器所浏览的信息的创建者。

同源策略要求脚本只能与同一“源”下的资源进行交互,不能读取或修改来自不同“源”的数据,从而防止恶意脚本通过跨域攻击窃取用户数据或者进行其他恶意操作。

同源策略是Web安全的基础之一,可以有效保护用户的隐私和安全。

同源策略(Same Origin Policy) : 浏览器中的主要安全措施。
“源”: 主机名、协议和端口号的组合;
“源”可看作是某个web页面或浏览器所浏览的信息的创建者。 

在这里插入图片描述

DNS重绑定 DNSrebinding

DNS重绑定是一种存在于浏览器及插件上的漏洞,可被用来绕过防火墙或暂时劫持客户的IP地址,使得浏览器转为开放网络的代理。

攻击者利用DNS重绑定漏洞,可以将浏览器所访问的目标服务器映射为攻击者所控制的源,从而使得攻击者可以通过浏览器访问目标服务器,绕过了目标服务器的访问控制机制。

攻击者可以利用DNS重绑定漏洞进行各种攻击,如窃取用户的敏感信息、执行恶意代码等。

为了防止DNS重绑定攻击,用户可以通过升级浏览器、禁用不必要的插件、使用DNS缓存等方式来增强浏览器的安全性。

网站管理员也可以采取一些措施,如设置CSP策略、使用HTTPS协议、限制跨域访问等,来防止DNS重绑定攻击。

DNS可造成的影响

  • 规避防火墙.
    访问内部网络
    获取保密信息
    利用未打补丁的漏洞
    滥用内部开放服务
  • 劫持 IP 地址
    展开点击骗局
    发送垃圾邮件
    破坏基于IP的认证

攻击过程

  1. 攻击者注册一个域,并由其控制的DNS服务器解析;服务器配置以一个很短的TTL参数,以防止响应被缓存;
  2. 第一个DNS响应包含带有恶意代码的服务器的 IP 地址;后继的DNS响应包含伪造的私有网络的IP地址,该IP为攻击者的攻击目标,位于防火墙的后面;
  3. 由于两个响应均为完全合法的DNS响应, 授权被隔离的脚本访问私有网络内的主机;通过返回多个短生存期的IP地址,DNS 服务器可以让脚本扫描本地网络或展开其他的恶意行为.基本步骤:

Web应用防火墙

在下面这种场景中,网络防火墙是起不到作用的,无法拦截HTTP(S)流数据

在这里插入图片描述
这时候就诞生了Web应用防火墙,专门针对Web应用做防御

Web应用防火墙有以下特性:

  • 专门针对HTTP与HTML
  • 在网络流解密后展开工作, 可以终止 SSL
  • 阻止成为可能

新一代Web应用防火墙

在这里插入图片描述

WAF通过接入Web访问流量,进行协议解析深度解码,调动语义分析访问控制自定义插件引擎进行分析,根据预设策略允许或阻断访问流量。

网站系统(Web应用)的体系结构

在这里插入图片描述
客户端层:客户端层是Web应用的最外层,包括浏览器、移动设备等,它们通过HTTP协议向Web服务器发送请求,并接收服务器返回的响应。

Web服务器层:Web服务器层是Web应用的中间层,主要负责接收和处理客户端发送的请求,并返回响应。Web服务器层通常使用Web服务器软件,如Apache、Nginx等,来处理HTTP请求。

应用服务器层:应用服务器层是Web应用的核心层,主要负责处理业务逻辑和数据处理。应用服务器层通常使用Web应用服务器,如Tomcat、Jboss、WebLogic等,来提供支持。

数据库层:数据库层是Web应用的数据存储层,主要负责存储和管理Web应用的数据。数据库层通常使用关系型数据库管理系统(RDBMS),如MySQL、Oracle、SQL Server等。

集成层:集成层是Web应用的组件集成层,主要负责将不同的组件(如第三方组件、Web服务等)集成到Web应用中,以扩展Web应用的功能和性能。

安全层:安全层是Web应用的安全保障层,主要负责保护Web应用免受各种安全威胁,如SQL注入、跨站点脚本攻击(XSS)、跨站点请求伪造(CSRF)等。安全层通常使用Web应用程序防火墙(WAF)等安全设备或技术来提供保护。

网站系统的脆弱性与安全威胁

在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值