【问题标题】:xss attack - more info required to patch [closed]xss 攻击 - 修补所需的更多信息 [关闭]
【发布时间】:2015-08-13 13:41:04
【问题描述】:

谁能解释一下下面的 xss 漏洞是如何工作的(是什么)以及修复的最佳方法(使用 php)

https://www.domain.com/page.php?tid=11%22%3E%3Cimg%20src=x%20onerror=alert%28document.cookie%29%3E&id=82

【问题讨论】:

  • URL 本身不是 XSS 漏洞。没有什么可修复的。可能使用查询字符串数据的代码易受攻击,但我们无法准确评论您未向我们展示的代码。
  • 您很可能在页面上执行echo $_GET['tid']; 之类的操作,而没有清理字符串。
  • 换一种说法,他们想用这个来达到什么目的?它在最近的审计中被标记
  • 抱歉有点模棱两可,get 变量已经过清理,但不知何故还不够。我的问题是我不明白黑客攻击
  • @Jeff 我已经编辑了我的答案,现在它完全解释了你的情况

标签: javascript php xss


【解决方案1】:

回答: 您显然是在页面的某处输出原始用户输入(在您的情况下为 $_GET['tid']),而没有从特殊的 HTML 字符中“清除”它。

"> 部分关闭页面上一些以前打开的 HTML 标记,

<img src=x onerror=alert(document.cookie)>插入img标签,来源无效,会导致加载错误,触发onerror-bound javascript。

所以...如果您的 php 代码中有这样的内容:

    <a href="<?php echo $_GET['tid']?>"> some link </a>

它将像这样返回到浏览器(使用您的示例中的 $_GET['tid'] ):

    <a href=""><img src=x onerror=alert(document.cookie)>"> some link </a>

所以浏览器会:

1) 将a 解析为带有空href 的链接

2) 尝试加载图片失败

3) 执行imgonerror javascript,这将警告cookie(在实际攻击中,这部分不仅会警告cookie,还会将它们发送到攻击者的服务器)

建议:

1) 永远不要信任/输出原始用户输入(htmlspecialchars() 用于您的 $_GET 参数)

2) 仅接受/解析适当的类型(intval()(int) 用于您的 $_GET 参数)

【讨论】:

  • 这不是一个答案,而是一个建议。请使用 comment 功能来处理此类事情。
  • 觉得我在这里浪费了人们的时间,所以很抱歉 - 深入研究并发现了一个不受保护的变量
猜你喜欢
  • 2010-11-08
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
  • 2021-01-30
  • 1970-01-01
  • 2018-12-23
  • 2022-01-08
相关资源
最近更新 更多