Angularjs CSP旁路56个字符

夹具挤压CSP旁路矢量的图片

通常,当您测试网站时,您可能会在测试的输入上遇到长度限beplay体育能用吗制,这就是为什么尽可能减少矢量的长度很重要,当然也很有趣。

当我做我的XSS魔术谈论全明星我提出了一种使用CSP的技术Angularjs在63个字符中:

<输入ID = x ng-focus = $ event.path | orderby:'css && [1] .map(alert)'>

它通过使用Chrome中的路径属性来起作用,Chrome是DOM对象的数组,它还包含窗口对象作为最后一个元素。AngularJ中的管道字符表示过滤器操作,因此将路径阵列发送到Orderby滤波器,并接受表达式。然后,当执行表达式时,其在数组的当前元素中执行的上下文。然后我使用CSS属性要检测数组元素当前使用窗口的最后一个元素。然后,我使用地图函数执行警报功能是因为沙箱将检测到窗口,如果打电话警报作为正常函数调用。向量如下:

我向听众挑战,以进一步减少它,精神错乱通过更换CSS带有“ X”的属性,这是注射输入元素的ID。这是因为“ x”将是窗口的全局属性,因此可以用于检测窗口对象。见下文:

<输入id = x ng-focus = $ event.path | orderby:'x && [1] .map(alert)'>

我在懒惰的人面对进一步减少它的挑战。我自己承担挑战,我想到了打电话的方法警报不触发AngularJS窗口检测。我想到了使用数组和流行音乐方法:

<输入ID = x ng-focus = $ event.path | orderby:'x && [alert] .pop()(1)'>

该有效载荷与原始的长度相同。但是,等等 - AngularJS允许您无视不确定的功能而不会引发例外。因此,我可以通过删除&&和财产检查:

<输入ID = x ng-focus = $ event.path | orderby:'[alert] .pop()(1)(1)'>

仍然决心进一步减少它,我尝试使用一个阵列,没有流行音乐通过引用第一个元素并调用它:

<输入ID = x ng-focus = $ event.path | orderby:'[arter] [0](1)'>

但这导致非法操作,因为调用对象不是窗口,而javaScript只能让我们呼叫警报在窗口上。所以我需要一种打电话的方式警报作为直接呼叫并维护对窗口的引用,同时仍避免了Angularjs的窗口检查。最后,我想出了这种简单而优雅的方法 - 使用分配逃避Angularjs的窗口对象检测:

<输入ID = x ng-focus = $ event.path | orderby:'(y =警报)(1)'>

AngularJS CSP旁路POC

回到所有文章

相关的研究

每日Swig的推荐故事beplay2018官网