XSS系统学习

本文详细介绍了XSS(跨站脚本攻击)的原理、类型、常见场景及其危害,包括反射型和存储型XSS。同时,讨论了DOM型XSS的特点,并列举了多种XSS注入方法。此外,文章提供了白盒审计中的测试代码示例,并阐述了如何防范XSS攻击,包括输入验证、数据消毒、HTTPOnly标志以及Content Security Policy等策略。
摘要由CSDN通过智能技术生成

跨站脚本攻击,本质是HTML注入,输出问题导致的js代码被执行;有要输出一个变量并且我们可以控制输出的这个变量,针对用户层面的攻击

跨站脚本攻击—XSS(Cross Site Script),是指攻击者通过在Web页面中写入恶意脚本,造成用户在浏览页面时,控制用户浏览器进行操作的攻击方式。

假设,在一个服务端上,有一处功能使用了这段代码,他的功能是将用户输入的内容输出到页面上,很常见的一个功能。但是假如,这里输入的内容是一段经过构造的js。那么在用户再次访问这个页面时,就会获取使用js在用户的浏览器端执行一个弹窗操作。通过构造其他相应的代码,攻击者可以执行更具危害的操作。

如何发现:当用户输入的某个参数的全部或者其中的一部分,经过服务器时未做任何的过滤与修改,原封不动的出现在源码里,该参数就可能存在XSS漏洞

尽可能找到一切用户可控并且能够输出在页面代码中的地方,比如下面这些:

  • URL的每一个参数
  • URL本身
  • 表单
  • 搜索框

常见业务场景

  • 重灾区:评论区、留言区、个人信息、订单信息等
  • 针对型:站内信、网页即时通讯、私信、意见反馈
  • 存在风险:搜索框、当前目录、图片属性等

反射型:可能会出现在搜索界面,恶意代码存放在URL中,插入点是HTML

存储型:恶意代码存储在数据库端,如个人信息或者发表文章的地方。插入点是HTML

DOM树:DOM可以被认为是一种通过将页面元素以对象的树形方式表现,以便由Javascript组织处理的实现方法

DOM型XSS:存储在后端数据库/前端/URL,插入点是前端JS代码——(DOM型需要对JS有一定的了解,我打算等后期学完JS后再来研究DOM型的问题

DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。

 

XSS常用的注入方法:

  • 在 HTML 中内嵌的文本中,恶意内容以 script 标签形成注入。
  • 在内联的 JavaScript 中,拼接的数据突破了原本的限制(字符串,变量,方法名等)。
  • 在标签属性中,恶意内容包含引号,从而突破属性值的限制,注入其他属性或者标签。
  • 在标签的 href、src 等属性中,包含 javascript: 等可执行代码。
  • 在 onload、onerror、onclick 等事件中,注入不受控制代码。
  • 在 style 属性和标签中,包含类似 background-image:url("javascript:..."); 的代码(新版本浏览器已经可以防范)。
  • 在 style 属性和标签中,包含类似 expression(...) 的 CSS 表达式代码(新版本浏览器已经可以防范)。

1.反射型:

在白盒审计中, 我们首先要寻找带参数的输出函数,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值