我正在测试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)的请求,审核员可能不会阻止它。

07-24 09:47
查看更多