Web常见的攻击技术

摘要:
本章讲解具体有哪些攻击Web站点的手段,以及攻击会造成怎样的影响。目前,来自互联网的攻击大多是冲着Web站点来的,它们大多把Web应用作为攻击目标。本章主要针对Web应用的攻击技术进行讲解。在被动攻击过程中,攻击者不直接对目标Web应用访问发起攻击。

目录

一、针对Web的攻击技术

二、针对 Web 应用的攻击模式

2.1 主动攻击

2.2 被动攻击

三、具体的攻击技术

1、因输出值转义不完全引发的安全漏洞

1.1 跨站点脚本攻击(XSS)

1.2 SQL注入攻击

1.3 OS命令注入攻击

1.4 HTTP首部注入攻击

1.5 邮件首部注入攻击

1.6 目录遍历攻击

1.7 运程文件包含漏洞

2、因设置或者设计上的缺陷引发的安全漏洞

2.1 强制浏览

2.2 不正确的错误消息处理

2.3 开放重定向

3、因会话管理疏忽引发的安全漏洞

3.1 会话劫持

3.2 会话固定攻击

3.3 跨站点请求伪造

4、其他安全漏洞

4.1 密码破解

4.2 点击劫持

4.3 DoS 攻击

4.4 后门程序


互联网上的攻击大都将Web站点作为目标。本章讲解具体有哪些攻击Web站点的手段,以及攻击会造成怎样的影响。

一、针对Web的攻击技术

简单的 HTTP 协议本身并不存在安全性问题,因此协议本身几乎不会成为攻击的对象。 应用 HTTP 协议的服务器和客户端,以及运行在服务器上的 Web 应用等资源才是攻击目标。目前,来自互联网的攻击大多是冲着 Web 站点来的,它们大多把Web 应用作为攻击目标。本章主要针对 Web 应用的攻击技术进行讲解。

Web常见的攻击技术第1张

二、针对 Web 应用的攻击模式

对 Web 应用的攻击模式有以下两种。

  1. 主动攻击
  2. 被动攻击

2.1 主动攻击

主动攻击( active attack)是指攻击者通过直接访问 Web 应用,把攻击代码传入的攻击模式。 由于该模式是直接针对服务器上的资源进行攻击,因此攻击者需要能够访问到那些资源。

主动攻击模式里具有代表性的攻击是 SQL 注入攻击和 OS 命令注入攻击。

Web常见的攻击技术第2张

2.2 被动攻击

被动攻击( passive attack)是指利用圈套策略执行攻击代码的攻击模式。在被动攻击过程中,攻击者不直接对目标 Web 应用访问发起攻击。

被动攻击通常的攻击模式如下所示。

步骤 1: 攻击者诱使用户触发已设置好的陷阱,而陷阱会启动发送已嵌入攻击代码的 HTTP 请求。
步骤 2: 当用户不知不觉中招之后,用户的浏览器或邮件客户端就会触发这个陷阱。
步骤 3: 中招后的用户浏览器会把含有攻击代码的 HTTP 请求发送给作为攻击目标的 Web 应用,运行攻击代码。
步骤 4: 执行完攻击代码,存在安全漏洞的 Web 应用会成为攻击者的跳板,可能导致用户所持的 Cookie 等个人信息被窃
取,登录状态中的用户权限遭恶意滥用等后果。

被动攻击模式中具有代表性的攻击是跨站脚本攻击和跨站点请求伪造。

Web常见的攻击技术第3张

利用用户的身份攻击企业内部网络

利用被动攻击,可发起对原本从互联网上无法直接访问的企业内网等网络的攻击。只要用户踏入攻击者预先设好的陷阱,在用户能够访问到的网络范围内,即使是企业内网也同样会受到攻击。

很多企业内网依然可以连接到互联网上,访问 Web 网站,或接收互联网发来的邮件。这样就可能给攻击者以可乘之机,诱导用户触发陷阱后对企业内网发动攻击。

Web常见的攻击技术第4张

三、具体的攻击技术

1、因输出值转义不完全引发的安全漏洞

1.1 跨站点脚本攻击(XSS)

跨站脚本攻击( Cross-Site Scripting, XSS)是指通过存在安全漏洞的 Web 网站注册用户的浏览器内运行非法的 HTML 标签或 JavaScript进行的一种攻击。 动态创建的 HTML 部分有可能隐藏着安全漏洞。就这样,攻击者编写脚本设下陷阱,用户在自己的浏览器上运行时,一不小心就会受到被动攻击。

跨站脚本攻击有可能造成以下影响:

  • 利用虚假输入表单骗取用户个人信息。
  • 利用脚本窃取用户的 Cookie 值,被害者在不知情的情况下,帮助攻击者发送恶意请求。
  • 显示伪造的文章或图片

1.2 SQL注入攻击

SQL 注入( SQL Injection)是指针对 Web 应用使用的数据库,通过运行非法的 SQL 而产生的攻击。该安全隐患有可能引发极大的威胁,有时会直接导致个人信息及机密信息的泄露。

Web 应用通常都会用到数据库,当需要对数据库表内的数据进行检索或添加、删除等操作时,会使用 SQL 语句连接数据库进行特定的操作。如果在调用 SQL 语句的方式上存在疏漏,就有可能执行被恶意注入( Injection)非法 SQL 语句。

SQL 注入攻击有可能会造成以下等影响:

  • 非法查看或篡改数据库内的数据
  • 规避认证
  • 执行和数据库服务器业务关联的程序等


1.3 OS命令注入攻击

OS 命令注入攻击( OS Command Injection)是指通过 Web 应用,执行非法的操作系统命令达到攻击的目的。 只要在能调用 Shell 函数的地方就有存在被攻击的风险。

可以从 Web 应用中通过 Shell 来调用操作系统命令。倘若调用 Shell时存在疏漏,就可以执行插入的非法 OS 命令。OS 命令注入攻击可以向 Shell 发送命令,让 Windows 或 Linux 操作系统的命令行启动程序。 也就是说,通过 OS 注入攻击可执行 OS 上安装着的各种程序。

1.4 HTTP首部注入攻击

HTTP 首部注入攻击( HTTP Header Injection)是指攻击者通过在响应首部字段内插入换行, 添加任意响应首部或主体的一种攻击。属于被动攻击模式。

向首部主体内添加内容的攻击称为 HTTP 响应截断攻击( HTTP Response Splitting Attack)。

如下所示, Web 应用有时会把从外部接收到的数值,赋给响应首部

字段 Location 和 Set-Cookie。
Location: http://www.example.com/a.cgi?q=12345
Set-Cookie: UID=12345
* 12345就是插入值

HTTP 首部注入可能像这样,通过在某些响应首部字段需要处理输出值的地方,插入换行发动攻击。

HTTP 首部注入攻击有可能会造成以下一些影响。

  • 设置任何 Cookie 信息
  • 重定向至任意 URL
  • 显示任意的主体(HTTP 响应截断攻击)

1.5 邮件首部注入攻击

邮件首部注入( Mail Header Injection)是指 Web 应用中的邮件发送功能,攻击者通过向邮件首部 To 或 Subject 内任意添加非法内容发起的攻击。利用存在安全漏洞的 Web 网站,可对任意邮件地址发送广告邮件或病毒邮件。

1.6 目录遍历攻击

目录遍历( Directory Traversal)攻击是指对本无意公开的文件目录,通过非法截断其目录路径后, 达成访问目的的一种攻击。这种攻击有时也称为路径遍历( Path Traversal)攻击。通过 Web 应用对文件处理操作时,在由外部指定文件名的处理存在疏漏的情况下, 用户可使用 .../ 等相对路径定位到 /etc/passed 等绝对路径上,因此服务器上任意的文件或文件目录皆有可能被访问到。这样一来,就有可能非法浏览、篡改或删除 Web 服务器上的文件。固然存在输出值转义的问题, 但更应该关闭指定对任意文件名的访问权限。

1.7 运程文件包含漏洞

远程文件包含漏洞( Remote File Inclusion)是指当部分脚本内容需要从其他文件读入时, 攻击者利用指定外部服务器的 URL 充当依赖文件,让脚本读取之后,就可运行任意脚本的一种攻击。

这主要是 PHP 存在的安全漏洞,对 PHP 的 include 或 require 来说,这是一种可通过设定,指定外部服务器的 URL 作为文件名的功能。但是,该功能太危险, PHP5.2.0 之后默认设定此功能无效。固然存在输出值转义的问题,但更应控制对任意文件名的指定。

2、因设置或者设计上的缺陷引发的安全漏洞

2.1 强制浏览

强制浏览( Forced Browsing)安全漏洞是指,从安置在 Web 服务器的公开目录下的文件中,浏览那些原本非自愿公开的文件。

强制浏览有可能会造成以下一些影响。

  • 泄露顾客的个人信息等重要情报
  • 泄露原本需要具有访问权限的用户才可查阅的信息内容
  • 泄露未外连到外界的文件

对那些原本不愿公开的文件, 为了保证安全会隐蔽其 URL。可一旦知道了那些 URL,也就意味着可浏览 URL 对应的文件。直接显示容易推测的文件名或文件目录索引时, 通过某些方法可能会使 URL 产生泄露。
文件目录一览

http://www.example.com/log/

通过指定文件目录名称,即可在文件一览中看到显示的文件名。

容易被推测的文件名及目录名

http://www.example.com/entry/entry_081202.log

文 件 名 称 容 易 推 测(按 上 面 的 情 况, 可 推 出 下 一 个 文 件 是entry_081203.log)

备份文件

http://www.example.com/cgi-bin/entry.cgi(原始文件)
http://www.example.com/cgi-bin/entry.cgi~( 备份文件)
http://www.example.com/cgi-bin/entry.bak( 备份文件)

由编辑软件自动生成的备份文件无执行权限, 有可能直接以源代码形式显示

经认证才可显示的文件

直接通过 URL 访问原本必须经过认证才能在 Web 页面上使用的文件( HTML 文件、图片、 PDF 等文档、 CSS 以及其他数据等)

2.2 不正确的错误消息处理

不正确的错误消息处理( Error Handling Vulnerability)的安全漏洞是指, Web 应用的错误信息内包含对攻击者有用的信息。与 Web 应用有关的主要错误信息如下所示。

Web 应用抛出的错误消息
数据库等系统抛出的错误消息

Web 应用不必在用户的浏览画面上展现详细的错误消息。对攻击者来说,详细的错误消息有可能给他们下一次攻击以提示。

2.3 开放重定向

开放重定向( Open Redirect)是一种对指定的任意 URL 作重定向跳转的功能。而于此功能相关联的安全漏洞是指,假如指定的重定向URL 到某个具有恶意的 Web 网站,那么用户就会被诱导至那个 Web网站。

3、因会话管理疏忽引发的安全漏洞

会话管理是用来管理用户状态的必备功能,但是如果在会话管理上有所疏忽,就会导致用户的认证状态被窃取等后果。

3.1 会话劫持

会话劫持( Session Hijack)是指攻击者通过某种手段拿到了用户的会话 ID,并非法使用此会话 ID 伪装成用户,达到攻击的目的。

Web常见的攻击技术第5张

具备认证功能的 Web 应用,使用会话 ID 的会话管理机制,作为管理认证状态的主流方式。 会话 ID 中记录客户端的 Cookie 等信息,服务器端将会话 ID 与认证状态进行一对一匹配管理。

下面列举了几种攻击者可获得会话 ID 的途径。

  • 通过非正规的生成方法推测会话 ID
  • 通过窃听或 XSS 攻击盗取会话 ID
  • 通过会话固定攻击(Session Fixation)强行获取会话 ID

3.2 会话固定攻击

对以窃取目标会话 ID 为主动攻击手段的会话劫持而言,会话固定攻击( Session Fixation)攻击会强制用户使用攻击者指定的会话 ID,属于被动攻击。

3.3 跨站点请求伪造

跨站点请求伪造( Cross-Site Request Forgeries, CSRF)攻击是指攻击者通过设置好的陷阱, 强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击。

跨站点请求伪造有可能会造成以下等影响。

  • 利用已通过认证的用户权限更新设定信息等
  • 利用已通过认证的用户权限购买商品
  • 利用已通过认证的用户权限在留言板上发表言论

4、其他安全漏洞

4.1 密码破解

密码破解攻击( Password Cracking)即算出密码,突破认证。攻击不仅限于 Web 应用,还包括其他的系统(如 FTP 或 SSH 等),本节将会讲解对具备认证功能的 Web 应用进行的密码破解。

密码破解有以下两种手段。

  1. 通过网络的密码试错
  2. 对已加密密码的破解(指攻击者入侵系统,已获得加密或散列处理 的密码数据的情况)

除去突破认证的攻击手段, 还有 SQL 注入攻击逃避认证,跨站脚本攻击窃取密码信息等方法。

通过网络进行密码试错

对 Web 应用提供的认证功能,通过网络尝试候选密码进行的一种攻击。主要有以下两种方式。

  1. 穷举法
  2. 字典攻击

穷举法

穷举法( Brute-force Attack,又称暴力破解法)是指对所有密钥集合构成的密钥空间( Keyspace)进行穷举。即,用所有可行的候选密码对目标的密码系统试错,用以突破验证的一种攻击。

比如银行采用的个人识别码是由“4 位数字”组成的密码,那么就要从 0000~9999 中的全部数字逐个进行尝试。这样一来,必定在候选的密码集合中存在一个正确的密码,可通过认证。

因为穷举法会尝试所有的候选密码, 所以是一种必然能够破解密码的攻击。但是,当密钥空间很庞大时,解密可能需要花费数年,甚至千年的时间,因此从现实角度考量,攻击是失败的。

字典攻击

字典攻击是指利用事先收集好的候选密码(经过各种组合方式后存入字典),枚举字典中的密码,尝试通过认证的一种攻击手法。

还是举银行采用个人识别码是“4 位数字”的密码的例子,考虑到用户使用自己的生日做密码的可能性较高, 于是就可以把生日日期数值化,如将 0101~1231 保存成字典,进行尝试。

与穷举法相比, 由于需要尝试的候选密码较少,意味着攻击耗费的时间比较短。 但是,如果字典中没有正确的密码,那就无法破解成功。因此攻击的成败取决于字典的内容。

Web常见的攻击技术第6张

利用别处泄露的 ID·密码进行攻击,字典攻击中有一种利用其他 Web 网站已泄露的 ID 及密码列表进行的攻击。很多用户习惯随意地在多个 Web 网站使用同一套 ID 及密码,因此攻击会有相当高的成功几率。

对已加密密码的破解
Web 应用在保存密码时,一般不会直接以明文的方式保存,通过散列函数做散列处理或加 salt 的手段对要保存的密码本身加密。那即使攻击者使用某些手段窃取密码数据, 如果想要真正使用这些密码,则必须先通过解码等手段,把加密处理的密码还原成明文形式。

Web常见的攻击技术第7张

从加密过的数据中导出明文通常有以下几种方法。

  1. 通过穷举法·字典攻击进行类推
  2. 彩虹表
  3. 拿到密钥
  4. 加密算法的漏洞

通过穷举法·字典攻击进行类推

针对密码使用散列函数进行加密处理的情况,采用和穷举法或字典攻击相同的手法, 尝试调用相同的散列函数加密候选密码,然后把计算出的散列值与目标散列值匹配,类推出密码。
Web常见的攻击技术第8张

彩虹表

彩虹表( Rainbow Table)是由明文密码及与之对应的散列值构成的一张数据库表, 是一种通过事先制作庞大的彩虹表,可在穷举法 • 字典攻击等实际破解过程中缩短消耗时间的技巧。 从彩虹表内搜索散列值就可以推导出对应的明文密码。

Web常见的攻击技术第9张

为了提高攻击成功率,拥有一张海量数据的彩虹表就成了必不可少的条 件。 例 如 在 Free Rainbow Tables 网 站 上( http://www.freerainbowtables.com/en/tables2/)公布的一张由大小写字母及数字全排列的 1~8 位字符串对应的 MD5 散列值构成的彩虹表,其大小约为 1050 吉字节。

拿到密钥

使用共享密钥加密方式对密码数据进行加密处理的情况下,如果能通过某种手段拿到加密使用的密钥,也就可以对密码数据解密了。

加密算法的漏洞

考虑到加密算法本身可能存在的漏洞,利用该漏洞尝试解密也是一种可行的方法。但是要找到那些已广泛使用的加密算法的漏洞,又谈何容易,因此困难极大,不易成功,而 Web 应用开发者独立实现的加密算法,想必尚未经过充分的验证,还是很有可能存在漏洞的。

4.2 点击劫持

点击劫持( Clickjacking)是指利用透明的按钮或链接做成陷阱,覆盖在 Web 页面之上。然后诱使用户在不知情的情况下,点击那个链接访问内容的一种攻击手段。这种行为又称为界面伪装( UI Redressing)。

已设置陷阱的 Web 页面,表面上内容并无不妥,但早已埋入想让用户点击的链接。 当用户点击到透明的按钮时,实际上是点击了已指定透明属性元素的 iframe 页面。

4.3 DoS 攻击

DoS 攻击( Denial of Service attack)是一种让运行中的服务呈停止状态的攻击。 有时也叫做服务停止攻击或拒绝服务攻击。 DoS 攻击的对象不仅限于 Web 网站,还包括网络设备及服务器等。

主要有以下两种 DoS 攻击方式。

  1. 集中利用访问请求造成资源过载,资源用尽的同时,实际上服务也 就呈停止状态。
  2. 通过攻击安全漏洞使服务停止。

其中,集中利用访问请求的 DoS 攻击,单纯来讲就是发送大量的合法请求。服务器很难分辨何为正常请求,何为攻击请求,因此很难防止 DoS 攻击。

Web常见的攻击技术第10张

多台计算机发起的 DoS 攻击称为 DDoS 攻击( Distributed Denial of Service attack)。 DDoS 攻击通常利用那些感染病毒的计算机作为攻击者的攻击跳板。

4.4 后门程序

后门程序( Backdoor)是指开发设置的隐藏入口,可不按正常步骤使用受限功能。利用后门程序就能够使用原本受限制的功能。

通常的后门程序分为以下 3 种类型。

  1. 开发阶段作为 Debug 调用的后门程序
  2. 开发者为了自身利益植入的后门程序
  3. 攻击者通过某种方法设置的后门程序

可通过监视进程和通信的状态发现被植入的后门程序。 但设定在Web 应用中的后门程序,由于和正常使用时区别不大,通常很难发现。

【参考资料】
《图解HTTP》

版权归原作者所有,如有侵权请立即与博主联系,将会及时处理。

免责声明:文章转载自《Web常见的攻击技术》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇微信小程序页面导航功能Unity中Mesh分解与边缘高亮加上深度检测下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

前端应该知道的Web Components

前端组件化的痛点 在前端组件化横行的今天,确实极大的提升了开发效率。不过有一个问题不得不被重视,拟引入的这些html、css、js代码有可能对你的其他代码造成影响。虽然我们可以通过命名空间、闭包等一系列措施来加以防备,不过还是存在这些隐患。为了解决这些问题,有一个基本大家遗忘的技术还是可以了解一下的,那就是Web Components。 Web Compo...

中国商用密码生产企业和商用密码产品及标准

目录 中国商用密码生产企业和商用密码产品及标准 商用密码生产企业 北京 上海 天津 山东 广东 河南 湖北 吉林 江苏 江西 宁夏 山西 四川 浙江 陕西 商用密码产品 密码芯片 密码卡 服务器密码机 商用密码(国密)标准 参考 中国商用密码生产企业和商用密码产品及标准 商用密码生产企业 北京 北京-中安网脉(北京)技术股份有限...

WebService与CXF

一:Webservice  1:WebService是干什么的?有什么用? 一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用规范。 比如,amazon,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以webservice服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能,这样扩展了自己系统的市场占有率 从表面上看,W...

OpenSSH 命令注入漏洞(CVE202015778)

最近看好多大佬都在复现这个OpenSSH命令注入漏洞,作为菜鸡的我也要跟随大佬的脚步,也来复现一波(不分析漏洞原理,本人是菜鸡,能力不足)。再写这篇博客很不幸的我(电脑蹦了重启,写好的都没保存),不放弃继续重新来一遍。 介绍 2020年6月9日,研究人员Chinmay Pandya在Openssh中发现了一个漏洞,于7月18日公开。OpenSSH的8.3...

HTTP.SYS远程代码执行漏洞测试(ms15-034)

1.HTTP.SYS远程代码执行漏洞简介 首先漏洞编号:CVE-2015-1635(MS15-034 ) 远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HTTP 请求时会导致此漏洞。 成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码。 利用HTTP.sys的安全漏洞,攻击者只需...

zabbix概述

概述 Zabbix 由 Alexei Vladishev 创建,目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务。 Zabbix 是一个企业级分布式开源监控解决方案。 Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。...