javascript - XSS注入和innerhtml
问题描述
我正在尝试了解 XSS 漏洞,但在理解这个概念时遇到了一些问题。我有一个测试站点http://mytestpage/index.html并试图通过 xss 从辅助页面http://xsstest.html启动一个警报框。我似乎无法让警报发生。我认为我的问题是我的 xsstest 页面中的代码没有注入到我的 mytestpage/index.html 页面中。我正在尝试使用 innerhtml,因为我阅读的帖子似乎在 XSS 测试中利用了这一点。我相当确定我没有正确使用innerhtml,或者它不是正确的“工作工具”,我走错了路。任何建议,将不胜感激。
我的 XSS 测试代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>XSS TEST PAGE</title>
</head>
<body>
<body onload="document.forms[0].submit()">
<form method="POST" id="test" onsubmit="test()" action="http://mytestpage/index.html" >
</form>
</body>
<script>
function test(){
alert("Hiya buddy!");
}
document.getElementById().innerHTML = test();
</script>
</html>
测试首页代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>My Test Home Page</title>
</head>
<body>
<form method="post">
<label>Enter Your Name:</label>
<input type="text" name="myname">
<button class="btn" type="submit" name="action" value="submit">Submit</button>
</form>
</body>
</html>
解决方案
你没有做 XSS。您只是在提交表单时显示警报。这也有错误,即 document.getElementById() 需要一个 id 来选择元素。
XSS 是在您有一些输入要输入的地方完成的。因此,您不能在 XSStest 页面中执行 XSS,但您可以通过将测试主页代码更改为
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>My Test Home Page</title>
</head>
<body>
<form method="post" action="some page url">
<label>Enter Your Name:</label>
<input type="text" name="myname">
<button class="btn" type="submit" name="action" value="submit">Submit</button>
</form>
</body>
并假设您在 action 属性中给出的 url 的页面就像
<!DOCTYPE html>
<HTML>
<body>
Name is: <%=request.getParameter("myname")%>
</body>
</HTML>
我假设你在这里使用 jsp。
现在,当您在此页面的输入框中输入 XSS 有效负载并提交时,您提供的 url 的页面将打开并显示警报,因为您在第二页中使用输入值之前尚未对其进行清理。
推荐阅读
- python - python全局命名空间无法访问
- mule - 我正在尝试骡子训练演练 6-3 并获得不同的输出
- mysql - 使用 if 条件或 CASE 连接 4 个表的 Sql Query
- javascript - 使用 PHP 将 HTML 值传递给 url
- javascript - 来自json的D3颜色十六进制
- sql - 如何根据另一个查询的结果评估一个查询?
- xml - 如何通过 XPath 过滤来自 XML 的特定值
- kotlin - Spring数据neo4j不初始化用@Relationship注解的对象
- django - MultiValueKeyDictError Django同时上传csv文件
- qt - 使用 Row/RowLayout 的实用设计场景