Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
Security 什么';这是在POST请求中使用XSS窃取信息的场景_Security_Post_Xss - Fatal编程技术网

Security 什么';这是在POST请求中使用XSS窃取信息的场景

Security 什么';这是在POST请求中使用XSS窃取信息的场景,security,post,xss,Security,Post,Xss,我了解在GET帖子上使用XSS窃取信息的情况,如下所示: 黑客通过查询字符串参数识别web应用程序中存在被XSS注入漏洞的页面 黑客用附加的XSS注入查询字符串组成url 黑客通过电子邮件等方式将url发送给受害者 受害者收到邮件并单击url(假设受害者对安全性了解较少) 打开的网页已注入XSS,对该网页的任何进一步操作都可能导致安全问题 这是可能的,因为单击url链接将在GET模式下打开网页。因此,我想知道,如果该页面对于POST请求是XSS易受攻击的,这会是一个安全问题吗?我无法找出一个“合

我了解在GET帖子上使用XSS窃取信息的情况,如下所示:

  • 黑客通过查询字符串参数识别web应用程序中存在被XSS注入漏洞的页面
  • 黑客用附加的XSS注入查询字符串组成url
  • 黑客通过电子邮件等方式将url发送给受害者
  • 受害者收到邮件并单击url(假设受害者对安全性了解较少)
  • 打开的网页已注入XSS,对该网页的任何进一步操作都可能导致安全问题
  • 这是可能的,因为单击url链接将在GET模式下打开网页。因此,我想知道,如果该页面对于POST请求是XSS易受攻击的,这会是一个安全问题吗?我无法找出一个“合理”的攻击工作流

    所以,我想知道,如果该页面是XSS脆弱的POST请求,这将是一个安全问题

    当然会。为什么嵌入外部代码的方法很重要?问题在于它是否发生,而不是如何发生

    我无法找出一个“合理”的攻击工作流

    考虑一个简单的HTML表单,该表单在服务器端验证失败后预先填充了以前的用户输入

    如果这个预上传允许XSS(基本上就是说,忽略了在HTML上下文中输出数据之前转义所有数据),那么我可以在自己的页面中轻松设置一个表单,让它的
    action
    属性指向您的表单处理地址,并通过隐藏字段传递我喜欢的任何数据——用户必须通过一个简单的提交按钮将数据发送到您的服务器,该按钮的格式可能看起来就像一个普通的链接,并且只说“单击此处转到example.com”。用户希望像任何其他链接一样“正常”打开页面——但实际上,它发送的值会触发再次显示带有预填充字段的表单

    等等,XSS攻击成功执行


    (所有这些都是在目标站点没有针对“外来”表单数据的额外安全性的前提下进行的。)

    攻击者还可以构建一个包含自动提交表单的“数据:”URL:

    数据:text/html;base64,PGh0bWw+CiAgPGJvZHkgb25sb2FkPSJkb2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKSI+CIAGICA8ZM9YBSBTZROB2Q9INBc3QigfjDglVbJ0Iahr0CDOv2xVy2Fsag9ZDCi+CIAGIgagicagidXPBNB1Db0ExblpsJoawrKW4IIG5HBWU9YWWW0IYW0IPHJJJJJJJ9YLDD5HBG8JJJJJJ0LW8JJJJJJ0LW0LW4GPL2BW2BW2BWK8JJJJ0L8JJ0L8+

    这相当于导航到包含此标记的页面:


    在为客户执行渗透测试时,正好遇到了这个问题。在报告时,我们通常尝试使用GET请求显示概念验证漏洞,因为这要容易得多。还请记住,某些服务器可能允许您将POST更改为GET请求。一些服务器还将接受URL中的POST参数值。在我最近的经验中,服务器只接受输入表单字段的请求作为POST。唯一能阻止XSS攻击的是,他们有跨站点请求伪造预防措施(通过ViewState)。因此,在这种情况下,它只是一个反射断层。还是不好,但也不坏。您应该始终使用入口和出口过滤,并且永远不要信任用户可控制的数据。

    感谢您的快速回答!我的意思是起始页面是一个只接受POST请求的页面,比如my_POST_request.aspx。据我所知,我需要准备一个嵌入XSS字符串的完整post请求并将其发送到服务器,然后服务器响应我一个包含XSS操作的页面,该页面存在安全问题。但我不明白这是怎么发生的,因为如果我将页面URL(my_post_request.aspx)发送给其他人,而其他人的单击操作是获取操作,而不是期望的发布操作。XSS不仅仅是将URL发送给其他人——正如我在示例中所说的,我可以使用隐藏字段将数据构建到自己的页面中,还有,你提交了一个带有误导性描述的按钮。好的,那么我知道我也应该处理POST请求的安全问题。谢谢你的回答!你能和我分享更多信息吗?什么是数据URL?我对此一无所知?有参考资料吗?