[버그바운티] CVE 분석 - Clickjacking

Jay·2025년 1월 17일

BugBounty

목록 보기
1/6

https://cybersecuritywriteups.com/this-is-the-easiest-bug-you-can-find-feadc3ef95a5
https://owasp.org/www-community/attacks/Clickjacking

해당 자료 참고했습니다.

Clickjacking

clickjacking은 공격자가 사용자를 속여 의도하지 않은 클릭을 하게 만드는 취약점이다.

공격자가 투명하거나 불투명한 여러 레이어를 사용하여 사용자가 상위 페이지에서 클릭하려는 버튼이나 링크를 다른 페이지에서 클릭하도록 속이는 공격 방식이다. 이로 인해 공격자는 사용자가 의도한 클릭을 가로채어 다른 애플리케이션이나 도메인에 소속된 페이지로 라우팅하게 된다.

 

Examples

Example 1) 웹사이트에서 일반 버튼 위에 보이지 않는 버튼이 숨겨져 배치된 상황이 존재할 수 있다.

이때 게시물에 좋아요를 남기거나, 동영상을 재생하는 등의 단순한 행위가 실제로는 권한 부여, 민감한 정보 공유, 무단 구매 등의 악의적인 클릭으로 이어질 수 있다.

 

Example 2) 공격자가 "무료 아이팟을 원하시면 여기를 클릭하세요"라는 버튼이 있는 웹사이트를 만든다고 가정한다. 그리고 그 웹 페이지 위에 자신의 이메일 게정이 로드딘 iframe을 배치하고, "모든 메시지 삭제" 버튼을 기존 버튼 바로 위에 정확히 정렬한다.

피해자가 버튼을 클릭하면, 피해자의 목적은 "무료 아이팟... " 버튼에 대한 클릭이지만 실제로는 보이지 않는 "모든 메시지 삭제" 버튼을 클릭한 것이다. 이때 공격자는 본질적으로 사용자의 클릭을 가로챈 셈이 된다.

 

Example 3) 클릭재킹의 가장 악명 높은 예: 어도비 플래시(Adobe Flash) 플러그인 설정 페이지에 대한 공격

어도비 플래시 플러그인 설정 페이지를 보이지 않는 iframe에 로드함으로써, 사용자가 플래시의 보안 설정을 변경하도록 속였다. 이로 인해 모든 플래시 애니메이션이 컴퓨터에 연결된 마이크와 카메라를 사용할 수 있도록 만들었다. (민감한 설정 변경을 유도함)

 

Example 4) Twitter worm 형태와 페이스북

  • 트위터에서 사용자가 버튼을 클릭하게 하여 악성 페이지의 위치를 retweet하게 만들었다.
  • 페이스북의 "좋아요" 기능을 악용하여 자의적으로 팬 페이지, 링크, 그룹 등을 좋아요 클릭하도록 만들었다.

 

클릭재킹 취약점을 찾을 수 있는 곳: 민감한 endpoint

  • 로그인 페이지
  • 회원가입(register) 페이지
  • 결제 페이지
  • 비밀번호 재설정 페이지
  • 관리자 로그인 대시보드

 

Defending against Clickjacking

  1. 적절한 콘텐츠 보안 정책(CSP) 설정: frame-ancestors 지시어를 포함한 응답 헤더를 전송하여(어떤 도메인이 프레임으로 포함될 수 있는지 명시) 브라우저가 다른 도메인에서의 프레이밍을 허용하지 않도록 지시한다. 구형 브라우저와의 호환성을 위해 오래된 X-Frame-Options HTTP 헤더를 사용하는 것도 좋다.

  2. 인증 쿠키 설정: 쿠키의 SameSite 속성을 Strict(또는 Lax)로 설정한다. 명시적으로 None이 필요하지 않는 한(이는 드뭅니다) 이 설정을 적용합니다.

  3. UI에서 방어 코드 사용: 현재 프레임이 가장 최상위 창인지 확인하는 방어 코드를 구현하여 클릭재킹 공격을 방지합니다.

 

Tool to Explore Clickjacking

Clickjacker.io에서 클릭재킹 테스트 및 PoC 생성을 할 수 있다.

0개의 댓글