跨站脚本攻击xss学习
0、认识跨站脚本
举一个跨站脚本的简单例子。
假设一个页面将用户输入的参数直接显示到页面之中。(比如有如下代码)

在实际的浏览器中,在param中提交的参数正常会展示到页面之中。比如输入下面的URL:

然后发现浏览器页面的提供会变成这样:

此时如果提交下面的URL:

会发现alert被执行了

1、跨站脚本分类
跨站脚本攻击分为3类,反射型、存储型和DOM Based XSS。
1、反射型xss。浏览器执行一个不可信的脚本,并获得服务器的响应。通常黑客需要引诱用户点击恶意链接来进行触发。
2、存储型xss。比如在服务器的博客文章中有恶意脚本,那么每个访问该博客的浏览器都会执行这段而已代码。
3、修改页面的DOM节点形成的xss。(实际上也是浏览器执行不可信的脚本,但还是单独被列出为一类)
2、XSS Payload
XSS攻击成功之后,攻击者能够对当前浏览器的页面植入恶意脚本,通过恶意脚本,控制用户浏览器。这些用来完成各种具体功能的恶意脚本,被成为XSS Payload。
XSS Payload实际上就是javaScript脚本(还可以是Flash或其他富客户端的脚本)。所以javascript能做到的事情,XSS Payload都能够做到。
2.1 XSS Payload获取Cookie(通过URL的param远程加载一个脚本,脚本中加载一个图片,将cookie放入图片路径)
从开头的例子看到,通过URL的方式能够使一个脚本执行。
通过如下方式去加载一个远程脚本:

然后在evil.js中写入获取Cookie的代码(这段代码本身是加载一个图片,但是通过请求一个图片,将cookie放在请求的URL中):


即使最后该图片路径不存在,服务器也会记录下这次访问的URL,也就是能获取到cookie了。
获取cookie后,使用用户的cookie就可以伪造用户登录,但是很容易被防范。
2.2 强大的XSS Payload
模拟用户的行为:
1、构建form表单
2、通过XMLHttpRequest发送消息
比如通过网络抓包来获取某项行为的URL,然后模拟用户发送该URL
XSS钓鱼:
伪造一个假的登录框或是页面。
识别用户浏览器:
1、读取浏览器的UserAgent(可以伪造)
2、根据不同浏览器各自的独特功能,识别浏览器独有的对象
识别用户安装的软件:
1、activex的classid
2、falsh的system.capabilities对象(软件的专属对象)
ccs访问过的网站颜色不同会造成信息泄漏
获取真实IP:
javascript没有直接接口,需要使用其他软件完成,比如JRE
2.3 XSS攻击平台
Attack API
BeEF
XSS-Proxy
2.4 XSS Worm
2005地一个蠕虫病毒
2007年百度空间蠕虫病毒
2.5 调试javascript
firebug
IE8 Developer Tools
Fiddler
HttpWatch
2.6 XSS 构造技巧
3、XSS防御
HttpOnly:在cookie设置HttpOnly属性,可以让javascript读取不到cookie
输入检查:比如排查有没有像'<'或'>'等特殊字符
输出检查:将变量输出成html时可以使用编码或转义字符的方式来防御XSS攻击,将比如将<转义成&lt
跨站脚本攻击xss学习的更多相关文章
- 记录一次网站漏洞修复过程(三):第二轮处理(拦截SQL注入、跨站脚本攻击XSS)
在程序编写的时候采用参数化的SQL语句可以有效的防止SQL注入,但是当程序一旦成型,再去修改大量的数据库执行语句并不是太现实,对网页表单上输入进行校验是易于实现的方法.在webForm 页面中开启校验 ...
- 跨站脚本攻击XSS(二)——session劫持
转载自:http://www.cnblogs.com/dolphinX/p/3403027.html 在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的小 ...
- 跨站脚本攻击XSS
跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到 ...
- [Web安全之实战] 跨站脚本攻击XSS
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. 文章Points: 1. 认识XSS 2. ...
- java防范跨站脚本攻击(XSS)
网络中心提示网站有数目众多的跨站脚本攻击(XSS)漏洞,经过查看代码,认为是JSP中绑定变量是未经处理直接写入的,而且整个项目中这样的做法太多,因为是多年前的,不好一个个更改,参照网上资料,通过加fi ...
- 渗透之路基础 -- 跨站脚本攻击XSS
目录 漏洞原理及防御 XSS 原理分析:输出问题导致js代码被识别执行 XSS 技术分类 Cookie盗取 基于Xss的WebShell箱子的攻击 XSS相关防护过滤及绕过分析(参考链接) 防护: 绕 ...
- 跨站脚本攻击(xss)理解
一 概念 攻击者不直接攻击受害者,而是利用受害者登陆的网站中的漏洞,对受害者进行攻击. 二 危害 由于js本身的限制,并不能直接对用户的电脑造成侵害,但是可以: 1. 获取用户的storage,c ...
- 网站安全系列:跨站脚本攻击XSS
本篇博文主要从概念和应用上介绍XSS,主要内容来源于<白帽子讲web安全> XSS核心本质 XSS实际上是一种HTML注入,用户输入的数据被当成HTML的一部分来执行.防御方法核心是输入检 ...
- 网络安全-跨站脚本攻击XSS(Cross-Site Scripting)
一.XSS攻击简介 作为一种HTML注入攻击,XSS攻击的核心思想就是在HTML页面中注入恶意代码,而XSS采用的注入方式是非常巧妙的. 在XSS攻击中,一般有三个角色参与:攻击者.目标服务器.受害者 ...
随机推荐
- css中文字体解决方案
html { font-family: -apple-system, "Noto Sans", "Helvetica Neue", Helvetica, &qu ...
- 微信小程序开发---视图层(View)
WXML WXML能力: 数据绑定 列表渲染 条件渲染 模板 事件 数据绑定 数据绑定使用 Mustache 语法(双大括号)将变量包起来,可作用于内容,组件属性(需要在双引号之内),控制属性(需要在 ...
- Flask的上下文源码剖析
先写一段Flask程序 from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return ...
- CSS-单位em 和 rem
1,em单位(css3新增单位) em:就是一种长度单位,它是参照当前元素的字号,如果没有设置,就参照父容器,一直到浏览器的默认字号大小 em 是相对长度单位(参照父元素),其参照当前元素字号大小,如 ...
- HelloPython
HELLOWORD!你好!Python! 学习Python已有一段时间,一个人自学颇不容易,在此分享一些自己学习经验和感受,温故而知新,也希望自己能有些新收获. 学习Python,大多数人创建的第一个 ...
- Google 浏览器好用插件推荐
Adblock Plus, 免费广告拦截器 Adobe Acrobat 将当前网页转换为 Adobe PDF 文件 Axure RP Extension for Chrome 不仅能绘制出详细的产 ...
- 【安富莱二代示波器教程】第18章 附件C---波形拟合
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=45785 第18章 附件C---波形拟合 emWin5. ...
- JVM性能调优监控命令jps、jinfo、jstat、jmap+jhat、jstack使用详解
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jinfo.jstat.jmap+jhat.jstack等小巧的工具,本博客希望能起抛砖 ...
- 大数据核心知识点:Hbase、Spark、Hive、MapReduce概念理解,特点及机制
今天,上海尚学堂大数据培训班毕业的一位学生去参加易普软件公司面试,应聘的职位是大数据开发.面试官问了他10个问题,主要集中在Hbase.Spark.Hive和MapReduce上,基础概念.特点.应用 ...
- Python 爬虫利器 Selenium
前面几节,我们学习了用 requests 构造页面请求来爬取静态网页中的信息以及通过 requests 构造 Ajax 请求直接获取返回的 JSON 信息. 还记得前几节,我们在构造请求时会给请求加上 ...