简单的 HTTP 协议本身并不存在安全性问题,因此协议本身几乎不会成为攻击的对象。应用 HTTP 协议的服务器和客户端,以及运行在服务器上的 Web 应用等资源才是攻击目标。
文章图片
对Web应用的攻击模式有以下两种。
主动攻击(active attack),是指攻击者通过直接访问 Web 应用,把攻击代码传入的攻击模式。由于该模式是直接针对服务器上的资源进行攻击,因此攻击者需要能够访问到那些资源。
以服武器为目标的主动攻击:SQL注入攻击、OS命令注入攻击
文章图片
被动攻击(passive attack),是指利用圈套策略执行攻击代码的攻击模式。在被动攻击过程中,攻击者不直接对目标 Web 应用访问发起攻击。
步骤一:攻击者诱使用户触发已设置的陷进
步骤二:用户浏览器/邮件客户端触发
步骤三:请求Web服务器(包含攻击代码)
步骤四:Web服务器中招
以服武器为目标的被动攻击:跨站脚本攻击、跨站点请求伪造
文章图片
实施 Web 应用的安全对策可大致分为以下两部分
客户端的验证
Web 应用端(服务器端)的验证:输入值验证、输出值转义
文章图片
因输出值转义不完全引发的安全漏洞
1、跨站脚本攻击
跨站脚本攻击(Cross-Site Scripting,XSS)是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。XSS 是一种攻击者利用预先设置的陷阱触发的被动攻击。
跨站脚本攻击有可能造成以下影响:
利用虚假输入表单骗取用户个人信息。
利用脚本窃取用户的 Cookie 值,被害者在不知情的情况下,帮助攻击者发送恶意请求。
显示伪造的文章或图片。
2、SQL 注入攻击
SQL 注入(SQL Injection)是指针对Web应用使用的数据库,通过运行非法的SQL而产生的攻击。
SQL 注入攻击有可能会造成以下等影响:
非法查看或篡改数据库内的数据
规避认证
执行和数据库服务器业务关联的程序等
3、OS 命令注入攻击
OS 命令注入攻击(OS Command Injection)是指通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用 Shell 函数的地方就有存在被攻击的风险。
4、HTTP首部注入攻击
HTTP首部注入攻击(HTTP Header Injection)是指攻击者通过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击。属于被动攻击模式。
向首部主体内添加内容的攻击称为HTTP响应截断攻击(HTTP Response Splitting Attack)。
HTTP 首部注入攻击有可能会造成以下一些影响
设置任何Cookie信息
重定向至任意URL
显示任意的主体(HTTP响应截断攻击)
5、邮件首部注入攻击
邮件首部注入(Mail Header Injection)是指Web应用中的邮件发送功能,攻击者通过邮件首部To或Subject内任意添加非法内容发起的攻击。
6、目录遍历攻击
目录遍历(Directory Traversal)攻击是指对本无意公开的文件目录,通过非法截断其目录路径后,达成访问目的的一种攻击。这种攻击有时也称为路径遍历(Path Traversal)攻击。
7、远程文件包含漏洞
远程文件包含漏洞(Remote File Inclusion)是指当部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的URL充当依赖文件,让脚本读取之后,就可运行任意脚本的一种攻击。
因设置或设计上的缺陷引发的安全漏洞
1、强制浏览
强制浏览(Forced Browsing)安全漏洞是指,从安置在Web服务器的公开目录下的文件中,浏览那些原本非自愿公开的文件。
强制浏览有可能会造成以下一些影响
泄露顾客的个人信息等重要情报
泄露原本需要具有访问权限的用户才可查阅的信息内容
泄露未外连到外界的文件
2、不正确的错误消息处理
不正确的错误消息处理(Error Handling Vulnerability)的安全漏洞是指,Web应用的错误信息内包含对攻击者有用的信息。
与Web应用有关的主要错误信息:Web 应用抛出的错误消息、数据库等系统抛出的错误消息
系统抛出的错误主要集中:PHP或ASP等脚本错误、数据库或中间件的错误、Web服务器的错误
3、开放重定向
开放重定向(Open Redirect)是一种对指定的任意URL作重定向跳转的功能。而于此功能相关联的安全漏洞是指,假如指定的重定向URL到某个具有恶意的Web网站,那么用户就会被诱导至那个Web网站。
因会话管理疏忽引发的安全漏洞
1、会话劫持
会话劫持(Session Hijack)是指攻击者通过某种手段拿到了用户的会话ID,并非法使用此会话ID伪装成用户,达到攻击的目的。
文章图片
下面列举了几种攻击者可获得会话ID的途径
通过非正规的生成方法推测会话ID
通过窃听或XSS攻击盗取会话ID
通过会话固定攻击(Session Fixation)强行获取会话ID
2、会话固定攻击
对以窃取目标会话ID为主动攻击手段的会话劫持而言,会话固定攻击(Session Fixation)攻击会强制用户使用攻击者指定的会话ID,属于被动攻击。
文章图片
3、跨站点请求伪造
【HTTP|图解HTTP之Web的攻击技术(十一)】跨站点请求伪造(Cross-Site Request Forgeries,CSRF)攻击是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击。
跨站点请求伪造有可能会造成以下等影响
利用已通过认证的用户权限更新设定信息等
利用已通过认证的用户权限购买商品
利用已通过认证的用户权限在留言板上发表言论
文章图片
其他安全漏洞
1、密码破解
密码破解攻击(Password Cracking)即算出密码,突破认证。攻击不仅限于Web应用,还包括其他的系统(如FTP或SSH等)。
密码破解有以下两种手段:
通过网络的密码试错
穷举法,(Brute-force Attack,又称暴力破解法)是指对所有密钥集合构成的密钥空间(Keyspace)进行穷举。
字典攻击,是指利用事先收集好的候选密码(经过各种组合方式后存入字典),枚举字典中的密码,尝试通过认证的一种攻击手法。
对已加密密码的破解(指攻击者入侵系统,已获得加密或散列处理的密码数据的情况)
通过穷举法?字典攻击进行类推,针对密码使用散列函数进行加密处理的情况,采用和穷举法或字典攻击相同的手法,尝试调用相同的散列函数加密候选密码,然后把计算出的散列值与目标散列值匹配,类推出密码。
彩虹表(Rainbow Table),是由明文密码及与之对应的散列值构成的一张数据库表,是一种通过事先制作庞大的彩虹表,可在穷举法?字典攻击等实际破解过程中缩短消耗时间的技巧。从彩虹表内搜索散列值就可以推导出对应的明文密码。
拿到密钥
加密算法的漏洞
2、点击劫持
点击劫持(Clickjacking)是指利用透明的按钮或链接做成陷阱,覆盖在Web页面之上。然后诱使用户在不知情的情况下,点击那个链接访问内容的一种攻击手段。这种行为又称为界面伪装(UI Redressing)。
文章图片
3、DoS攻击
DoS攻击(Denial of Service attack)是一种让运行中的服务呈停止状态的攻击。有时也叫做服务停止攻击或拒绝服务攻击。DoS攻击的对象不仅限于Web网站,还包括网络设备及服务器等。
主要有以下两种 DoS 攻击方式:
集中利用访问请求造成资源过载,资源用尽的同时,实际上服务也就呈停止状态。
通过攻击安全漏洞使服务停止。
文章图片
4、后门程序
后门程序(Backdoor)是指开发设置的隐藏入口,可不按正常步骤使用受限功能。利用后门程序就能够使用原本受限制的功能。
通常的后门程序分为以下 3 种类型
开发阶段作为Debug调用的后门程序
开发者为了自身利益植入的后门程序
攻击者通过某种方法设置的后门程序
推荐阅读
- 计算机网络|【图解HTTP】——Web技术的攻击技术
- HTTP学习笔记(二) 相识篇
- 网络|TCP/IP Socket网络编程
- java|大文件的分片上传、断点续传及其相关拓展实践
- javaee|Servlet基础知识(三)
- 抓包工具|Android抓包工具——Fiddler
- 关于http的一些事
- K8s Get "http://127.0.0.1:10252/healthz": dial tcp
- 是的你没看错,HTTP3来了