我正在测试Android中的XSS漏洞攻击。为此,我开发了一个Web视图,在其中加载了一个html文件,该文件包含用于输入名称和电子邮件的简单表单。 html文件的内容为:
<html>
<body>
<form action="search.php" method="get">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
我通过get将数据发送到一个php文件,该文件回显了name字段中写入的内容。 php文件的内容是:
<html>
<head>
<title> You searched for: </title>
</head>
<body>
<?php
echo $_GET['name'];
?>
</body>
</html>
现在,我的意图是在名称字段中编写Javascript,以便在我回显它时执行脚本。在名称字段中传递的普通字符串会成功回显,因此我知道php代码实际上是有效的。
适用于:Mozilla Firefox。
无法在以下设备上使用:Chrome,Android仿真器,Android真实设备。
编辑:我错过了输入。我在名称字段中添加了Javascript。因此,输入可以是一个简单的脚本,例如:
<script language="Javascript">alert("Hello");</script>
由于我没有清除输入,我希望脚本能够执行。您可以参考此link以获得更多信息。
但是输出是空白页,没有输出,这意味着脚本未执行。
有任何想法吗?
注意:我担心这不适用于仅模拟器/ Android设备,因此请不要为Chrome回答。
最佳答案
尝试使用脚本标记以外的其他字符(例如<b>hello</b>
之类的html)尝试一下,看看它是否呈现为粗体。 Chrome浏览器具有XSS审核程序,可以阻止反射的XSS攻击。检查控制台,看是否是这种情况。
Chrome将在控制台中显示一条说明:
XSS Auditor拒绝在“ ”中执行脚本,因为在请求中找到了其源代码。服务器未发送“ X-XSS-Protection”或“ Content-Security-Policy”标头,因此启用了审核器。
这是有关security.se的相关文章:https://security.stackexchange.com/questions/53474/is-chrome-completely-secure-against-reflected-xss
我刚刚看到了您的修改。我的答案是Chrome,但我怀疑您的android设备正在采用类似的技术(我没有要测试的技术)。如果您想绕过审核员,可以执行以下操作:
<html>
<head>
<title> You searched for: </title>
</head>
<body>
<script>
<?php
echo $_GET['name'];
?>
<script>
</body>
</html>
然后,您可以发出类似?name = alert(1)的请求,审核员可能不会阻止它。