免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。
目录
xss介绍
跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的
XSS是一种网站应用程序的安全漏洞攻击,是代码注入的一种。
它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。
这类攻击通常包含了HTML以及用户端脚本语言。
XSS攻击通常指的是通过利用网页开发时留下的漏洞,
通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。
XSS跨站漏洞分为大致三种:储存型XSS,反射型XSS,和DOM型XSS,一般都是由于网站对用户输入的参数过滤不严格而调用浏览器的JS而产生的。
一、基本情况
涉及主体
涉及三方,即攻击者、客户端与网站。
攻击目标
为了盗取客户端的cookie或者其他网站用于识别客户端身份的敏感信息,获取合法用户信息后,攻击者甚至可以假冒最终用户与网站进行交互。
漏洞成因
动态网页的Web应用对用户提交请求参数未做充分的检查过滤,允许用户在提交的数据中掺入代码,然后未加编码地输出到第三方用户的浏览器,这些攻击者恶意提交的代码会被受害用户的浏览器解释执行。
二、XSS的类型
按持久性分类
非持久型xss攻击
是一次性的,仅对当次的页面访问产生影响。要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户浏览器执行,从而达到攻击目的。
持久型xss攻击
会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。
可细分为:
反射型:经过后端,不经过数据库。例如,新建一个xss.php 文件,当PHP读取参数(如无过滤),若输入js代码(如
scriptalert('hack')/script
)并点击相关按钮,输入的HTML代码会被执行,其数据流向是浏览器 - 后端 - 浏览器。存储型:经过后端,经过数据库。例如在个人信息或发表文章等地方插入代码,如果没有过滤或过滤不严,代码将储存到服务器中,用户访问该页面的时候触发代码执行,这种类型比较危险,容易造成蠕虫、盗窃cookie等情况。
DOM型:不经过后端,DOM - XSS漏洞是基于文档对象模型(DocumentObjeetModel,DOM)的一种漏洞,DOM - XSS是通过url传入参数去控制触发的。
按生效方式分类
构造URL
攻击者通过构造URL的方式构造一个有问题的页面;当其他人点击此页面后,会发现页面出错,或者被暗中执行了某些js脚本,这时攻击行为才真正生效。例如在百度搜索中,如果对输入的特殊参数(如未转义处理的包含脚本的参数)没有处理,就可能执行嵌入的脚本。
发布内容式
在可以发表内容的论坛、讨论区、吧、博客、微博等网站上,用户发表的内容会保存起来并被其他用户浏览。如果保存的内容显示时没有经过正确处理,包含攻击者精心构造内容(如包含恶意脚本的留言),访问该内容的用户就会中招。
蠕虫式
首先发一个有问题的文章,浏览者阅读时会被暗中执行恶意代码,发表一篇新的文章也含有同样的恶意代码。例如在微博上,蠕虫式攻击可能使微博用户主动点击攻击链接后,立刻执行一段有害代码,造成发布一条微博、成为攻击发起人的粉丝、向其他好友发送含同样链接地址的私信等结果。
如何检测网站是否存在XSS漏洞?
手动检测方法
查看代码
一种方法是查看网站的源代码,寻找可能存在漏洞的地方。例如,在ASP程序中,通过
Request
对象获取客户端的变量,如果没有经过htmlEncode
处理,那么这个变量就可能存在XSS漏洞。准备测试脚本
可以准备一些常见的XSS测试脚本,如
<script>alert('XSS')</script>
,并在网页中的文本框或其他可输入数据的地方尝试输入这些脚本。如果这些脚本能够在页面上执行,那么就表明存在XSS漏洞。自动化工具
使用自动化工具
随着互联网安全技术的不断进步,出现了许多自动化工具,可以帮助安全人员发现网站的XSS漏洞。这些工具能够模拟攻击者的行为,发送各种恶意输入,然后观察网站的响应,从而找出网站的XSS漏洞。这种方式可以大大节省安全审计的时间,同时也能够发现更多潜在的漏洞。
安全漏洞扫描工具
安全漏洞扫描工具可以帮助发现网站的安全漏洞,包括XSS漏洞。通过扫描工具,可以对网站进行全面的安全扫描,检查网站的输入输出情况,发现潜在的XSS漏洞,从而提前修复这些漏洞,防范XSS攻击。
安全代码审计
在网站的开发过程中,可以借助安全代码审计来发现XSS安全漏洞。安全代码审计是一种深入分析网站代码,发现潜在安全威胁的方法。通过代码审计,可以找出网站中潜在的输入输出问题,发现潜在的XSS漏洞,从而及时修复这些漏洞,提高网站的安全性。
自动化XSS检测工具推荐
XDT
XDT 是一款基于Python的XSS自动化检测工具。它利用网络爬虫模块获取注入点,通过漏洞检测模块提交恶意负载并分析响应,结果分析模块则生成测试报告。XDT支持反射型和存储型XSS检测,并提供测试案例及DVWA平台的演示。源代码可在GitHub上找到。
XSSer
XSSer 是一个自动的框架,用于检测、利用和报告基于web的应用程序中的XSS漏洞。它支持多种类型的XSS攻击,并且可以自定义攻击载荷。此外,XSSer还支持多线程和分布式扫描,可以提高扫描效率。
XSSValidator
XSSValidator 是一个Burp Suite插件,用于自动化XSS漏洞的检测。它结合了PhantomJS和xss.js 脚本来模拟浏览器行为,检测网站是否存在XSS漏洞。使用XSSValidator,用户可以在Burp Suite中拦截请求,并将页面发送到Intruder进行XSS扫描。
XSSFork
XSSFork 是一款新一代的XSS漏洞探测工具,使用WebKit内核的浏览器PhantomJS来模拟浏览器行为。它分为两个部分,xssfork和xssforkapi,其中xssfork在对网站进行模糊测试时会调用大量的payload。这使得XSSFork能够高效地检测出复杂的XSS漏洞。
总结
以上工具各有特点,选择合适的工具取决于具体的需求和环境。在使用这些工具时,请确保遵守相关法律法规和道德规范,仅在获得授权的情况下对目标网站进行安全测试。