2011-09-15 2 views
6

나는 내 사이트에 대해 여러 가지 XSS 공격을 당했다.왜이 XSS 벡터가 브라우저에서 작동하는 이유/방법을 말해 줄 수 있습니까?

<a href="mailto:"> 
<a href=\"http://www.google.com onmouseover=alert(/hacked/); \" target=\"_blank\"> 
<img src="http://www.google.com onmouseover=alert(/hacked/);" alt="" /> </a></a> 

그것은 스크립트가 실행되지해야처럼 보이지만, 나는 브라우저에 HTML로 변환 것을 볼 수 있었다 IE9의 개발 도구를 사용하여 다음 HTML 조각은 공격자에 의해 주입 된 XSS 벡터이다 다음 몇 가지 테스트 후

<a href="mailto:"/> 
<a onmouseover="alert(/hacked/);" href="\"http://www.google.com" target="\"_blank\"" \?=""> 
</a/> 

, 그것은 \가 onMouseover와 "라이브"속성 ""를가한다 "고 밝혀,하지만 난 이유를 모르는이 벡터는

+1

\ "이 (가) 주석 처리하고있는 것 같습니다."(인용 부호가있는) URL의 일부로 남습니다. HTML에서 따옴표없이 속성 값을 가질 수 있습니다. 도 유효합니다. 그러나 이것은 흥미 롭습니다. 나는 그런 식으로 작동하지 않았다는 것을 알지 못했다. – Erlend

+0

","앞에있는 문자가 속성 값의 일부로 바뀐다. – Erlend

답변

5
성공 이유를 아는 사람 있나요.?를

의견을 요약하면 다음과 같습니다. 문자를 사용하면 따옴표를 값의 시작과 끝을 표시하는 대신 속성 값의 일부로 바꿀 수 있습니다.

href=a"http://www.google.com onmouseover=alert(/hacked/); \" 

HTML은 quoteless 속성 수 있도록, 그래서 주어진 값이 개 속성이된다 ​​: 이 마찬가지로 잘 작동합니다.

관련 문제