2012-04-11 100 views
1

因此,我正在處理的其中一個站點顯然存在xss漏洞。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" /> 

代碼重繪$值是原始post數據:

$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 .= ' />'; 

我猜,當表單提交時,應該在頁面重新載入時顯示警報?我似乎不能觸發這個。我想我需要做的就是擺脫價值之前,我重新發布到形式來解決它,但現在我有點好奇我做錯了,我似乎無法觸發它。任何人有任何想法如何我可以重現這個或我做錯了什麼?

它是在一箇舊的禪宗購物車框架與已知的漏洞btw。但我想了解它們而不是隻安裝補丁。 Zen function reference

+1

其實你不表現出任何你的代碼在這裏。你如何期待任何有用的反饋? – Amber 2012-04-11 20:09:01

+0

注意:'L2NvbnRhY3RfdX MuaHRtbD9hY3Rpb249c2VuZ CBlbWFpbA =='是''/contact_us.html?action=send email「'(不含引號)的base64編碼表示形式。 – 2012-04-11 20:09:35

+0

@amber:你需要什麼控制器代碼才能看到正在進行的轉義? – Rooster 2012-04-11 20:12:47

回答

1

這是一個老的禪宗車架構與已知的漏洞btw。但我想了解它們而不是隻安裝修補程序

您的舊網站的確有已知的漏洞。查看修復程序的一種非常快速的方法是獲取新版本的代碼(解決了問題)並比較文件。 有兩個文件涉及:

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

與快速比較WinMerge或您最喜愛的比較工具將爲您指出差異。

在自舉核心代碼中的其他地方還有一些系統範圍的消毒行爲,這些行爲也處理相關問題。

PS:你真的應該,如果你想所有這些保護措施將升級到最新版本;)

+0

+1,很高興看到有關StackOverflow的有用信息參與的官方消息來源 – Brad 2012-05-07 03:12:55

+0

我明白了,謝謝你指出那個版本的補丁文件,我的部分問題並不知道到底在哪裏我的問題的另一部分是我真的想利用這個漏洞,所以我可以真正理解這個問題前面我解決了它。我被告知,這個特定的網站是高度定製的,所以我選擇不嘗試升級它。 – Rooster 2012-05-08 17:00:52

+0

我想補充說的是,除了我提到的兩個版本之外,還有很多其他文件修補的版本。我提到的那些只是那些與你提到的頁面的渲染和處理直接相關的。其他核心文件中還有更多的衛生處理和XSS保護處理,並超出了用於模型/視圖活動的文件。 – 2012-05-09 03:23:41