【web安全】跨站攻击思路整理

简介:

接触跨站攻击一段时间了,有了一些认识,现在先按自己的理解理一下思路。后续有时间在针对里面详细的攻击方法做详解。

一.跨站脚本介绍

跨站脚本攻击(XSS)是一种攻击技术,是攻击者将恶意代码插入到回应给用户浏览器的代码中的一种实例。跨站脚本的几个特点:

受害者:跨站作用在客户端,而不是服务端,即受害者是客户端而不是服务器。

跨站类型:反射式;持久式;基于DOM式;其它式(包括嵌入FLASH,PDF等其它载体)。

1. 非持久型XSS漏洞一般存在于URL参数中,需要访问黑客构造好的特定URL才能触发漏洞。

2. 持久型XSS漏洞一般存在于富文本等交互功能,如发帖留言等,黑客使用的XSS内容经正常功能进入数据库持久保存。

3. DOM XSS漏洞,也分为持久和非持久型两种,多是通过javascript DOM接口获取地址栏、referer或编码指定HTML标签内容造成。

4. FLASH,PDF等其他第三方文件所造成的特殊XSS漏洞,同样按应用功能也分为持久和非持久型。

对跨站三种类型的理解:客户端执行了 客户端提交给服务端,服务端返回的恶意代码。

反射型:服务端提取用户的输入,未做严格过滤,直接返回给客户端,客户端浏览器执行了代码。

1)对数据未做严格净化返回给客户端。

2)实现攻击需要点击攻击者构造的链接,每次点击完成一次攻击,因为不能保存。

存储型:

1)对数据未做严格净化返回给客户端,客户端执行了恶意代码。

2)攻击者构造链接完成攻击,受害者点击正常的链接,就会受影响。因为代码已经被保存。

DOM型:

1)对数据未做严格净化返回给客户端,客户端执行了恶意代码。

2)服务端返回给客户端的是同样的代码(js代码),在客户执行的时候才出问题,在服务端的响应中是没有恶意代码的。DOM型可以是反射型或者存储型,在于js代码是否存储输入的值。

 

几个区别:

反射式和存储式的区别:

1)服务端对数据的处理方式:一个是保存后返回,一个是直接返回。

2)出现的触发点不一样:反射一般出现在返回错误信息等,而存储一般

出现在填写表单等。(本质是第一个的原因,看哪些情况是要保存数据的,哪些情况是不保存数据的)

3)是否是一次性的,反射是一次性,每次都要点。 存储不是。(本质也是第一个原因,因为存储保存了代码)。

所以综上,区别其实就一个,就是服务端有没有保存数据,其他就是根据特点得出的。

DOM式和上面的两个的区别:

DOM是因为服务端处理数据用的是js代码,不会对数据进行处理

而是到达浏览器后才处理的,所以在响应代码中是没有恶意代码的。它也可以是保存或者反射,在于js代码中有没有保存输入的值。

 

二.CST、CFS、CSRF

2.1 CST

CST攻击是一种使用XSS和HTTP TRACE功能来进行攻击的方式。它是一种攻击技巧,可以利用它避开HttpOnly对cookie提供的保护,使之能够通过客户端JavaScript获取已经标记为HttpOnly的cookie值。

正常情况下,客户端脚本(如JS脚本)是可以通过document.cookie函数获得,这样如果有XSS跨站漏洞,cookie很容易被盗取。浏览器有一个安全策略,通过设置cookie的httponly属性,这样客户端脚本就不能通过document.cookie访问该cookie,即时有跨站漏洞,也不能盗取用户cookie。(注意:httponly属性对正常的HTTP请求并没有影响,即时Cookie设置了HTTPONLY属性,当用户浏览有效域中的站点时候,这个Cookie仍然被自动发送,只是不能使用脚本来访问该Cookie。(解释HTTPONLY)

一般客户端向服务器请求是利用HTTP GET和POST方式,但那只是常见,还有其它方式(详细参考RFC2616文档)。其中HTTP TRACE也是一种方式,这种向服务端请求信息主要用于调试web服务器连接用。如果请求有效,则在响应中会在实体中包含整个请求消息。(解释HTTP TRACE)

与XSS联系和区别:

联系:CST是XSS的一种子类,也属于XSS跨站漏洞。

区别:浏览器请求的方式不一样,普通的XSS一般通过GET和POST方式在页面上输入攻击脚本实现,但是CST如果要在页面上输入,需要找到会通过TRACE发送的输入点,一般是自己构造攻击报文在TRACE方法中进行发送。

测试相关:

由于普通的XSS攻击报文可以通过GET或者POST被提交,而CST则要通过TRACE来提交,由于比较少用,目前还未搜索到有页面输入框可以使用TRACE提交的。因此对它的测试需要注意,攻击脚本中需要自己提供发送函数,比如使用XMLHttpRequest发送请求(当然普通的XSS攻击也需要覆盖用XMLHTTPRequest发送GET、POST请求)。

测试总结:对CST的测试只需要将普通XSS的攻击特征脚本放在HTTP的TRACE位置发送出去就可以。

2.2 CFS

在浏览器的安全机制中,客户端脚本是不能访问不同服务器或域名的页面相关信息。而通过HTML的frame/iframe可以在页面中包含第三方服务器的页面,这样攻击者可以利用主页面的脚本程序获取到frame/iframe包含的第三方服务器的信息。

同源策略:客户端脚本是不能访问不同服务器或域名的页面相关信息,但是也有例外,可以通过设置document.domain解决,在两个不同域名的客户端脚本都设置document.domain为同个父域。(注意:两个域是要拥有同个父域这个方法才有效果),然后在主页面加载FRAME/IFRAME页面实现,主页就可以调用框架内的页面的元素。

与XSS的联系和区别:

联系:CFS是XSS的一种攻击子类,也属于XSS跨站漏洞。

区别:CFS主要利用HTML中的FRAME/IFRAME来实现跨站攻击。将他单独出来,主要是由于他攻击后效果不同,有一些特殊的场景。

测试相关:

CFS的测试和XSS的测试一样,被包含在XSS测试中,是它的一个子集,特征为frame和iframe关键字。如果针对性测试,就是对frame和iframe进行各种编码。

2.3 CSRF 

CSRF:cross site request forgery,跨站请求伪造。是一种将受害用户欺骗到包含有恶意HTTP请求的页面的攻击方式,这种攻击方式的危害性在于它继承了受害用户的实体身份和权限,即盗用了受害人的身份以其的名义进行非法的操作,比如篡改用户资料、用户密码、以及购买物品等。通俗的说,CSRF攻击是在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在未授权的情况下执行受害者权限保护之下的操作。

CSRF(XSRF)的本质:服务端对客户端的COOKIE校验不严格,导致被攻击者盗用。

 

CSRF攻击方式

1)情况一:站点B和站点A是不同站点,站点B中的请求代码URL没有包含脚本,而是正常的请求情况,只是利用了浏览器而浏览器不知道而已。这个时候用户点击恶意网站B发送给站点A的报文 和 用户真实发送给站点A的报文只有在referer字段有所区别。Referer字段会显示发送的起始域,也就是站点B。

2)情况二:站点B和站点A重合,这个时候利用站点B的存储XSS漏洞使得用户发送请求给站点A的其它页面。

3)情况三:站点B和站点A是不同站点,但是站点B中的请求的代码含有JS代码来实现相应功能。同时站点A有XSS漏洞,会使得传给站点A的代码返回到客户端执行。

以上三种情况仅情况二是比较特殊的,测试时候需要构造referer字段与用户登录的时候域不一样的域名,其它两种同XSS攻击无区别。

 

与XSS的联系和区别:

联系:CSRF可以利用XSS实现更有用的攻击(经常也这么用)。上述情

二和情况三就是利用XSS漏洞的情况。

区别:CSRF不是XSS的子类,他们的本质问题不一样。XSS本质是服务端对输入过滤不严而后输出的时候将客户端的脚本再输出。CSRF是服务端对用户的身份认证不严格(cookie等),使得攻击者冒充用户达到攻击目的。

测试相关:

对于CSRF测试,两个方面测试:

1)包括XSS测试,同XSS测试,重点在于请求方法。主要有两种:XMLHTTPRequest和带有SRC属性的标签(frame、iframe、img、input)等。

2)测试Referer域的URL是其它地址,非请求的本URL地址。

 

三. 跨站攻击整个学习思路:

     跨站本质-->跨站类型分析-->有效载荷内容(就是能完成什么攻击,攻击效果上)-->载荷传送方式--》检测漏洞方式 

CST和CFS都是在有效载荷内容上的区别。

CSRF本质跟XSS不一样,经常是利用XSS漏洞的功能完成载荷更复杂的功能,达到更好的攻击效果。

 

 

 

 

 本文转自wzhj132 51CTO博客,原文链接:http://blog.51cto.com/wzhj132/781626

 

 

 

 


相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
1月前
|
安全
网易web安全工程师进阶版课程
《Web安全工程师(进阶)》是由“ i春秋学院联合网易安全部”出品,资深讲师团队通过精炼的教学内容、丰富的实际场景及综合项目实战,帮助学员纵向提升技能,横向拓宽视野,牢靠掌握Web安全工程师核心知识,成为安全领域高精尖人才。 ## 学习地址
23 6
网易web安全工程师进阶版课程
|
2天前
|
SQL 存储 前端开发
< 今日份知识点:web常见的攻击方式(网络攻击)有哪些?如何预防?如何防御呢 ? >
网络安全威胁日益严重,2017年的永恒之蓝勒索病毒事件揭示了网络攻击的破坏力。为了防御Web攻击,了解攻击类型至关重要。Web攻击包括XSS、CSRF和SQL注入等,其中XSS分为存储型、反射型和DOM型,允许攻击者通过注入恶意代码窃取用户信息。防止XSS攻击的方法包括输入验证、内容转义和避免浏览器执行恶意代码。CSRF攻击则伪装成用户执行操作,防范措施包括同源策略和CSRF Token验证。SQL注入则通过恶意SQL语句获取数据,预防手段包括输入验证和使用预编译语句。面对网络威胁,加强安全意识和实施防御策略是必要的。
|
13天前
|
云安全 数据采集 安全
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
阿里云提供两种关键安全产品:Web应用防火墙和云防火墙。Web应用防火墙专注网站安全,防护Web攻击、CC攻击和Bot防御,具备流量管理、大数据防御能力和简易部署。云防火墙是SaaS化的网络边界防护,管理南北向和东西向流量,提供访问控制、入侵防御和流量可视化。两者结合可实现全面的网络和应用安全。
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
|
14天前
|
SQL 安全 PHP
CTF--Web安全--SQL注入之Post-Union注入
CTF--Web安全--SQL注入之Post-Union注入
|
1月前
|
安全 测试技术 网络安全
Web安全基础入门+信息收集篇
学习信息收集,针对域名信息,解析信息,网站信息,服务器信息等;学习端口扫描,针对端口进行服务探针,理解服务及端口对应关系;学习WEB扫描,主要针对敏感文件,安全漏洞,子域名信息等;学习信息收集方法及实现安全测试,能独立理解WEB架构框架,树立渗透测试开展思路!
18 0
Web安全基础入门+信息收集篇
|
1月前
|
安全 数据库 开发工具
Django实战:从零到一构建安全高效的Web应用
Django实战:从零到一构建安全高效的Web应用
48 0
|
1月前
|
安全 中间件 Go
Go语言Web服务性能优化与安全实践
【2月更文挑战第21天】本文将深入探讨Go语言在Web服务性能优化与安全实践方面的应用。通过介绍性能优化策略、并发编程模型以及安全加固措施,帮助读者理解并提升Go语言Web服务的性能表现与安全防护能力。
|
2月前
|
存储 JSON 安全
解密Web安全:Session、Cookie和Token的不解之谜
解密Web安全:Session、Cookie和Token的不解之谜
74 0
|
3月前
|
SQL 安全 Go
跨越威胁的传说:揭秘Web安全的七大恶魔
跨越威胁的传说:揭秘Web安全的七大恶魔
跨越威胁的传说:揭秘Web安全的七大恶魔
|
3月前
|
安全 网络安全 数据安全/隐私保护
探索Web安全:强化防护与漏洞扫描技术
在当今数字化时代,Web安全已经成为企业和个人必须关注的重要问题。本文将介绍Web安全的重要性,以及如何通过强化防护与漏洞扫描技术来保护网站和应用程序的安全。同时,还将探讨一些最新的Web安全威胁和应对策略,帮助读者更好地了解和应对Web安全挑战。
30 0