【问题标题】:Creation of XSS vulnerable web page创建 XSS 易受攻击的网页
【发布时间】:2013-04-05 19:26:48
【问题描述】:

我想创建一个 XSS 易受攻击的网页,该网页执行在输入框中输入的脚本。在这里我已经编写了这段代码,但是每当我输入脚本时,什么都没有发生。

<html>

<head>
</head>

<body>
<script type="text/javascript">
function changeThis(){
    var formInput = document.getElementById('theInput').value;
    document.getElementById('newText').innerHTML = formInput;
    localStorage.setItem("name","Hello world!!!");
}
</script>

<p>You wrote: <span id='newText'></span> </p> 

<input type='text' id='theInput' value='Write here' />
<input type='button' onclick='changeThis()' value='See what you wrote'/>
</body>

</html>

请帮忙。我应该如何修改代码?
更新:我试图做反射型 XSS。据我说,如果我在输入中输入脚本它应该执行。仅当我不检查用户是否输入了有效输入并采取措施不执行脚本时才会发生这种情况。
这是一个网页www.insecurelabs.org/task/Rule1,当我在输入字段脚本执行时键入以下脚本时,它很容易受到 XSS 攻击:&lt;script&gt; alert("hell"); &lt;/script&gt;
我想知道这与我在做什么之间的主要区别是什么?

【问题讨论】:

  • XSS 是指攻击者可以将 persistent HTML 注入页面。直接修改页面不是 XSS。任何人都可以随时通过开发者控制台执行此操作。
  • 不,我正在尝试Reflected XSS。你可能想看看:en.wikipedia.org/wiki/Cross-site_scripting
  • 反射型 XSS 依赖于通过查询字符串注入脚本。您的表单应该只向同一页面发出 GET 请求,并让 JavaScript 分析 window.location.search 以获取 RXSS 数据。
  • 我已经对这个问题做了更多解释。

标签: javascript html security


【解决方案1】:

如果你使用 innerHTML 来注入脚本标签...脚本将不会运行!

您可以做的是使用 onload 事件处理程序注入图像:

<img src="someImage.gif" onload="alert('hacked!')" />

[更新]关于您的最后一个问题:主要区别在于您使用的是 innerHTML,而 insecurelabs 页面使用的是 jQuery.html()。 jQuery 方法将运行脚本。

现场演示:http://jsfiddle.net/wqqWt/

【讨论】:

  • @zzzzBov 对,但是根据发布的代码,我相信 OP 实际上意味着脚本注入。
  • @zzzzBov,他从来没有说过。这确实为“什么都没有发生”的情况提供了解决方案,这将使 OP 克服困难继续他的探索。 ;-)
  • 根据OP写的,他其实是想要XSS,他尝试的代码只是脚本注入。
  • @Naman 我已经更新了我的答案来解决你的最后一个问题。
【解决方案2】:

只需eval代码:

function changeThis(){
    var formInput = document.getElementById('theInput').value;
    eval(formInput);
}

【讨论】:

  • 我知道它不是,但它可以满足 OP 的要求(除非你应该在输入字段中输入一个 url,然后 Christophe 有答案)。
  • 好的,所以我想一个反对意见是回答所问的问题,尽管 OP 语言不准确;第二个是什么,“eval is evil”?
  • 投反对票,因为您的方法在功能上无关紧要。因为您假设输入只是标记而无意中运行代码与主动评估您认为是代码的输入完全不同。这是疏忽与故意。
  • @Travis 我不假设什么,看看 OP 上的第一句话:我想创建一个 xss 易受攻击的网页并执行输入框中输入的脚本
  • @bfavaretto,关键区别在于“脚本”而不是“脚本”。如果他想执行脚本,他会使用 eval。如果他想执行“a”脚本,他会使用标签。这是关于他的问题背后的心态和意图。
猜你喜欢
  • 2016-04-18
  • 1970-01-01
  • 2015-12-31
  • 2011-05-03
  • 2016-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多