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学习的更多相关文章

  1. 记录一次网站漏洞修复过程(三):第二轮处理(拦截SQL注入、跨站脚本攻击XSS)

    在程序编写的时候采用参数化的SQL语句可以有效的防止SQL注入,但是当程序一旦成型,再去修改大量的数据库执行语句并不是太现实,对网页表单上输入进行校验是易于实现的方法.在webForm 页面中开启校验 ...

  2. 跨站脚本攻击XSS(二)——session劫持

    转载自:http://www.cnblogs.com/dolphinX/p/3403027.html 在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的小 ...

  3. 跨站脚本攻击XSS

    跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到 ...

  4. [Web安全之实战] 跨站脚本攻击XSS

    Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. 文章Points:  1. 认识XSS 2. ...

  5. java防范跨站脚本攻击(XSS)

    网络中心提示网站有数目众多的跨站脚本攻击(XSS)漏洞,经过查看代码,认为是JSP中绑定变量是未经处理直接写入的,而且整个项目中这样的做法太多,因为是多年前的,不好一个个更改,参照网上资料,通过加fi ...

  6. 渗透之路基础 -- 跨站脚本攻击XSS

    目录 漏洞原理及防御 XSS 原理分析:输出问题导致js代码被识别执行 XSS 技术分类 Cookie盗取 基于Xss的WebShell箱子的攻击 XSS相关防护过滤及绕过分析(参考链接) 防护: 绕 ...

  7. 跨站脚本攻击(xss)理解

    一  概念 攻击者不直接攻击受害者,而是利用受害者登陆的网站中的漏洞,对受害者进行攻击. 二  危害 由于js本身的限制,并不能直接对用户的电脑造成侵害,但是可以: 1. 获取用户的storage,c ...

  8. 网站安全系列:跨站脚本攻击XSS

    本篇博文主要从概念和应用上介绍XSS,主要内容来源于<白帽子讲web安全> XSS核心本质 XSS实际上是一种HTML注入,用户输入的数据被当成HTML的一部分来执行.防御方法核心是输入检 ...

  9. 网络安全-跨站脚本攻击XSS(Cross-Site Scripting)

    一.XSS攻击简介 作为一种HTML注入攻击,XSS攻击的核心思想就是在HTML页面中注入恶意代码,而XSS采用的注入方式是非常巧妙的. 在XSS攻击中,一般有三个角色参与:攻击者.目标服务器.受害者 ...

随机推荐

  1. TS+React+Redux 使用之搭建环境

    使用 create-react-app 构建 1.全局安装create-react-app npm install -g create-react-app 2.创建一个项目 create-react- ...

  2. js运算符浅析

    什么是运算符? 连接两个或多个操作数(某个值,表达式)之间的符号. 运算符的分类: 1. 赋值运算符(=) 将右边的值赋给左边. var x = 10; var y = x; console.log( ...

  3. 2018年10月OKR初步规划

    OKR(Objectives and Key Results)即目标+关键结果,是一套明确和跟踪目标及其完成情况的管理工具和方法 今天是十月的第一个工作日,也是我归零的第一天,受到一位前辈的启发,我决 ...

  4. 初识Jmeter

    初识Jmeter 测试计划是根节点,其下可以有多个Thread Group,起始可配setUp Thread Group和tearDown Group.在每个Group下可创建其它节点,模拟各类实际行 ...

  5. grafana--邮箱告警配置

    安装 wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-6.0.2-1.x86_64.rpm yum l ...

  6. [LeetCode] Fibonacci Number 斐波那契数字

    The Fibonacci numbers, commonly denoted F(n) form a sequence, called the Fibonacci sequence, such th ...

  7. c++编译错误C2971:"std::array":array_size:包含非静态存储不能用作废类型参数;参见“std::array”的声明

    在Qt5中这段代码编写有两种方式:一个编译成功,一个失败 成功版本: static constexpr size_t block_size = 0x2000;//8KB static constexp ...

  8. Linux 搭建 Nginx+PHP-FPM环境

    安装PHP.Nginx和PHP-FPM sudo apt-get install php sudo apt-get install nginx sudo apt-get install php7-fp ...

  9. Json----简单介绍

    Json 先分享一个网站http://www.bejson.com/,这个是用来检测Json文件的错误的,Json文件一般不好查找错误. 看懂Json只需要四句话: 对象表示为键值对 数据由逗号分隔 ...

  10. 用Java实现给图片添加文字

    package image; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java. ...