Shaadi.com에 취약한 Reflected Cross-Site Scripting 발견

Jan 28 2023
shaadi.com에서 Reflected XSS 취약점을 발견했습니다. 이는 공격자가 웹사이트에 악성 코드를 주입할 수 있음을 의미하며, 이는 피해자가 영향을 받는 페이지를 방문할 때 피해자의 브라우저에서 실행됩니다.

shaadi.com에서 Reflected XSS 취약점을 발견했습니다. 이는 공격자가 웹사이트에 악성 코드를 주입할 수 있음을 의미하며, 이는 피해자가 영향을 받는 페이지를 방문할 때 피해자의 브라우저에서 실행됩니다. 이는 양식을 통해 또는 적절하게 삭제되거나 확인되지 않은 웹 사이트의 다른 입력 필드에서 발생할 수 있습니다.

교차 사이트 스크립팅에 반영되는 것은 무엇입니까?

반영된 교차 사이트 스크립팅(XSS) 에서, 악성 코드는 요청의 일부로 서버에 전송된 다음 응답으로 사용자에게 다시 반영됩니다. 이는 사용자 입력이 응답에 포함되기 전에 서버에서 적절하게 삭제 또는 검증되지 않은 경우에 발생할 수 있습니다. 악성 코드는 피해자가 영향을 받은 페이지를 볼 때 피해자의 브라우저에서 실행됩니다. Reflected XSS는 악성 코드가 요청을 통해 페이지에 삽입되는 것이 아니라 서버에 저장되고 영향을 받는 페이지를 보는 모든 사용자에게 제공되는 Stored XSS와 다릅니다. Reflected XSS는 서버측 코드가 아닌 클라이언트측 코드에 취약점이 있고 페이지가 로드되는 즉시 악성 스크립트가 실행될 수 있는 DOM 기반 XSS와도 다릅니다. 두 가지 유형의 XSS 모두 민감한 정보를 훔치는 데 사용될 수 있다는 점에 유의해야 합니다.

실제로 일어난 이유는 무엇입니까?

이렇게 된 이유는 3가지..

  1. Jquery Library 1.4.2는 구식이며 최신 버전은 3.6.1입니다.

3. 매개변수가 제대로 살균되지 않습니다.

이제 실제 문제는 제출 양식을 보낼 때 POST 메서드가 되고 이 POST 메서드가 Self-Xss(Cross-site Scripting) 로 표시된다는 것입니다 .

Self-Xss(Cross-site Scripting)란?

Self-XSS는 공격자가 피해자를 속여 자신의 웹 브라우저에서 악성 코드를 실행하도록 하는 XSS(교차 사이트 스크립팅) 취약점의 한 유형입니다. 이는 일반적으로 피해자가 브라우저의 개발자 콘솔이나 URL 표시줄에 악성 코드를 붙여넣거나 입력하게 함으로써 이루어집니다. 공격은 피해자가 실수로 악성 코드를 실행하는 사람이기 때문에 "자신"으로 간주됩니다. 이러한 유형의 취약성은 공격자가 피해자를 속여 실행하도록 속이기 위해 공격자가 악성 코드를 무해한 것으로 위장하는 피싱 또는 사회 공학 공격에 자주 사용됩니다.

이제 JavaScript를 GET 메서드로 실행해야 합니다. 그래서 우선 매개변수 이름을 알아야 합니다.

매개변수 이름을 어떻게 이해할 수 있습니까?

  1. 입력 필드를 마우스 오른쪽 버튼으로 클릭하십시오.

이제 여기에서 작동 방식을 볼 수 있습니다…

{버프 보기}

{브라우저 보기}

이것이 제가 모든 매개변수 이름, partner_name, 이메일, partner_email 및 설명을 얻을 수 있는 방법입니다.

영향:

XSS(Reflected Cross-Site Scripting)는 공격자가 다른 사용자가 보는 웹 페이지에 악성 코드를 삽입할 수 있는 웹 보안 취약점의 한 유형입니다. 이를 통해 공격자는 로그인 자격 증명 또는 개인 데이터와 같은 민감한 정보를 훔치거나 무단 구매 또는 악성 콘텐츠 게시와 같은 피해자를 대신하여 작업을 수행할 수 있습니다. 반영된 XSS 공격의 영향은 영향을 받는 웹 페이지를 보는 모든 사용자에게 잠재적으로 영향을 미치고 웹 사이트 또는 온라인 서비스에 대한 신뢰 상실로 이어질 수 있으므로 심각할 수 있습니다.

완화:

  1. 입력 검증: 악성 코드 삽입을 방지하기 위해 사용자 입력이 적절하게 검증되었는지 확인합니다. 이것은 허용된 문자의 화이트리스트를 사용하거나 특수 문자를 자동으로 이스케이프 처리하는 라이브러리 또는 프레임워크를 사용하여 수행할 수 있습니다.
  2. 출력 인코딩: 웹 페이지에 표시하기 전에 사용자 제공 데이터를 적절하게 인코딩합니다. 이렇게 하면 삽입된 코드가 브라우저에서 실행되는 것을 방지할 수 있습니다.
  3. 콘텐츠 보안 정책(CSP): CSP 헤더를 사용하여 브라우저에서 로드할 수 있는 콘텐츠 소스를 지정합니다. 이렇게 하면 스크립트 또는 iframe 요소에 포함된 악성 코드가 실행되는 것을 방지할 수 있습니다.
  4. Http 전용 및 보안 쿠키 사용: 쿠키에 HttpOnly 및 보안 플래그를 사용하여 악성 스크립트가 쿠키에 액세스하지 못하도록 합니다.
  5. 소프트웨어를 최신 상태로 유지: 웹 사이트(웹 서버, 프레임워크 등)에서 사용되는 소프트웨어를 최신 상태로 유지하여 출시된 보안 수정 사항을 활용하십시오.
  6. 보안 테스트 도구 사용: OWASP ZAP, Nessus, Burp Suite 등과 같은 보안 테스트 도구를 사용하여 웹사이트의 취약점을 확인하고 스캔합니다.
  7. 보안 인식 교육: 웹 사이트에서 일하는 모든 직원과 개발자에게 보안 인식 교육을 제공하여 XSS 공격과 관련된 위험과 이를 방지하는 방법을 이해하도록 합니다.

내 글을 읽어 주셔서 감사합니다.