1

私が取り組んでいるサイトの 1 つに 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 関数リファレンス

4

1 に答える 1

1

これは、既知の脆弱性を備えた古い禅カートフレームワーク上にあります。しかし、パッチをインストールするだけでなく、それらを理解したい

あなたの古いサイトには確かに既知の脆弱性があります。修正を確認する非常に簡単な方法は、新しいバージョン(問題を修正した)のコードを取得してファイルを比較することです。関連するファイルは2つあります。

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

WinMergeまたはお気に入りの比較ツールと簡単に比較すると、違いがわかります。

関連する問題も処理する、ブートストラップコアコードの他の場所で実行されるシステム全体のサニタイズアクションがさらにあります。

PS:これらすべての保護が必要な場合は、実際に最新バージョンにアップグレードする必要があります;)

于 2012-05-07T02:55:35.123 に答える