从HackerOne学Client-Side Template Injection with AngularJS

2021-04-15 11:31:21 浏览数 (1)

这几天一直跟着团队的小伙伴刷HackerOne,然后就遇到了这个漏洞,记录一下。

关于漏洞原理什么的,可以去看https://portswigger.net/research/xss-without-html-client-side-template-injection-with-angularjs而且就连微软也曾经中过招https://www.uedbox.com/post/12042/

这里就不再论述原理性的东西了,咱们来看一下这个漏洞的具体表现形式是什么样的。

关于漏洞的复现我们可以使用github的集成环境https://github.com/tkmru/client-side-template-injection-sample,也可以使用老外的在线环境,老外的环境的好处就是支持多个AngularJS版本的切换。

我这里以在线环境为例,给大家演示下该漏洞。

https://old.liveoverflow.com/php/angularjs/angular1.4.7.php?q=hello world

在我们输入hello world的时候,会直接把我们的字符打印在页面上,而模板注入比如我们输入{{7 7}},就会得到14,说明语句已经成功运行。

这个时候我们就可以使用我们的相关语句,构造xss了。每个版本的bypass语句不同,列表如下:

以我们测试环境的1.4.9为例,我们使用下面的语句,就可以成功弹框:

代码语言:javascript复制
{{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}

所以以后在遇到AngularJS的站的时候i,我们不妨去试试这个漏洞。

除了手工检测之外,我们也可以使用对应的工具进行检测(有些误报),下载地址在最后:

只是最后,这个漏洞没通过,唉

工具下载地址:

代码语言:javascript复制
https://github.com/tijme/angularjs-csti-scanner

-THE END-

0 人点赞