2011-08-12 4 views
2

내 회사는 특정 응용 프로그램의 모든 보안 문제를 해결할 작업을 제공했습니다. 보안 검색에서 크로스 사이트 스크립팅 오류가보고되었습니다. 이 오류는 다음과 같은 입력 필드에있다 :숨겨진 입력을 사용한 교차 사이트 스크립팅

<input type="hidden" name="eventId" value="${param.eventId}"/> 

보안의 보고서는 매우 상세한하지 않았다, 그러나 그들은 다음과 같은 악성 코드를 포함하여 위의 태그가 페이지에 POST 요청을 할 수 있다고 :

나는 "해커가 될"및 취약점을 보여주기 위해 노력하고

<input type="hidden" name="eventId" value=""><sCrIpt>alert(83676)</sCrIpt></value> 

: 페이지를 다시로드, 그것은 것입니다 때 다음

eventId=%22%3e%3csCrIpT%3ealert(83676)%3c%2fsCrIpT%3e 

그리고 그 . 그러나 나는 그곳에서 스크립트를 어떻게 관리하는지 알 수 없다. 나는 그들이 양식에 대한 GET 요청의 URL 매개 변수로 포함시키는 것으로 추측하지만, 직접 시도 할 때 403 오류가 발생합니다. 누구든지 취약점을 보여줄 수있는 방법을 알고 있습니까?

사이트에 XSS 관련 질문이 많이 있지만이 주제에 대해서는 아무도 알지 못합니다.

+0

방법 URL에 추가 했습니까? 다른 매개 변수는 어디에 있습니까? – Erlend

답변

3

그럼 왜 확실하지는 않지만 원래의 직감은 옳았습니다. 스크립트는 URL 매개 변수로 넣을 수 있습니다. 웬일인지, 이것은 준비 사이트와 함께 작동하지 않고 있었다. 응용 프로그램을 로컬에서 실행해야합니다. 이유는 모르겠지만 (로컬에만 해당) :

http://localhost:8080/myUrl/MyAction.do?eventId=%22%3e%3csCrIpT%3ealert(83676)%3c%2fsCrIpT%3e 

이렇게하면 경고 상자가 나타납니다. JSTL 기능을 사용하여 문제를 해결할 계획입니다.

0

문제를 해결하려면 HTMLAttributeEncode를 값 특성 내에두기 전에 값을 입력하십시오. HTML 특성 인코딩을 수행하는 방법은 OWASP ESAPI 또는 MS AntiXSS를 참조하십시오. 공격 문자열이 URL 인코딩 인 방법을 살펴보면 GET 매개 변수가 합리적인 것처럼 보일 것이라고 생각합니다.

1

제출하기 전에 데이터를 편집 할 수있는 Firefox 브라우저에 [TamperData][1] 부가 기능을 설치하십시오. 그것이 POST 또는 GET 인 경우 중요하지 않습니다.

이 사용하면 hidden fieldsedited 일 수 있습니다.

0

레거시 JSP로 JSTL을 사용할 수 없었기 때문에 나는 OWASP ESAPI API를 사용했습니다. 이것은 내가 사용하는 것입니다 :

<input type="hidden" name="dataValue" value="<%=ESAPI.encoder().encodeForHTMLAttribute(dataValue)%>"> 
또한 같이 나 또한 필요 request.Parameter()를 필터링 할 API를 사용할 수 있습니다

:

String userURL = request.getParameter("userURL") 
boolean isValidURL = ESAPI.validator().isValidInput("URLContext", userURL, "URL", 255, false); 
if (isValidURL) { 
    <a href="<%=encoder.encodeForHTMLAttribute(userURL)%>">link</a> 
} 

과 :

String name = (String) request.getParameter("name"); 
name = ESAPI.validator().getValidInput("name ", name , "SafeString", 35, true); 
관련 문제