本篇为课程总结,内容来自互联网和课程PPT
首先来看一个web服务器背后的网络结构
图中的IDS是用来检测办公网络的,也可以用来保护web服务器,放在防火墙之后镜像流量就可以
FIREWALL为网络防火墙,工作在传输层,检测数据报文的头部字段,匹配ip和端口是否合法。通过过滤网络流量来保护网络免受未经授权的访问、攻击和恶意软件等威胁。
WAF为web应用防火墙,工作在应用层,只属于web应用的防火墙,检测数据报文的载荷是否为攻击行为。WAF 能够监控 Web 应用程序的流量,分析 Web 应用程序的请求和响应,对恶意流量进行检测和拦截,从而保护 Web 应用程序的安全。
IDS为入侵检测系统,只需要对流量进行审计即可,并不会做出拦截或者放行等行为,所以只需要将流量镜像进行分析即可,不用接触真实传输中的流量。IDS只需实现检测功能,不负责防御,所以往往与流量传输并联,或是部署在旁路上,只负责检测恶意流量和已经配置好的攻击模式,然后对管理员示警,不做具体响应。
IPS是入侵防御系统,相比IDS来说,有了拦截的能力,需要有拦截数据包的能力。IPS为了实现防御功能,所以往往与流量传输以串联形式配置,关键网络的入口出口处都需要设置。
IPS和IDS都被部署在防火墙之后的流量传输链路上。
传统的网络攻击,相当于主动攻击,要求攻击者必须去主动发起扫描,并且主动利用漏洞进行攻击。
基于Web的攻击,可以利用xss、csrf等攻击方式,实现受害者主动下载恶意代码或者访问恶意网站,并不会直接与受害者连接。
传统的网络攻击可以看作为推(Push-based)的模式,即攻击者主动发起扫描,寻找具有可以利用的安全漏洞的主机,一旦发现目标,则实施漏洞利用,完成基本攻击过程。
基于Web访问的网络攻击,可以看作为拉(Pull-based)的模式,即受害者访问内含恶意代码的站点,恶意代码被下载至受害者的主机并运行,从而完成基本攻击过程。
HTTP协议主要依靠,客户端发送请求给服务器,服务器收到请求后返回响应给客户端的请求-响应基本模型
对于HTTP的基本认证,只采用了base64编码来传输用户名和口令。
对于HTTP的摘要认证,采用了消息摘要技术。消息摘要是一种哈希函数(Hash Function),它将任意长度的消息映射为一个固定长度的摘要(Digest)。在摘要认证中,服务器首先向客户端发送一个随机数(称为nonce),客户端使用该随机数和用户密码生成一个消息摘要并发送给服务器。服务器使用相同的算法生成一个摘要,然后比较两个摘要是否相同。
HTTP响应状态码:
1xx(临时响应)
表示临时响应并需要请求者继续执行操作的状态代码
2xx (成功)
表示成功处理了请求的状态代码
3xx (重定向)
表示要完成请求,需要进一步操作
4xx(请求错误)
表示请求可能出错,妨碍了服务器的处理
5xx(服务器错误)
表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。
HTTP响应拆分攻击是针对响应包,将响应包的头部字段,利用换行符(\r\n)或其他控制字符,使得响应被拆分成两个或多个响应。
使得浏览器或者代理服务器解析出攻击者构造的响应页面。实现此攻击需要在中间传输过程中拦截响应数据包。
CR(= %0a = \r),LF(= %0d = \n)
为什么会造成这种攻击?
首先是HTTP的输入过滤不严格,其次是HTTP协议采用明文传输数据。
为了保证通信过程中的完整性,提出了下面的HTTPS协议
HTTPS相比HTTP安全,是因为使用了TLS协议。
TLS协议是一种加密通信协议,用于保护HTTP通信的安全性。当客户端与服务器之间进行HTTPS通信时,TLS协议会在两端之间建立一条加密通道,确保数据传输的机密性、完整性和可信性。
为了使HTTPS协议正常运作,服务器必须拥有有效的PKI证书。
PKI证书是一种数字证书,用于证明服务器的身份和公钥,以便客户端可以验证服务器的合法性并建立安全通信。服务器可以从受信任的证书颁发机构(CA)处获得有效的PKI证书。
相比之下,客户端不一定需要拥有证书。在大多数情况下,客户端只需要验证服务器的证书,而不需要自己拥有证书。客户端可以使用内置的根证书颁发机构列表来验证服务器的证书,以确保建立安全通信。
TLS 1.2 工作过程:
由于HTTPS协议依靠证书认证服务器端,那么可以通过伪造证书来进行对https协议的攻击。
由于证书颁发机构不止一家,攻击者可以利用证书颁发机构给一个已经认证过的服务器再次颁发证书,那么攻击者就可以担任中间人,拦截并查看用户访问该服务器的数据报文。
HTTP 公钥固定(已弃用)
HPKP:HTTP Public Key Pinning
提供了针对中间人攻击的强大防御,糅合了HTTPS、HSTS以及HSTS预加载技术
TOFU: 首次使用的信任 (Trust on First Use)
证书透明度(主流)
思路: CA 公告其所签发的全部证书的日志
浏览器仅使用其发布在日志服务器上的证书
使用 Merkle 哈希树可有效实现
公司可以扫描日志以发现非法签发证书
HTTP协议是无状态的,因此无法保持同一个用户的登录状态,因此诞生了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重写,表单隐藏字段。
目标是窃取会话ID,劫持HTTP会话。来达到已受害者的身份登录服务端。
攻击方法有以下几种:
(1)攻击者与Web服务器建立合法连接
(2)攻击者获得会话ID或创建指定的会话ID
(3)攻击者向受害者发送带该会话ID的链接,受害者点击该链接
(4)服务器发现该会话已建立,无需创建新会话
(5)受害者向服务器提供其登录信息
(6)由于已知会话ID,攻击者可以访问受害者的帐户
Cookies跟踪用户浏览网页行为
Cookies 可被用来:
Web应用中的计算机安全漏洞,攻击者利用XSS漏洞旁路掉同源策略。
XSS攻击的危害包括
XSS 是利用用户对网站的信任展开攻击
XSS主要有以下三种场景:
反射性XSS
存储型XSS
DOM型XSS (数据为传递到服务端)
XSS防范方法
CSRF攻击通过在授权用户访问的页面中包含链接或者脚本的方式工作
基本特性: 利用网站对用户的信任展开攻击。
常见特性:
SQL注入攻击是指攻击者利用Web应用程序数据层存在的输入验证不完善型安全漏洞,通过向Web应用程序的输入字段中注入SQL语句,从而实现对数据库的非法操作或者获取敏感数据的一类攻击技术。
SQL注入攻击对Web应用程序的威胁
SQL注入攻击对Web应用程序的威胁非常大,因为它可以绕过应用程序的身份验证、授权和访问控制等安全机制,直接对数据库进行操作,导致数据泄露、数据损坏、应用程序崩溃等严重后果。
相当大部分Web应用程序使用后台数据库,动态产生内容
SQL注入攻击: 利用Web应用程序数据层存在的输入验证不完善型安全漏洞实施的一类代码注入攻击技术。
SQL注入漏洞机制
用户输入没有被正确地过滤:转义字符(引号、反引号、双下划线、分号、百分号)
没有进行严格类型检查:未判断输入是否预定类型
SQL注入防范方法
Chrome浏览器,2008年9月正式发布,采用了Webkit 的网页渲染引擎
Chrome 采用多进程的架构
将每个页面分离成单个的进程
多个程序同时执行而互不影响,当资源过高或崩溃时,不会因为一个停顿而整个程序当掉。
javascript. 采用V8
黑名单
定期更新网络钓鱼和恶意软件的黑名单,第一时间反馈给用户所要访问的网页的危险性。
沙盒(Sandboxing)
每一个标签页都是一个沙盒(sandbox),以防止“恶意软件破坏用户系统”或“利用分页影响其他分页”。
插件(Plugins)
插件通常并没有统一的标准,且无法像标签页般沙盒化。插件在不同的处理程序中被执行。
无痕浏览(Incognito)
保护用户浏览网页的隐私
更新(Update)
每五小时自动更新主程序,更新后会在下一次启动中使用。
渲染引擎负责处理网页的内容、样式和布局,以及将它们显示在屏幕上。不同的渲染引擎可能对同一HTML文档的渲染效果有所不同。
负责取得网页的内容(HTML、XML、图像等等)、整理信息(例如加入CSS等),以及计算网页的显示方式,输出至显示器或打印机。
渲染引擎对于网页的语法解释有差别,因此对同一HTML文档的渲染效果也可能不相同。
主要的渲染引擎
Trident: IE6/IE7/IE8
Gecko: Firefox
Webkit: Safari/Chrome
Blink: Chrome
同源策略(Same Origin Policy)是浏览器中的一项主要安全措施,用于限制来自不同源的脚本之间的交互。
在同源策略中,同一个“源”指的是主机名、协议和端口号的组合,可以看作是某个Web页面或浏览器所浏览的信息的创建者。
同源策略要求脚本只能与同一“源”下的资源进行交互,不能读取或修改来自不同“源”的数据,从而防止恶意脚本通过跨域攻击窃取用户数据或者进行其他恶意操作。
同源策略是Web安全的基础之一,可以有效保护用户的隐私和安全。
同源策略(Same Origin Policy) : 浏览器中的主要安全措施。
“源”: 主机名、协议和端口号的组合;
“源”可看作是某个web页面或浏览器所浏览的信息的创建者。
DNS重绑定是一种存在于浏览器及插件上的漏洞,可被用来绕过防火墙或暂时劫持客户的IP地址,使得浏览器转为开放网络的代理。
攻击者利用DNS重绑定漏洞,可以将浏览器所访问的目标服务器映射为攻击者所控制的源,从而使得攻击者可以通过浏览器访问目标服务器,绕过了目标服务器的访问控制机制。
攻击者可以利用DNS重绑定漏洞进行各种攻击,如窃取用户的敏感信息、执行恶意代码等。
为了防止DNS重绑定攻击,用户可以通过升级浏览器、禁用不必要的插件、使用DNS缓存等方式来增强浏览器的安全性。
网站管理员也可以采取一些措施,如设置CSP策略、使用HTTPS协议、限制跨域访问等,来防止DNS重绑定攻击。
DNS可造成的影响
攻击过程
在下面这种场景中,网络防火墙是起不到作用的,无法拦截HTTP(S)流数据
Web应用防火墙有以下特性:
WAF通过接入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)等安全设备或技术来提供保护。