【问题标题】:XSS triggering troubleXSS触发问题
【发布时间】:2012-04-24 04:20:54
【问题描述】:

所以我正在处理的网站之一显然存在 xss 漏洞。

正常的html是这样的:

<form name="contact_us" action="somewhere" method="post">
<div id="contactUsNoticeContent" class="content"></div>
<fieldset id="contactUsForm">
<legend>Contact Us</legend>
<div class="alert forward">* Required information</div>
<label class="inputLabel" for="contactname">Full Name:</label>
<input type="text" name="contactname" size="40" id="contactname"><span class="alert">*
</span><br class="clearBoth">
<label class="inputLabel" for="email-address">Email Address:</label>
<input type="text" name="email" size="40" id="email-address"><span class="alert">*
</span><br class="clearBoth">

<label for="enquiry">Message:<span class="alert">*</span></label>
<textarea name="enquiry" cols="30" rows="7" id="enquiry"></textarea>
</fieldset>

<div class="buttonRow forward"><input type="image"src="an image src" alt="Send Now" 
title=" Send Now "></div>
<div yourface" alt="Back" title=" Back " width="85" height="25"></a></div>
</form>

他们将以下代码作为漏洞发回给我:

<input type="text" name="email" value="
<s cript>alert('S AINTL2NvbnRhY3RfdX MuaHRtbD9hY3Rpb249c2VuZ CBlbWFpbA==')
</s cri pt>" s ize="40" id="emailaddress " /><s pan clas s ="alert">*</s pan>
<br clas s ="clearBoth" />

重绘$value的代码是原始帖子数据:

 $field = '<input type="' . zen_output_string($type) . '" name="' . 
zen_output_string($name) . '"';
if ( (isset($GLOBALS[$name])) && ($reinsert_value == true) ) {
$field .= ' value="' . zen_output_string(stripslashes($GLOBALS[$name])) . '"';
} elseif (zen_not_null($value)) {
$field .= ' value="' . zen_output_string($value) . '"';
}
if (zen_not_null($parameters)) $field .= ' ' . $parameters;
$field .= ' />';

我猜当提交表单时,应该在页面重新加载时显示警报?我似乎无法触发这个。我认为我需要做的就是在将其重新发布到表单以修复它之前摆脱该值,但现在我有点好奇我做错了什么,我似乎无法触发它。任何人都知道如何重现这个或我做错了什么?

它位于带有已知漏洞的旧 zen cart 框架上。但我想了解它们,而不仅仅是安装补丁。 Zen function reference

【问题讨论】:

  • 您实际上并未在此处显示任何代码。您如何期待任何有用的反馈?
  • 注意:L2NvbnRhY3RfdX MuaHRtbD9hY3Rpb249c2VuZ CBlbWFpbA=="/contact_us.html?action=send email" 的 base64 编码表示(不带引号)。
  • @amber:你需要什么控制器代码来查看正在做什么转义?
  • 经验法则是,如果您向用户回显某些内容,例如他的姓名、电子邮件等,您从表单中收到 &(failed to sanitize),那么您应该将其传递给 htmlentities()在你看来。在名称或此类内容的表中存储长度为 varchar(255)TEXT 将允许插入更大的攻击代码
  • 我尝试将以下内容放入输入并提交,但我无法让它产生警报:alert('S AINTL2NvbnRhY3RfdX MuaHRtbD9hY3Rpb249c2VuZ CBlbWFpbA==') cript >" s ize="40" id="emailaddress" />*pan>

标签: php javascript xss zen-cart


【解决方案1】:

它位于带有已知漏洞的旧 zen cart 框架上。但我想了解它们,而不仅仅是安装补丁

您的旧网站确实存在已知漏洞。查看修复的一种非常快速的方法是获取新版本的代码(修复了问题)并比较文件。 涉及两个文件:

  • /includes/modules/pages/contact_us/header_php.php
  • /includes/templates/NAME_OF_YOUR_TEMPLATE/templates/tpl_contact_us_default.php

与 WinMerge 或您最喜欢的比较工具的快速比较将为您指出差异。

在引导核心代码的其他地方还采取了进一步的系统范围的清理操作,这些操作也处理相关问题。

PS:如果你想要所有这些保护,你真的应该升级到最新版本;)

【讨论】:

  • +1,很高兴看到官方消息来源参与提供有关 StackOverflow 的有用信息
  • 我明白了。感谢您指出该版本中修补的文件。我的部分问题是不知道确切的位置。我的问题的另一部分是我实际上想自己利用这个漏洞,以便在我修复它之前真正理解这个问题。有人告诉我这个特定的网站是高度定制的,所以我选择不尝试升级它。
  • 我要补充一点,除了我提到的两个之外,该版本中还有很多其他文件已修补。我提到的只是那些与你提到的页面的渲染和处理直接相关的那些。在其他核心文件中也处理了更多的清理和 XSS 保护,并且超出了仅用于模型/视图活动的文件。
猜你喜欢
  • 2018-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 2011-07-18
  • 2021-06-05
  • 1970-01-01
相关资源
最近更新 更多