XSS:跨站脚本攻击(前端注入)

发布于 2022-03-16  224 次阅读


前言

前端注入:用户输入的数据被当作前端代码执行。

前端:HTML,CSS,JS

XSS注入百分之九十以上都是当作JS代码执行

XSS攻击目的:窃取目标的Cookie()

通过JS窃取目标cookie: document.cookie

ajax发送数据

https://www.w3school.com.cn/js/js_ajax.asp

后端代码是在服务器上执行的,而前端代码是在客服端(浏览器)上执行的

XSS的功能:

  • 盗取Cookie(最常用)
  • 获取内网IP(攻击内网)
  • 获取浏览器保存的明文密码
  • 截取网页屏幕
  • 网页上的键盘记录

XSS分为三类

  • 反射型:XSS并没被保存,并且在传参中存在恶意语句 一次性
  • 存储型:又涉及到存储方面(数据库,日志) XSS被保存下来 持久型、
  <script>alert(1)</script> 
  • Dom型

XSS的核心——偷Cookie

同源策略:同域名|IP,同端口,同协议

  • cookie注入和cookie不是同一个东西 cookie注入,只是因为目标站点滥用REQUEST来接受传参 cookie的时效性(cookie是不应该也不会放入数据库) cookie 代表我的身份, 类似于身份证 一次会话 cookie是随机字符串(多串)是由目标网站给的 时效性:一次会话(浏览器被关闭) 或者 一段时间(由开发设定) 原则上而言cookie需要完整的,但是实际上而言,cookie不一定每一条都代表权限。

XSS语句:

触发JS: (三种方法)

  • 标签风格:<script></script>
  • 伪协议:<a href=javascript:alert(1)>
  • 事件:满足某些条件,触发某种反应 <img src='#' onerror=alert(1)> onerror加载失败时触发 onload加载成功时触发 image-20220303214019916

​ 可以参考:JS全部事件

靶场操作

先用标签进行注入

image-20220304101207455

查看源代码,找到发现<>被编码了

image-20220304101332541

<>被过滤,只能采用事件法进行XSS攻击,

这里采用事件法来触发JS

' oninput=alert(1) // 

oninput:当用户在<input>标签中尝试进行输入时执行JS

image-20220304105130153

尝试输入任意内容触发JS

image-20220304105157721

XSS防御方法: