当前位置: 首页 > news >正文

网络安全——XSS跨站脚本攻击

一、XSS概述

1、XSS被称为跨站脚本攻击,由于和CSS重名,所以改为XSS;

2、XSS主要基于JavaScript语言完成恶意的攻击行为,因为JavaScript可以非常灵活的操作html、CSS和浏览器

3、原理:XSS就是通过利用网页开发时留下的漏洞(由于Web应用程序对用户的输入过滤不足),巧妙的将恶意代码注入到网页中,使用户浏览器加载并执行攻击者制造的恶意代码,以达到攻击的效果。

这些恶意代码通常是JavaScript,但实际上也可以包括Java、VBScript、ActiveX、Flash或者普通的HTML

4、 XSS原理图

5、 可能受到XSS攻击的位置:只要对用户的输入没有进行严格的过滤,就有可能遭到XSS攻击

微博、留言板、聊天室等收集用户输入信息的地方,都有可能遭到XSS攻击

6、实施XSS脚本攻击的前提条件

(1)、需要向Web页面注入精心构造的恶意代码

(2)、对用户的输入没有做过滤,恶意代码能够被浏览器成功的执行

7、XSS的攻击语法

 

8、XSS的危害

 9、XSS的分类

(1)、反射型

 

 

(2)、存储型

 

 

(3)、DOM型

DOM一般指文档对象模型。文档对象模型(Document Object Model,简称DOM

 

 

 

 

 

 

二、XSS的payload构造

1、

2、

 3、

 

 4、

 

 三、XSS payload的变形

1、

 2、

 3、

 4、

 5、

 6、


三、XSS跨站脚本的实例

在进行XSS攻击时,可以先查看网页的源代码,获取信息

打开浏览器,访问http://ip/dvwa/login.php

输入Username:admin和Password:password,登陆靶场

先把级别设置为LOW,

对反射型、存储型和DOM型进行攻击

1、反射型

 在文本框内输入“<script>_alert(666)</script>”,,点击“Submit”,提交输入的payload,弹框,触发XSS漏洞

 

结果:弹窗XSS

 2、存储型的XSS

 name 那一行有字符限制,只能输入10个字符,所以我们考虑在Message那一栏进行XSS攻击

同样,输入<script>alert('xss')</script>

 结果同样是XSS弹窗,但是他的数据是永久性的,写到了数据库里面,你下次打开还是会有弹窗

 3、DOM型 XSS攻击,不会跟服务器有交互,直接在网页进行攻击

 先随便选一个

 

 在URL上进行XSS攻击

 结果还是出现XSS弹窗

 这就是LOW级别的三种类型XSS攻击


先把靶机DVWA的网站数据库复位

 

 把级别调成Medium

1、反射型XSS攻击

 我们先按低级的思路来试试看,输入<script>alert('xss')</script>

 这个结果说明<script>可能被过滤了,我们可以输入<script>试试看

 结果:说明<script>被过滤了

 我们换个思路,试试改一下payload,改大小写,输入<sCript>alert('xss')</sCript>试试看

 结果:攻击成功,出现弹窗

查看网站源码

 2、存储型XSS攻击

 我们还是先用低级思路试一下,输入<script>alert('xss')</script>

 结果: <script>被过滤了

 我们试试上一个做法,改大小写 输入<script>alert('xss')</script>

结果还是被过滤掉了,说明网站过滤大小写

 我们可以考虑从Name那一栏进行入手,但是只能输入10个字符,我们可以用Burpsuite进行抓包,然后在里面设置payload

打开Burpsuite和浏览器代理,进行抓包(这里不进行演示)

 设置payload,设置好点击forword,我们输入大写的<SCRIPT>,输入小写的会被过滤掉

 结果:出现弹窗

 3、DOM型 XSS攻击

 还是跟前面的思路一样,先试试<script>alert('xss')</script>行不行

结果:没有弹窗 

改大小写也不行

我们可以查看网页源码

 发现可能是闭合问题

因为大小写都不行,我们改写另一种payload,基于报错机制的,如下图

结果就出来了 


先把数据库清除,我们接下来把级别调成High

1、反射型XSS,我们按照上面的方法试一试,当用事件触发来攻击,发现结果成功了,跟DOM型中等难度的方法一样

输入<img src=1 οnerrοr=alert('xss')> 

 2、存储型XSS攻击

我们的思路还是从简单开始,发现都<script>无论大小写都被过滤,即使在Name那一行也不行,利用事件触发也不行,这时我们可以通过抓包,然后再name那一个位置设置事件触发payload

如下图:

 结果:出现弹窗

 3、DOM型XSS攻击

思路:我们尝试上面的方法都不行,这时我们可以尝试用注释符#,来无视我们输入的语句

总结:XSS攻击我们可以通过改不同的payload来应对不同的情况,例如小写不行改大写,大写不行换别的,payload类型上面有说到


这篇文章就写到这里了

相关文章:

  • AT24C02存储与读取数据
  • Linux高级编程--gdb调试
  • 家校协同小程序实战教程
  • 沉睡者C - 想要通过网上来赚钱,悟性很重要
  • Java集合面试小结(2)
  • 【uiautomation】微信群发消息,可发送文本 文件
  • 【network】windows 获取Adapter 名称
  • Python 基础学习
  • 网课搜题接口公众号搭建详细步骤
  • 继承的使用以及super关键字和重写以及Object类
  • Spring中的AOP翻转的使用与在事务管理中的表现
  • DataOps: A New Discipline 数据治理的下一步
  • 一些现代 Javascript 技巧
  • Java学习 --- 类方法(静态方法)
  • 网课答案搜题方法详细步骤
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 08.Android之View事件问题
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • CentOS7简单部署NFS
  • conda常用的命令
  • Fundebug计费标准解释:事件数是如何定义的?
  • js算法-归并排序(merge_sort)
  • oschina
  • React as a UI Runtime(五、列表)
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • SOFAMosn配置模型
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 程序员该如何有效的找工作?
  • 从重复到重用
  • 观察者模式实现非直接耦合
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 两列自适应布局方案整理
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 世界上最简单的无等待算法(getAndIncrement)
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • (09)Hive——CTE 公共表达式
  • (2.2w字)前端单元测试之Jest详解篇
  • (2020)Java后端开发----(面试题和笔试题)
  • (Oracle)SQL优化技巧(一):分页查询
  • (八)Flask之app.route装饰器函数的参数
  • (九)One-Wire总线-DS18B20
  • (数据结构)顺序表的定义
  • (四)汇编语言——简单程序
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)Oracle存储过程编写经验和优化措施
  • (转)视频码率,帧率和分辨率的联系与区别
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .Net 8.0 新的变化
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)