우리 고객 중 일부는 JSONP 엔드 포인트에서 인식 된 XSS 취약점에 관해 의견을 같이했지만 실제로 취약점이 있는지 여부에 대해서는 동의하지 않습니다. 내가 뭔가를 놓치지 않았는지 확인하기 위해 지역 사회의 의견을 얻고 싶었습니다.겉으로 보이는 jsonp xss 취약점
그래서, 어떤 JSONP 시스템, 우리는 같은 엔드 포인트가 : 고객이 불평 한
callback123({"foo":"bar"});
: CB를 매개 변수의 값이 응답에 다시 재생됩니다
http://foo.com/jsonp?cb=callback123
우리는 CB 매개 변수에서 HTML을 필터링하지 않으므로 다음과 같은 예제를 고안합니다.
http://foo.com/jsonp?cb=<body onload="alert('h4x0rd');"/><!--
콘텐츠 유형이 text/html
인 URL의 경우 분명 브라우저가 해당 HTML을 렌더링 한 다음 잠재적 인 악의적 인 JavaScript를 onload 핸들러에서 실행하는 문제가 있습니다. 쿠키를 훔쳐서 공격자 사이트에 제출하거나 심지어 피싱에 대한 가짜 로그인 화면을 생성하는 데 사용될 수 있습니다. 사용자가 도메인을 확인하고 신뢰할 수있는 도메인임을 확인하면 나이가 들고 로그인합니다.
그러나이 경우 콘텐츠 유형 헤더를 application/javascript
으로 설정하여 여러 브라우저에서 다양한 동작을 발생시킵니다. ie Firefox는 원시 텍스트를 표시하지만 IE는 "다른 이름으로 저장 ..."대화 상자를 엽니 다. 나는 그 중 하나가 특히 악용 될 수 있다고 생각하지 않습니다. 파이어 폭스 사용자는 악의적 인 텍스트를 읽지 않고 다리에서 뛰어 내리고 그다지 생각할 필요가 없다고 말합니다. 그리고 IE 사용자는 대화 상자로 저장하고 취소를 누르면 혼란 스러울 수 있습니다.
IE 사용자가 .js 파일을 저장하고 여는 것을 속여서 Microsoft JScript 엔진을 통해 사용자 컴퓨터에 대한 모든 액세스 권한을 얻는 경우를 볼 수 있습니다. 하지만 그럴 것 같지 않습니다. 그게 가장 큰 위협인가요? 아니면 내가 놓친 다른 취약점이 있습니까?
(당연히 일부 자바 스크립트 식별자 만 받아 들일 수 있도록 필터링을 적용 할 것입니다. 다만 놓친 다른 위협에 대한 대화 상자가 필요했습니다. .)
" 내가 뭘 놓쳤을 지 모르는 다른 위협 "이라는 질문이 있습니다. 고객이"불만을 털어 놓았습니다 "라고 하나님 께 감사드립니다. 그들은 귀하의 사이트를 해킹하지 않았 음에 놀랐습니다! – TheBlackBenzKid
또한. 문서.쓰기 및 innerHTML - 내 nginx 서버에서 응용 프로그램/자바 스크립트 헤더를 사용할 때 솔루션으로 이러한 두 가지 명령을 발견 - 내 IE 또는 다른 문제를 해결합니다. 이 페이지는 보통 텍스트 또는 코드를 실행합니다. – TheBlackBenzKid