2010-05-06 2 views

답변

5

네,보고있는 것은 반사 형 XSS 공격입니다. 이는 공격자가 인증 된 세션을 하이재킹 할 수 있기 때문에 위험합니다. 시스템에서이 코드를 실행하면 침입자는 사용자 이름/암호를 알 필요없이 다른 사람 계정에 액세스 할 수 있습니다.

XSS 취약점은 CSRF protection을 우회하는 데에도 사용할 수 있습니다. XSS를 사용하면 공격자가 XmlHTTPRequest를 사용하여 CSRF 토큰 값을 읽을 수 있기 때문입니다. XSS는 또한 리퍼러 점검을 속일 수 있습니다. 여기

수동으로 XSS를 테스트하는 간단한 방법입니다, 여기에 내가 자바 스크립트를 실행하기 위해 HTML 주석의 돌발하고있다.

http://localhost/xss_vuln.jsp?paramName='--><script>alert(document.cookie)</script><!--' 

무료 xss scanner입니다. 작성한 모든 응용 프로그램을 테스트해야합니다.

+1

모두가 아니더라도 대부분의 xss 스캐너는 XSS 취약점 중 가장 간단한 클래스 만 찾아 매우 제한된 공격 벡터 집합 만 사용한다는 점에 유의하십시오. 코드를 수정하면 문제를 더 잘 이해할 수 있습니다. 몇 가지 간단한 규칙은 http://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet를 참조하십시오. – Cheekysoft

+0

@Cheekysoft 매우 사실이지만, 또한 공격자가 응용 프로그램에 대해 동일한 간단한 테스트를 사용하고있을 가능성이 높습니다. 100 %는 아무것도 아니며 공격자가 갖는 또 하나의 이점입니다. – rook

1

는 JSP 파서는 템플릿 텍스트으로 HTML 주석을 처리합니다. 그것의 내용을 무시하지 않습니다. HTML 주석은 HTML 파서/해석기 (webbrowser!)에 의해서만 무시됩니다. 대신 JSP 주석을 사용하여 JSP 파서가 특정 코드를 처리하지 못하게해야합니다.

<%-- <%=paramName%>=<%=request.getParameter(paramName)%><BR> --%> 

<!-- --> HTML 주석 스타일 반대로 <%-- --%> 스타일. JSP 파서는 구문 분석하지 않지만 은 출력에서 ​​을 제거합니다. 따라서 생성 된 HTML 출력에서이를 볼 수 없습니다.

사용자가 입력 한을 여기에서 벗어나지 않기 때문에 XSS 위험이 여기에 있습니다. 요청 매개 변수는 종단에 의해 완벽하게 제어 할 수 있습니다. 최종 사용자는 예를 들어 --><script>alert('xss')</script><!--을 매개 변수 값으로 전달할 수 있으며 실행됩니다. 이것은 XSSCSRF 공격에 대해 문을 활짝 열어 놓습니다. 악성 스크립트는 예를 들어 모든 쿠키를 ajax 요청으로 악의적 인 서버에 보냅니다. 그런 다음 공격자는 쿠키 값을 복사하여 자신으로 로그인 할 수 있습니다.

사용자가 제어하는 ​​입력을 피하려면 JSTLc:out 태그 또는 fn:escapeXml 함수를 사용해야합니다. 나는 각각 here 아래에 여러 번 전에 자세히 대답했습니다. CSRF에 대한 자세한 설명은 내 대답 here에서 찾을 수 있습니다.

+0

JSTL 태그가 서버에서 클라이언트까지 오는 XSS에 유용하지만 클라이언트에서 서버로가는 경우에는 유용하지 않다고 들었습니다. 이 경우 요청은 서버가 아닌 클라이언트에서오고 JSTL은이 공격을 어떻게 막을 것입니까? 제 의심을 분명히하십시오. 당신의 도움을 주셔서 감사합니다! – Sam

+0

@Sam : XSS 콘텐츠는 서버에서 무해합니다.XSS는 HTML 코드에서 사용자가 제어하는 ​​입력을 다시 표시하는 동안에 만 문제가됩니다. HTML은 웹 서버에서 전혀 실행되지 않고 웹 서버 *는 HTML을 생성합니다. http://stackoverflow.com/questions/2658922/xss-prevention-in-java/2658941#2658941 – BalusC

+0

도움 주셔서 감사합니다. 이 유용한 링크를 살펴 보았습니다. 링크 아래에 다른 스레드를 게시했지만이를 방지하는 방법에 대한 적절한 답변을 얻지 못했습니다. http://stackoverflow.com/questions/16743043/how-to-prevent-xss-attack/16743710?noredirect=1#16743710 코드를 살펴보고 제안 해 주시겠습니까? – Sam

관련 문제