xss-[安全盒子王松]

概述

xss分类

  • 反射型 :url里面
  • 存储型:存到某种介质里面;留言板
  • dom型:与反射型xss类似.由js插入到页面

修复:

  • HTML 实体编码

  • 使用白名单

  • 根据业务场景对症下药

  • 黑名单

存储型xss

原理

实战

  • 能输入的地方:发帖,评论,个人签名,文章标题

  • 寻找思路:用户能够输入的地方都有可能存在xss

  • 检测 : 插入js,xss恶意代码

反射型xss

原理

攻击者在url中插入xss代码,服务端将url中的xss代码输入到页面上.攻击者将带有xss的url发给用户.

实战

  • url传参.
  • 场景:搜索,翻页,站内查询

dom型xss

原理

攻击者在url中插入xss代码,前端直接将url中的xss代码输入到页面上.攻击者将带有xss的url发给用户.

实战

场景:搜索

xss辅助工具

高级

Electron跨平台xss

postMessage XSS

  • 同源策略:相同协议,端口号,主机 两个不同页面的脚本之间才能相互通信
  • window.postmessage()提供了一种受控机制来规避此限制,只要使用的正确,就很安全
  • 案例1:聊天室 https://github.com/TuuuNya/postMessage_demo
    • 实现源码:
function sendMessage() {
            if (!message) return false;
            let message_text = `${window.username}说: ${message.value}`;
            client_window.postMessage(message_text, '*');
            append_html(message_text);
            message.value = '';
        }

        window.addEventListener('message', e => {
            append_html(e.data);
            console.log(e);
        });

localStorage

  • https://developer.mozilla.org/zh-CN/docs/Web/API/Window/localStorage

  • 存储在 localStorage 的数据可以长期保留;而当页面会话结束——也就是说,当页面被关闭时,存储在 sessionStorage 的数据会被清除 。

  • 语法myStorage = localStorage;

  • 本地的 localStorage输入到 页面会触发xss

  • 反射xss等把 localStorage写进去

Flash XSS

  • Flash:二维矢量动画软件,actionscript

  • 上传swf文件/...

变种的xss

  • xss持久控制思路

Service workers 本质上充当Web应用程序与浏览器之间的代理服务器,也可以在网络可用时作为浏览器和网络间的代理。它们旨在(除其他之外)使得能够创建有效的离线体验,拦截网络请求并基于网络是否可用以及更新的资源是否驻留在服务器上来采取适当的动作。他们还允许访问推送通知和后台同步API。

  • 资源缓存,离线访问

  • service worker->

    • 拦截请求,可以把用户请求的内容替换成想要的
  • 上传js文件,有jsonp接口 ... ->拦截

ReactXSS

...

posted @ 2020-05-02 20:14  10nnn4R  阅读(442)  评论(0编辑  收藏  举报