2011-10-07 2 views
1

우리는 다음과 같이 우리의 프리 마커 템플릿의 스트럿 URL 태그를 사용Struts2 프리 마커 XSS 내 응용 프로그램의 취약점

<s.url action="struts-action-name"/> 

문제는 대신 응용 프로그램의 루트 URL로 작업 URL을 추가로 실제로 추가 점이다 현재 URL에 추가하십시오.

<form action="<s.url action="struts-action-name"/>"> 

렌더링 된 FTL이과 같습니다 :

우리가 www.example.com/community/examples/xss187ba"><ScRiPt>alert(1)</ScRiPt>506d1768713/career_development을 공격하고, 해당 페이지의 FTL에서 우리는이 같은 양식을 말해봐에게 경고를 발생

<form action="/community/examples/xss187ba"><ScRiPt>alert(1)</ScRiPt>506d1768713/career_development"> 

팝업 ...이 문제를 다룰 사람이 있습니까? Struts의 버그입니까? 아니면 여기서 뭔가 잘못하고 있습니까?

명백한 수정이 같은 URL 태그를 사용하는 것입니다 빠른 검색이 프로젝트에 해당 태그 2500 개 사용을 보여주고 리팩토링 반면에

<form action="<s.url value="/struts-action-name.jspa"/>"> 

을 모든 사람은 매우 재미되지 않을 것/효율적인 작업 :(

어떤 도움이 의견이나 제안은 높게 평가 될 것이다.

-Andre

답변

0

당신은 org.apache.struts2.views.jsp.URLTag 및 REPL을 확장 할 수 끝내기를 원하거나 struts-tags.tld에 새 태그를 추가하십시오.

0

나는 URL의 해당 부분을 자동으로 URL 인코딩하지 않는다는 것을 알기에 그것이 내가 기대하는 바입니다. 그래서 이것을 버그라고 생각합니다. Struts 개발자에게이 점에 대해 문의하십시오. 다른 태그의 대부분은 자동 인코딩을하기 때문에이 태그는 자동 인코딩을하지 않습니다.

1

url 태그는 애플리케이션에 상대적으로 URL을 생성합니다.이 경우 구성된 액션 이름을 기반으로합니다. "f1"이라는 액션과 루트 배포를 가정하면 태그가 생성하는 유일한 것은 /f1.action (또는 확장자가없는/f1)입니다.

을 감안할 때 :

<struts> 
    <constant name="struts.devMode" value="true"/> 
    <constant name="struts.action.extension" value=",,action"/> 

    <package name="default" namespace="/" extends="struts-default"> 
    <action name="f1" class="radios.RadioAction" method="input"> 
     <result name="input" type="freemarker">/WEB-INF/radios/input.ftl</result> 
    </action> 
... 

프리 마커 조각 :

<@s.url action="f1"/> 

출력됩니다 : 당신이 대회처럼 (특정 플러그인을 사용하고 있습니다 : 당신은 더 많은 정보를 제공해야 할 수도 있습니다

/f1 

), 등?

관련 문제