Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Social API Key 노출 #175

Closed
Universe1122 opened this issue Apr 1, 2022 · 9 comments
Closed

Social API Key 노출 #175

Universe1122 opened this issue Apr 1, 2022 · 9 comments

Comments

@Universe1122
Copy link

Intro

gnuboard에서 SNS를 통한 로그인 및 회원가입 기능이 존재합니다.

이 기능을 사용하기 위해서는 관리자가 필요한 SNS 서비스에 신청하여 얻은 API key를 입력해야 합니다.

API key는 관리자 페이지에서 수정 및 열람이 가능하지만, 비회원이 이를 탈취할 수 있습니다.

Setting

위 상황을 재현하기 위해 다음과 같은 설정이 되어 있어야 합니다.

  • 관리자는 "소셜 로그인" 기능을 On 해야 합니다.
  • 관리자는 적어도 한개의 소셜 서비스로부터 API key를 발급 받아 관리자 페이지에 등록해야 합니다.

PoC

  1. 비회원은 SNS 로그인 기능을 사용합니다.
    image

  2. 비회원은 위 과정에서 SNS에 로그인만 하면 됩니다. 굳이 gnuboard에 회원가입 할 필요가 없습니다.

  3. 이후, 본인의 PHPSESSID 쿠키 값을 확인합니다.
    image

  4. 위에서 얻은 쿠키 값을 아래 URL로 접근합니다.
    http://target.com/data/session/sess_[YOUR-SESSION-VALUE]

  5. 아래 사진처럼 social API key를 획득할 수 있습니다.
    image

  6. 현재 Naver, Twitter, Kakao 확인한 결과 모두 social API key를 획득할 수 있습니다.

@kagla
Copy link
Collaborator

kagla commented Apr 15, 2022

Intro

gnuboard에서 SNS를 통한 로그인 및 회원가입 기능이 존재합니다.

이 기능을 사용하기 위해서는 관리자가 필요한 SNS 서비스에 신청하여 얻은 API key를 입력해야 합니다.

API key는 관리자 페이지에서 수정 및 열람이 가능하지만, 비회원이 이를 탈취할 수 있습니다.

Setting

위 상황을 재현하기 위해 다음과 같은 설정이 되어 있어야 합니다.

  • 관리자는 "소셜 로그인" 기능을 On 해야 합니다.
  • 관리자는 적어도 한개의 소셜 서비스로부터 API key를 발급 받아 관리자 페이지에 등록해야 합니다.

PoC

  1. 비회원은 SNS 로그인 기능을 사용합니다.
    image
  2. 비회원은 위 과정에서 SNS에 로그인만 하면 됩니다. 굳이 gnuboard에 회원가입 할 필요가 없습니다.
  3. 이후, 본인의 PHPSESSID 쿠키 값을 확인합니다.
    image
  4. 위에서 얻은 쿠키 값을 아래 URL로 접근합니다.
    http://target.com/data/session/sess_[YOUR-SESSION-VALUE]
  5. 아래 사진처럼 social API key를 획득할 수 있습니다.
    image
  6. 현재 Naver, Twitter, Kakao 확인한 결과 모두 social API key를 획득할 수 있습니다.

안녕하세요. 알려주신 방법으로 social API key를 알아 낼 수 없었습니다.

https://php8.gnuboard.link/

위 주소에서 네이버의 social API key 를 알아내 주실수 있을까요?

@kjsman
Copy link

kjsman commented Apr 15, 2022

캡챠가 뜬 상황에서(회원가입 폼에서 캡챠가 뜬 것을 확인한 직후) 자기 세션을 확인하면 캡챠 값을 확인할 수 있네요.

@Universe1122
Copy link
Author

안녕하세요.

현재 올려주신 링크에서는 네이버 로그인이 되지 않습니다. 따라서 현재 이슈를 발생 시킬 수 없습니다.
social API key를 획득하기 위해서는, 적어도 하나 이상의 소셜 로그인 기능이 동작해야 합니다.

사용자는 소셜 로그인 기능을 통해 로그인 한 뒤, 그누보드에 회원가입 할 필요 없이 앞서 언급했던 절차대로 한다면 social API key를 얻을 수 있습니다.

@kagla
Copy link
Collaborator

kagla commented Apr 18, 2022

안녕하세요.

현재 올려주신 링크에서는 네이버 로그인이 되지 않습니다. 따라서 현재 이슈를 발생 시킬 수 없습니다. social API key를 획득하기 위해서는, 적어도 하나 이상의 소셜 로그인 기능이 동작해야 합니다.

사용자는 소셜 로그인 기능을 통해 로그인 한 뒤, 그누보드에 회원가입 할 필요 없이 앞서 언급했던 절차대로 한다면 social API key를 얻을 수 있습니다.

image

이 로그인 기능이 작동하지 않는다는 말씀이신지요?

@Universe1122
Copy link
Author

넵, 맞습니다.

https://sir.kr 사이트에서는 아래 사진처럼 "네이버 로그인" 버튼을 클릭하면 아래 사진처럼 네이버 로그인 창이 뜹니다.
image

하지만, 위에 올려주신 https://php8.gnuboard.link/ 사이트에는 "네이버 로그인" 버튼이 존재하지만, 아래 사진처럼 로그인을 할 수 없습니다. 로그인이 가능한 아이디가 지정된 것으로 추측되며, 현재 저는 테스트할 수 없습니다.
image

@jihan001
Copy link

jihan001 commented May 13, 2022

sir.kr에서 네이버 로그인 시도로 본문과 같은 문제 확인했습니다.

네이버 로그인 버튼을 누른 것 만으로
/data/session/sess_{session_id} 파일을 내려 받아 PHP 세션에 담긴 내용을 확인할 수 있었으며, 이 데이터에서 소셜 로그인 설정에 담긴 누출되면 안되는 secret key가 담겨있습니다.

세션에 너무 많은 또는 누출되어서는 안되는 데이터가 담겨있습니다
이는 보안취약점으로 보이며 누출된 데이터의 도용 가능성이 있습니다. 누출된 키와 암호키로 API 서비스 이용 한도를 초과하게 하거나 유상 서비스 비용이 청구되게 할 수도 있습니다.

애초에 세션 데이터 파일을 다운로드할 수 있는 것 또한 문제입니다. 세션 파일에 대한 접근을 차단해야합니다.

D75829FE-FE4B-4BA8-A3CA-4E9511D5FA47

@thisgun
Copy link
Contributor

thisgun commented May 23, 2022

알려주셔서 감사합니다.
해당 문제를 수정했습니다.

@Universe1122
Copy link
Author

Universe1122 commented May 26, 2022

패치 감사합니다!!
해당 이슈를 닫아도 될까요??

@thisgun
Copy link
Contributor

thisgun commented Jun 13, 2022

네. 감사합니다. 제가 닫겠습니다.

@thisgun thisgun closed this as completed Jun 13, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants