Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSS-使用PHP执行Javascript_Javascript_Php_Android_Android Webview_Xss - Fatal编程技术网

XSS-使用PHP执行Javascript

XSS-使用PHP执行Javascript,javascript,php,android,android-webview,xss,Javascript,Php,Android,Android Webview,Xss,我正在Android中测试XSS漏洞攻击。为此,我开发了一个web视图,其中我加载了一个html文件,其中包含一个用于输入姓名和电子邮件的简单表单。html文件的内容包括: <html> <body> <form action="search.php" method="get"> Name: <input type="text" name="name"><br&

我正在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文件,该文件回显名称字段中写入的内容。php文件的内容包括:

<html>
<head>
<title> You searched for: </title>
</head>
<body>
<?php
    echo $_GET['name'];
?>
</body>
</html>

您搜索了:
现在,我的意图是在name字段中编写Javascript,这样当我回显它时,脚本就会被执行。在name字段中传递的普通字符串被成功地回显,因此我知道php代码实际上正在工作

这适用于:Mozilla Firefox

不适用于:Chrome、Android Emulator、Android real设备

编辑:我没有输入。我正在名称字段中添加Javascript。因此,输入可以是一个简单的脚本,例如:

<script language="Javascript">alert("Hello");</script>
警报(“你好”);
因为我没有清理输入,所以我希望脚本能够执行。有关更多信息,请参阅此文档

但是输出是一个没有输出的空白页,这意味着脚本不会被执行

有什么想法吗


注意:我担心的是,这不能仅用于emulator/Android设备,因此请不要使用Chrome。

尝试使用脚本标记以外的其他标记,例如一些html,如
hello
,并查看它是否呈现为粗体。Chrome有一个XSS审核员,可以阻止反射的XSS攻击。检查控制台,看看是否是这种情况

Chrome将在控制台中显示一条注释,上面写着:

XSS Auditor拒绝在“”中执行脚本,因为在请求中找到了其源代码。由于服务器既不发送“X-XSS-Protection”也不发送“Content Security Policy”标头,因此启用了审核程序

下面是一篇关于security.se的相关文章:

我刚看到你的编辑。我的答案是针对chrome的,但我怀疑你的android设备采用了类似的技术(我没有一个可以测试)。如果您想绕过审核员,可以执行以下操作:

<html>
   <head>
      <title> You searched for: </title>
   </head>
   <body>
      <script>
         <?php
            echo $_GET['name'];
         ?>
      <script>
   </body>
</html>

您搜索了:

然后您可以发出一个请求,如?name=alert(1),审计员可能不会阻止它

不知道你的问题是什么。你在传递什么?你预计会发生什么,以及实际发生了什么?你的问题不清楚。我的答案是关于Chrome的,但一般来说,你可以用我描述的技术来验证发生了什么。许多现代浏览器都反映了XSS防护技术,所以您可以通过查看常规HTML呈现是否受到XSS防护的影响,而javascript是否被拒绝来测试。嗨,格雷,谢谢您的建议。你是对的,你的建议在Chrome和emulator中都很有效。我怀疑模拟器也有同样的拒绝Javascript的机制。但是对于攻击者来说,服务器php是不可访问的,所以我想知道是否有任何方法可以在不修改服务器文件的情况下执行此操作。为了演示的目的,这只是做的很好,但我真的希望有一种方法可以做到这一点,使用第一种方法类似于在链接中+作为一个攻击者(很好,是一个模拟的攻击者),XSS auditor可能是一个真正的麻烦,但就像web应用程序防火墙一样,你不能把安全软件放在不安全的代码之上而期望安全。审核员通常有很多方法,但这取决于代码的编写方式。没有通用旁路(据我所知),如果你发现了一个,谷歌可能会付给你一笔bug赏金(取决于它的严重程度)。你可以做一个演示,在那里你打破了一个使用引号未编码的属性;我很肯定审计员不会明白的。e、 g.`有效载荷可能类似于
x“onload=alert1();alt=“x
Hi Gray,您能告诉我应该尝试的确切输入吗。应该是吗?很抱歉,我是Javascript新手,所以我不能完全理解它。我已经阅读了alt、src、onload、title的描述,但如果您能提供我应该在文本框中键入的确切输入,我将不胜感激。再次感谢!根据你的评论,我添加了一个,但仍然没有运气。