[XSS injection] – XSS注入 – Day01 – 保姆级0基础 – Reflect XSS

[XSS injection] – XSS注入 – Day01 – 保姆级0基础 – Reflect XSS

前言

XSS并不像SQL一样相对依赖前置知识,XSS对于0基础来说学习起来相对轻松

因为XSS属于客户端攻击,并且需要用户触发 一般危害定位在中危/低危之间

但是幸运的是XSS相对容易挖掘,对于新手来说比较友好

尤其是近期常见的上传XSS,关于上传XSS以及其他另类XSS会放到另一篇文章中提及

本系列文章仅会提及漏洞及原理本身

本篇文章不会像SQL注入系列一样详细 但是会讲清楚XSS漏洞的原理以及基本利用

因为本身难度不高,所以读者学习起来也不困难,当然就不需要那么详细的说明和讲解了

浅谈前端

网页前端一般由HTML/CSS/JavaScript(JS)组成

注:JS和Java没有任何关系

很多人通常叫它们前端三剑客

  • HTML
    • 用于编写页面的”结构”和”内容”
    • 可以将它比作”房屋的结构和骨架”。
  • CSS
    • 用于设置页面的”样式和外观”
    • 可以将它比作”给房屋刷的油漆或装修”。
  • JavaScript
    • 用于赋予页面”交互和动态效果”
    • 可以将它比作”让房屋里各种电器和设备能动起来的电路/机器”。

这三者相互配合,组成了我们所见的网页前端

前端标签

“标签”是用来描述网页文档结构的标识。一个典型的 HTML 标签通常是成对出现的,例如

<p>这是一个段落</p>
  • <p>是开始标签,</p>是结束标签。
  • 在两个标签之间的内容通常被称为元素的“内容”“文本”

常见标签

  • 结构标签<html><head><body>
  • 文本语义标签<p>(段落)、<h1> ~ <h6>(标题)、<span>(行内容器)、<strong>(强调/加粗文本)等
  • 链接和媒体标签<a>(超链接)、<img>(图片)、<video>(视频)等
  • 容器标签<div>(块级容器)、<section><nav><article> 等(HTML5语义化标签)
  • 表单标签<form><input><button><select>

其实对于标签,虽然这里列举了很多,但是并不需要全部记忆下来,只需要过一遍即可

CSS 对于我们的学习影响不大,所以这里不提及,感兴趣可以自行搜索

JS

JS控制网页的动作

实际上XSS攻击核心就是利用JS

我们最常见的方式是

<script>alert("XSS")</script>

如上代码在浏览器中解析后会产生如下效果

4a47a0db6e20250206233841

 

这段代码直接在HTML页面通过<script>标签执行了JavaScript内置的alert()函数,达到弹出消息框弹窗的效果

同样 JS可以直接内联在标签中

onclick作为事件触发器,完全是字面意思,当点击当用户点击这个按钮则触发弹窗

事件触发器还有很多种,这里不一一列举,后面的文章会详细演示

<button onclick="alert('点击了按钮')">点击我</button>

XSS较为常见的利用方式就包含内联在标签中触发JS

XSS危害

  1. 未授权获取用户Cookie
  2. 网页钓鱼
  3. 网页劫持
  4. 浏览器授权范围内的任意操作执行

常见浏览器安全策略

目前XSS的危害主要还是来源于Cookie窃取

Cookie

Cookie作为Web应用的基本认证模式,对于安全来说十分重要

HTTP/s协议作为无状态协议,每次访问服务器并不会自动记录或记住客户端上一请求的状态信息,每次新的请求在服务器看来都是独立的、不关联的。

Cookie就属于一种标识符。

经常举的一个例子就是 我们吃自助餐时 服务员并不会记住你 而是看你手中的用餐凭证 如果有合法凭证 则你是合法的顾客反之亦然 Cookie就可以理解为用餐凭证

只要网站存在”用户”概念就不可能不使用Cookie

实际上虽然网站之间的策略有所不同,对于Cookie管理方式/模式未必相同,但是在Cookie的有效周期中无论谁获得到Cookie都可以对Cookie对应的账户进行登录/操作 这个过程服务器是无法感知的。

浏览器安全策略

浏览器对于XSS的防范也在逐步提高,这是随着时间推进的,我无法列举出全部针对XSS的安全策略

但是这里我会列出一些常见的,经典的防护策略

同源策略

此机制作为浏览器对于XSS的防范对抗最经典的机制,我们拿出来第一个讲解

它规定了只有在协议、域名、端口三者都相同的情况下,脚本才能跨域访问对方的资源或DOM。

听起来十分抽象,实则不难理解

协议相同

https://baidu.com存在XSS,如果用户触发,http://baidu.com的Cookie攻击者无法获取

差异在于httphttps不同

域名相同

https://baidu.com存在XSS,如果用户触发,https://yun.baidu.com的Cookie攻击者无法获取

差异在于域名不同

端口相同

https://baidu.com:443存在XSS,如果用户触发,https://baidu.com:8080的Cookie攻击者无法获取

差异在于端口不同

HttpOnly

浏览器在处理 Cookie 时,如果 Cookie 带有HttpOnly标记,则无法被JavaScript读取,只能由浏览器在 HTTP请求时自动携带。

 

文章可能存在出入,有任何问题欢迎留言

 

© 版权声明
THE END
喜欢就支持一下吧
评论 抢沙发

请登录后发表评论

    暂无评论内容