【Web攻防-09】浏览器UXSS&突变MXSS&Vue&React框架&JQuery库&写法和版本

分类:

  • 框架或三方库的XSS
  • 浏览器或插件的XSS
  • 客户端预览内核的XSS

说明:使用框架开发的或第三方库引用操作的,默认安全写法会自带过滤,所以测试此类的应用需存在漏洞版本或不安全写法导致XSS;同样UXSS也需要存在漏洞的浏览器版本或插件导致;MXSS也要不同环境下的转变解析导致,需多测试。

这三类xss漏洞存在几率低


Vue-XSS

注:使用vue.js开发的网站,出现漏洞的几率很低

启动

npm run dev

测试:

payload

<img src="x" onerror="alert('XSS')" />

修复:使用文本插值({{}})代替 v-html

<template>
  <div>
    <h1>XSS 漏洞演示</h1>
    <input v-model="userInput" placeholder="输入你的内容" />
    <button @click="showContent">显示内容</button>
    <div v-html="displayContent"></div>  //写法一(不安全的写法),将数据作为原始 HTML 解析并插入到 DOM 中,造成xss
<!--    <div>{{ displayContent }}</div>-->  //写法二(一般默认,安全),直接转义为纯文本
  </div>
</template>

<script>
export default {
  data() {
    return {
      userInput: '', // 用户输入
      displayContent: '' // 显示的内容
    };
  },
  methods: {
    showContent() {
      // 直接将用户输入的内容渲染到页面
      this.displayContent = this.userInput;
    }
  }
};
</script>

写法一(不安全)

<div v-html="displayContent"></div>  //将数据作为原始 HTML 解析并插入到 DOM 中,造成xss

写法二(默认且安全)

<div>{{ displayContent }}</div>  //写法二(一般默认,安全),直接转义为纯文本

转义为纯文本了,只显示不执行


React-XSS

React 是一个用于构建用户界面的 js 库。

启动

npm install
npm start

源码

function App() {
    const [userInput, setUserInput] = useState('');
    const [displayedInput, setDisplayedInput] = useState('');

    const handleInputChange = (e) => {
        setUserInput(e.target.value);
    };

    const displayInput = () => {
        setDisplayedInput(userInput);
    };

    return (
        <div>
            <input type="text" value={userInput} onChange={handleInputChange} placeholder="输入内容"/>
            <button onClick={displayInput}>显示输入</button>
            <div dangerouslySetInnerHTML={{__html: displayedInput}}/>    //写法一,不安全
            {/*<div>{displayedInput}</div>*/}  //写法二,安全
        </div>
    );
}

写法一(不安全)

<div dangerouslySetInnerHTML={{__html: displayedInput}}/>

写法二(默认、安全)

<div>{displayedInput}</div>

将输入的内容进行实体化,再进行输出

右键点击“编辑html元素”,发现大括号被实体化了,无法造成xss,被框架自动过滤了(与vue一致)

修复:直接使用{displayedInput}来显示


Electron-XSS

Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。嵌入Chromium和Node.js渲染,可以 使用JavaScript 代码代码库创建在Windows上运行的跨平台应用

打开后是一个应用程序(不是web界面),把浏览器封装成应用程序

<body>
<input type="text" id="userInput" placeholder="输入内容">
<button onclick="displayInput()">显示输入</button>
<div id="displayArea"></div>
<script>
    function displayInput() {
        const input = document.getElementById('userInput').value;
        const displayArea = document.getElementById('displayArea');
        //displayArea.textContent=input;  // 安全
        displayArea.innerHTML = input;  // 产生xss漏洞
    }
</script>
</body>

不安全写法

 displayArea.innerHTML = input; 

安全写法

displayArea.textContent=input;

修复:使用 textContent 代替 innerHTML 来显示文本


JQuery XSS

水洞,没用,实战可忽略,报告可写-不考虑利用

漏洞介绍:

https://mp.weixin.qq.com/s/FsFvQlVrb_J4wsyE8gpprA

https://mp.weixin.qq.com/s/EMsK1c901-bDYapvHxs-VQ

漏洞扫描工具:

在线扫描地址:https://research.insecurelabs.org/jquery/test

https://github.com/mahp/jQuery-with-XSS

https://github.com/honeyb33z/cve-2020-11023-scanner


MXSS:

价值高-难挖-需要耐心-大厂

参考:https://mp.weixin.qq.com/s/31zaBzZ1e6rNobYCrn7Qhg

漏洞介绍:

https://www.fooying.com/the-art-of-xss-1-introduction/#mxss

mXSS中文是突变型XSS,指的是原先的Payload提交是无害不会产生XSS(已经被过滤、转义等操作),而由于一些特殊原因,提取和处理的过程中,将原本无害的XSS Payload进行了转码、反编码等操作,导致Payload发生变异,导致的XSS。

本身已修复,是在数据渲染和转换的过程中没有遵循一个统一的方案造成的

csdn只是载体,漏洞成因在于qq的重新渲染等操作

漏洞核心:

在各种平台转发预览、应用2在重新渲染、解析、转换带有xss语句内容的网址1时触发

存在场景:

各种聊天媒体,在线笔记软件(特别是带预览功能的)–>网址分享出去看是否可以被调用释放,例如csdn各种语句文章、blog语句文章,测试时可以多制作几个

模拟靶场:

https://portswigger-labs.net/mxss

<math><mtext><table><mglyph><style><!--</style><img title="--><img src=1 onerror=alert(1)>">

各种用于测试的文章:


UXSS:Universal Cross-Site Scripting

挖掘困难-价值非常高-技术要求高-二进制、逆向

漏洞介绍:UXSS利用浏览器或者浏览器扩展漏洞来制造产生XSS并执行代码的攻击类型

edge浏览器漏洞:MICROSOFT EDGE uXSS CVE-2021-34506

Edge浏览器翻译功能导致JS语句被调用执行

https://www.bilibili.com/video/BV1fX4y1c7rX

https://mp.weixin.qq.com/s/rR2feGeuRt3hOFPkV3_6Ow


本节知识点

Web攻防-XSS跨站-浏览器&转换-UXSS&MXSS

Web攻防-XSS跨站-框架和库-VUE&React&Electron&JQuery

十二亿七千光年
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇