2012-04-11 4 views
1

그래서 제가 일하고있는 사이트 중 하나가 xss 취약점이 있습니다. 그들은 취약점으로 다음 코드를 나에게 다시 전송XSS 트리거링 문제

<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> 

:

일반적인 HTML이있다

<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" /> 

코드 $ 값을 다시 그리는 것은 원시 포스트 데이터이기 :

$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 cart 프레임 워크에 있습니다. 하지만 패치를 설치하는 것보다 이해하고 싶습니다. Zen function reference

+1

당신은 실제로 여기에 코드 중 하나를 표시하지 않습니다) 당신은 정말 당신이 모든 보호를 원하는 경우 최신 버전으로 업그레이드되어야한다. 유용한 의견을 어떻게 기대하십니까? – Amber

+0

알림 :'L2NvbnRhY3RfdX MuaHRtbD9hY3Rpb249c2VuZ CBlbWFpbA =='는 /contact_us.html?action=send 이메일 "'(따옴표 제외)의 base64 인코딩 표현입니다. –

+0

@amber : 이스케이프 처리 중 컨트롤러 코드가 필요한 이유는 무엇입니까? – Rooster

답변

1

알려진 취약성 btw를 가진 오래된 젠 카트 프레임 워크에 있습니다. 하지만 패치를 설치하는 것보다 이해하고 싶습니다.

이전 사이트에는 실제로 알려진 취약점이 있습니다. 수정 사항을 확인하는 가장 빠른 방법은 문제를 해결 한 새 버전의 코드를 가져 와서 파일을 비교하는 것입니다. 관련된 두 개의 파일이 있습니다

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

와 빠른 비교 WinMerge 또는 좋아하는 비교 도구가 차이점을 지적합니다.

관련 문제를 처리하는 부트 스트랩 핵심 코드의 다른 곳에서 수행 된 시스템 전역 위생 조치가 있습니다.

추신 :;

+0

+1, StackOverflow에 대한 유용한 정보를 제공하는 공식 소스를 볼 수있어서 기뻐합니다. – Brad

+0

그 버전에 패치 된 파일을 지적 해 주셔서 감사합니다. 내 문제의 다른 부분은 실제로 악용 사례를 직접 활용하여 문제를 진정으로 이해할 수 있다는 것입니다. 내가 그것을 고쳤던 앞. 나는이 특정 사이트가 커스터마이징되어 있으므로 업그레이드하지 않기로했다. – Rooster

+0

내가 언급 한 두 가지 이외의 다른 버전의 파일에 패치 된 많은 파일이 있다고 덧붙이겠다. 내가 언급 한 것들은 당신이 언급 한 페이지의 렌더링과 처리에 직접 관련된 것들이다. 다른 코어 파일에서도 더 많은 위생 및 XSS 보호가 처리되며 모델/뷰 활동에 사용되는 파일 이상으로 확장됩니다. –