最早接触安全漏洞问题是在实习的时候,当时处于啥也不清楚的情况,师兄给了我一个应用安全团队扫描出安全问题列表,当时也没多想,就按照上面的说明把问题修复了,后来今年断断续续的出现了几次XSS的线上问题,这种漏洞如果被外部利用,都是很严重的问题,之前读《白帽子讲web安全》能够了解了一些XSS的知识,现在总结一下,好记性不如烂笔头啊。
(一)什么是XSS漏洞?
cross sitescript跨站脚本攻击,为了避免和css重复,就叫XSS了,是客户端脚本安全中的头号大敌。
(二)XSS有哪些类型?
反射型:简单的描述就是把用户输入的数据反射给浏览器,这个数据可能是Html代码或者js代码,反射后让浏览器去执行。
存储型:把用户输入的数据(比如恶意的js代码)存储在服务器端,具有很强的稳定性,危害时间长。
DOM Based XSS:这种不是按照存储在哪里来划分的,可以说是反射型,由于历史原因,归为一类,通过改变DOM结构形成的XSS称之为DOM Based。
(三)XSS的危害有哪些?
1、劫持Cookie,cookie中一般加密保存了用户的登录凭证,浏览器发起的所有请求都会自动带上,如果Cookie被盗取,也就是说用户不用通过密码而直接登录你的账户。
Cookie设置HttpOnly属性,能够起到四两拨千金的作用,另外cookie可以绑定用户客户端信息,例如ip或者umid信息。
2、构建Get和Post请求,如果cookie按照上述进行了设置,则无法直接劫持cookie来使用了,但是XSS可以在javascript中构建get或者post请求,来实现自己的攻击。
例如下面的一段代码:
var img =document.createElement(‘img’);
img.src=”http://blog.cccc.com?m=delete&id=212112”;
document.body.appendChild(img);
只要让用户执行这段脚本,就能发起get请求,攻击者通过XSS诱导用户来执行。
XSS的攻击过程都是在浏览器通过执行javascript脚本自动进行,缺少与用户交互的过程。例如在POST的请求中,如果需要输入验证码,Js代码无法解析验证码,攻击也就无法实现。但是针对验证码这种情况,如果XSS可以通过把验证码的图片发到远端攻击服务器,服务器解析验证码然后把结果返回给js代码,js获取后继续进行攻击,不过就是成本有点高。
3、XSS钓鱼
上面模拟用户的POST请求貌似成本有点高,攻击者可以将XSS和钓鱼结合在一起,例如通过javascript代码模拟出网站的登录框,用户输入用户名和密码后,XSS将这些信息发送到服务器端,用来进行攻击。
4、获取用户系统信息
此外XSS还可以识别用户的浏览器信息、用户安装的软件以及用户真实的IP等信息。
5、XSS Wrom
这是XSS的一种终极利用方式,破坏力和影响力是巨大的,一般来说,用户直接发生交互行为的页面,如果存在存储型XSS,则比较容易发起Wrom攻击。
(四)如何防御XSS呢?
1、给关键的Cookie设置HttpOnly属性
这样能够避免js读取Cookie信息(设置后有助于缓解XSS,但是XSS除了劫持Cookie之外,还可以模拟用户的身份进行操作)。
2、进行输入检查
如果仅仅在客户端通过JS来做输入校验,有可能会被攻击者绕过,WEB开发中的普遍做法是同时在客户端和服务端做校验。这种输入检查的方式也称之为XSS Filter。
3、输出检查
一般说来,除了富文本输出之外,在变量输出到HTML页面时,可以使用编码或者转义的方式来防御XSS攻击。
4、防御DOM BasedXSS
前面提到的集中方法,对于这种类型不太适用,需要特别对待,那如何才能防御呢?
首先是$var输出到<script>是,应该执行一次javasriptEncode,其次在doument.write输出到HTML页面时,如果是输出到事件或者脚本,可以再做一次javaScriptEncode,如果是输出到HTML内容或者属性,则可以做一次HtmlEncode。
上面提到的这些防御方法都属于安全生产的环节,也就是说实在开发同学写代码的时候要特别注意,这种是否做的规范,可以通过工具扫描代码的方式来实现,也就是白盒测试,如果代码没有做输入或者输出检查,则发报告提示开发来进行修改。但是有些场景白盒没法覆盖到,例如输出jsonp类型的接口,对于callback参数的原味输出,白盒有时候就扫不出来,这时候,可以通过黑盒测试工具,模拟入参的各种情况,也就是穷举,来构造,如果发生了XSS请求,则发出报告即可。
分享到:
相关推荐
"xss-labs-master.rar" 提供了一个针对XSS漏洞的专项练习平台,旨在帮助初学者及安全爱好者提升对XSS攻击的理解和防御能力。这个靶机资源共分为二十个关卡,由浅入深,逐步引导用户掌握XSS攻防的核心技巧。 一、XSS...
**XSS注入详解** XSS(Cross Site Scripting),即跨站脚本攻击,是一种常见的Web...在解决每个挑战的过程中,参与者不仅可以掌握如何识别和利用XSS漏洞,还能学习如何有效地预防这类攻击,从而提高Web应用的安全性。
这些文件很可能是设置了一系列的条件和陷阱,要求学习者找出并利用潜在的XSS漏洞。例如,"level9.php"可能涉及到DOM-based XSS,"level13.php"可能涉及存储型XSS,每个级别都会引入不同的攻击场景和技术。 最后,...
保存型XSS漏洞---------问题代码--保存型XSS漏洞 本站点请求漏洞--------问题代码--本站点请求漏洞 反射型XSS漏洞---------问题代码--反射型XSS漏洞 跨站点请求漏洞--------问题代码--跨站点请求漏洞 重定向漏洞----...
动态站点会受到一种名为“跨站脚本攻击”(Cross Site Scripting, 安全专家们通常将其缩写成XSS,原本应当是css,但为了和层叠样式表(Cascading Style Sheet,CSS )有所区分,故称XSS)的威胁,而静态站点则完全不受...
xss xss漏洞 xss漏洞 xss漏洞 xss漏洞 xss漏洞
前端顽疾--XSS 漏洞分析与解决 一、前端顽疾--XSS 漏洞分析 XSS 漏洞是一种常见的前端安全问题,指的是攻击者在 Web 应用程序中注入恶意脚本,以欺骗用户或窃取用户信息。XSS 漏洞的危害非常高,黑客可以通过 XSS ...
**XSS漏洞详解:搜索框的安全隐患** XSS(Cross-site scripting)是一种常见的网络安全漏洞,源于Web应用程序未能正确处理用户输入的数据,导致攻击者能够注入恶意脚本,进而影响其他用户的浏览器。这种漏洞最早...
【DedeCMS 存储型 XSS 漏洞1】详解 DedeCMS 是一款广泛使用的基于PHP的开源网站管理系统,其特色在于提供了一个简洁易用的后台管理界面,帮助企业或个人快速构建网站。然而,如同任何软件一样,DedeCMS 也存在安全...
XSS漏洞扫描工具和技术包括自动化的扫描器,如OWASP ZAP、Nessus、Burp Suite等,它们能够自动探测Web应用中的潜在XSS漏洞。这些工具会模拟攻击者的操作,发送带有测试脚本的请求,并分析响应以确认是否存在XSS漏洞...
总之,SQL注入和XSS漏洞的修复需要开发者具备良好的安全意识,并在编程时遵循最佳实践。通过使用预编译语句、输入验证和内容转义,我们可以大大降低这些风险,保护用户的个人信息和系统的完整性。在实际项目中,定期...
百度编辑器解决xss漏洞
XSS(Cross-Site Scripting)扫描器是网络安全领域中的一种重要工具,它主要用于检测Web应用程序是否存在XSS漏洞。XSS Scanner 1.0作为一款专门的XSS挖掘工具,可以帮助安全研究人员和开发者识别并修复可能导致敏感...
JavaWeb配置XSSProject是为了有效防止XSS(跨站脚本攻击)这一常见的网络安全问题。XSS攻击允许攻击者在用户的浏览器中注入恶意脚本,可能导致数据泄露、用户会话劫持等严重后果。XSSProject是一个专门针对XSS攻击...
007-Web安全基础3 - XSS漏洞
使用这个开源库的好处在于,它可以帮助开发者遵循"防御性编程"的原则,减少安全漏洞的出现。同时,由于是开源的,开发者可以查看其源代码,理解过滤逻辑,并参与到项目的改进中去。社区的支持也意味着该库会随着新的...