小人!
今天上班发现头像被人篡改, 变成一个低俗图像, 鄙视之! 小人!
今天fork nodeclub, 把漏洞补了!
是啊,开源的,有时间的都要来帮助完善。
头像和cnodejs么有关系。 是调用的其他网站的。
@young40 是跟cnodejs没关系,但是我的头像链接地址被人篡改了
没看见有pull request啊,代码在哪里?
同意,黑cnodejs有毛用啊,多黑黑日本的网站,我们举双手鼓掌,我也保钓,大家一起来保钓
@a272121742 同意把老雷的JJ切了的举手~
改别人头像这个事不是我干的啊,你要相信我的人品。。。
@jiyinyiyong 受楼主启发,才跑上去找到的,但是我不会修复这个漏洞
@leizongmin 这么简单的修改, 我就不动手啦~~我前面的帖子里已经写得很清楚了, 在 GitHub 里也发了Issue
@jiyinyiyong @leizongmin 我已经pull request了,他们管理员不鸟我啊,没办法~
@j4cnodejs issue也木有啊,你提交到那个项目地址了?
@suqian 管理员反应太慢了
@leizongmin 我知道nodeclub有许多漏洞和bug,因为我们开源了,所以漏洞很容易被发现。但是我们开源的原因,也正是想要社区的力量,大家一起来完善这个nodeclub。
看着源代码来黑cnode,完全没有意思。
@suqian 头像也变成兔子了?
原来是html模板使用了单引号导致的。md
是的,有力量就贡献自己的力量~
@suqian @leizongmin @j4cnodejs @a272121742 苏大大已经修复了超链接的注入和头像url的注入,万分感谢,只是现在内容页有侧漏,不知道什么原因引起的
什么侧漏? 我这里貌似显示很正常
##测试一下安全的HTML标签 一下结果来自Google搜索
javascript this详解(转) - 独自莫凭栏- 博客园 www.cnblogs.com/felix2007/archive/2007/…/682670.html - 网页快照2007年3月21日 – 不过这里其实可以写任何合法的JavaScript语句,要是高兴在此定义个类也可以(不过将会是个内部类)。这里的原理是脚本引擎生成了一个div实例 … [图解] 你不知道的JavaScript - “this” - JavaScript - yaosansi’s Blog www.yaosansi.com/post/1263.html - 网页快照2008年4月21日 – JavaScript 里的this 到底指得是什么?很多人都会告诉你this 指的是当前对象。这样理解对么?在大多数情况下确实没错。比如我们经常会在网页上 … Javascript this关键字使用分析_javascript技巧_脚本之家 www.jb51.net › 网络编程 › JavaScript › javascript技巧 - 网页快照这是来自http://www.quirksmode.org/js/this.html这篇文章里对this的定义,直接看定义似乎什么也不知道,下面通过实例来说明各种情况下this所指代的对象以及原理。
</p><script>alert(‘hello’)</script>
@leizongmin 看到了,谢谢!
@snoopy 看了一下源代码, 应该是原xss攻击脚本被sanitize().xss()后, 残余的代码导致页面html混乱. 对于安全的标签问题不大, 至少防住了攻击!
@leizongmin 加油,继续测试,找出新的漏洞,我们好学习,好修复!
@leizongmin 恭喜你,你又成功了! 快说漏洞在哪里
我了个去啊,什么情况啊?</p><p>
html 标签还没过滤掉~!!!!!!!!
@snoopy @j4cnodejs 当嵌套HTML标签时,只过滤最外层的标签,里面的标签过滤不完整,可能是正则匹配问题
举个例子!
比如以下代码,最外面的onload="ooxx"
被过滤了,但是里面那个没有被过滤
<p onload="ooxx">not
<p onload="ooxx()">
ok
</p>
</p>
@leizongmin 研究一下 validator 的 xss() 源码, 找找对策
不需要这样,只需要先闭合标签,再打开标签即可,比如:</p><p id=“12321”>12321
我就为12321这个P增加了ID属性了,当然也可以乱来了
@j4cnodejs xss()方法根本就不会过滤这个的,它只删除<script>
标签
@leizongmin 删除了script标签, onload, href, onXXX事件它也都去查的
@snoopy 这算是validator的Bug了
@leizongmin 那如果在xss()基础上再过滤掉 $.getScript
呢? 就是禁止从外部获取 js
过滤所有onXXX才是根本,只要可以执行js代码,不用$.getScript
还可以用其它方法嘛,就像上次过滤了单双引号还可以用String.fromCharCode()
生成字符一样
validator没有过滤id属性
@leizongmin 对, 过滤所有标签的on事件, 这个要反馈给validator作者
问题找到了: validator@0.4.11 最新版, xss.js Line 150: 它虽然有过滤事件处理的机制, 但是它只替换第一个找到的匹配…无语
str = str.replace(new RegExp("<([^><]+?)("+event_handlers.join('|')+")(\\s*=\\s*[^><]*)([><]*)", 'i'), '<$1$4');
把 ‘i’ 改成 ‘gi’ 是否可以解决? @snoopy, @leizongmin ?
@leizongmin @snoopy 虽然你们可以很容易就找到漏洞,但是只为了想炫耀,我觉得没什么必要。
如果nodeclub只是我负责开发,那么开源的意义都没有了。
为什么国外的geek会那么喜欢参与开源项目,是因为他们会动手帮忙解决问题,而不是找到问题就想去炫耀。
无论如何,感谢你们。特别是在我正在参加“沪JS”的时候,每想到你们在这个时间点上还这样搞cnode,我感觉很伤心。
也同时提醒着我,不是所有人都是我想象中的好人。
遥想起去年的高斯炮攻击,我们找到了攻击方法,不是第一时间去攻击别人的nodejs网站,而是找到node团队,找到tj,找到v8的人,提交攻击方法,然后等待反馈,希望能尽快让node去修复此问题。
我们在深圳nodeparty上,虽然演示了如何攻击,但是也是本地演示,而且代码无论如何也不会放出来。
做个善良的程序员,会让更多人羡慕你。
-
不提交pull request是因为暂时没想出好的解决方法,只想着尽可能找出潜在的xss漏洞;
-
被多次说成是“炫耀”,我也感觉很伤心,我以为仅仅是“开个玩笑”而已;
-
为什么事情发生在“沪JS”期间,我觉得那只是时间巧合而已,并没有所谓的“预谋”;
-
所幸还没有更大的“危害”出来,要不我跟@snoopy 都成千古罪人了;
-
从此洗心革面,做个善良的程序员;
@leizongmin 感谢。
我看着心急, 我git新手, 还不知道怎么使用 fork - pull request 那一套啊, 谁来教教我
@leizongmin 你这段html怎么裸奔了? 早上不是这样的啊
@jiyinyiyong Thank u!
@suqian @leizongmin @j4cnodejs 苏大大你误会了,老雷真的只是好玩,如果他是恶意用户的话,那天发现上传漏洞他就可以挂马了,请相信我们都是善良的人。 之前我pull-request已经修复了a标签的执行js代码漏洞了,不知为何现在又出现了。 目前markdown中有一个html标签没有过滤干净的问题,我和老雷会尽快pull-request的。 我也写了致歉信,希望大家能原谅我们
nodejs社区很好啊
关于这件事,我觉得写代码的责任心是很重要的。不管是开源还是不开源的东西都应该如此。当然从另外一个角度上来说,写开源代码,已经很无私的。
早在漏洞爆发前就说过,cnodejs的代码质量很低。出这些问题,是必然的。
写代码是良心活。。
看到两年前的这个帖子,笑尿了,本来就不应该在回复里面允许 HTML 直接写,现在我已经全部过滤了,只能用 markdown。
@alsotang 看完我决定赶紧回去改改我的博客评论模块…
@klamtlne 自己写的博客?怎么不用 disqus 或者多说这类的?
@alsotang 挖坟万分鄙视。
哈哈哈哈哈
@alsotang 纯粹是学习一下,disqus是很好用,多说没用过
好像发现了bug
不知道还有其他童鞋发现没
等周末看看能不能解决
reply有问题? 不过要鼠标移那才触发,还有别的么?
@xadillax ??
@booxood 描述一下我来修修
@albertshaw ??有什么问题
还没fork工程,就不提pr了,直接说下发现的小问题 topic/index.html 下面的script
var replyContent = $replyItem.find(’.reply_content’).text().trim()
然后replyContent被push进chats
然后被直接append进$repliesHistoryContent
$repliesHistoryContent.append(’<div class=“item”>’ + pair[0] + pair[1] + pair[2] + ‘</div>’);
如果replyContent文本带显示html标签的,这里append就出问题了。
@alsotang 就是 @xadillax @albertshaw 说的问题
“查看对话”中的内容没有做处理,直接嵌了
@booxood 对话中的内容即使有 html 的话,也会被 escape 掉啊。
@xadillax @albertshaw 对话中的内容即使有 html 的话,也会被 escape 掉啊。
@booxood @xadillax @albertshaw 我本地试试
@booxood @xadillax @albertshaw 嗯嗯,这里确实存在问题,我现在已经修了,你们看看好了没。
@j4cnodejs 你确定是被修改了么?
@alsotang 好了
@booxood ok
谁用低版本的IE点击试试,我的IE11倒是不会弹。[test link](vbscript:alert(1))