유머천국 코하비닷컴
https://cohabe.com/sisa/4755745

ㅇㅇㄱ) 왁물원 즉시 신고 확장 제작자 Minibox님 이거 맞아요?


ㅇㅇㄱ) 왁물원 즉시 신고 확장 제작자 Minibox님 이거 맞아요?_1.png



이 왁물원 즉시 신고 앱에 관한 분석임.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
async function sendReport(e, t, n, r) {
  const o = await userProfilePromise;
  if (!o) return -1;
  const s = new Date().getTime(),
    a = { type: e, id: t, reasonType: n, reason: r, memberKey: o };
  return (
    await fetch("https://wakzoo-report.minibox.workers.dev/report", {
      method: "POST",
      headers: {
        "Content-Type""application/json",
        Hash: sha256(JSON.stringify(a) + s),
        Timestamp: s,
      },
      body: JSON.stringify(a),
    })
  ).ok
    ? 1
    : 0;
}
Colored by Color Scripter
cs


wakzoo-report.minibox.workers.dev/report에 POST 요청으로


type, id, reasonType, reason, memeberKey 값을 보냄.


e = type이랑 t = id는 게시판 Type 및 게시글 ID고


reasonType = n은 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
((window.reportData = {
  reasons: {
    article: [
      "욕설/비속어",
      "비방",
      "광고",
      "댓글 논쟁 및 다툼",
      "왁물원 외 커뮤 언급",
      "팬아트 규정 위반",
      "기타",
    ],
    comment: ["욕설/비속어""비방""광고""왁물원 외 커뮤 언급""기타"],
    profile: ["부적절한 프로필"],
  },
  params: new URLSearchParams(window.location.search),
  get type() {
    return this.params.get("type"|| "article";
  },
  get author() {
    return this.params.get("author"|| "";
  },
  get content() {
    return this.params.get("content"|| "";
  },
  get level() {
    return this.params.get("level"|| "";
  },
})
Colored by Color Scripter
cs


위의 {article: string[], comment: string[], profile: string[] } 구조체.


여기까지는 문제가 없는데 대망의 memberKey = o 부분을 보자.


위의 sendReport의 o = memberKey 값은 getProfile 함수를 참조하는데


1
2
3
4
5
6
7
8
9
10
11
12
13
async function getProfile() {
  try {
    const e = await fetch(
      "https://apis.naver.com/cafe-web/cafe-cafemain-api/v1.0/cafes/27842958/my",
      { credentials: "include" },
    ),
      t = await e.json(),
      n = t?.result?.memberKey;
    return n;
  } catch (e) {
    return ;
  }
}
Colored by Color Scripter
cs


이 getProfile은 위의 apis.naver.com 함수를 통해서 호출하는데


https://developers.naver.com/docs/common/openapiguide/apilist.md#%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EB%B0%A9%EC%8B%9D-%EC%98%A4%ED%94%88-api


당연히 네이버가 제공하는 공식 오픈 API가 아니라 사용자의 아이디 인증 값을 무단으로 들고 네이버가 제공하지 않는 API를 강제로 호출해서 값을 받아옴.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
  "result": {
    "memberKey""식별 유저 키",
    "nickname""----",
    "profileImageUrl""https://skip/icon21.png",
    "joinedAt"17000000000,
    "memberLevel": {
      "level"1,
      "levelName""새싹멤버",
      "levelIconId"5,
      "config": {
        "needArticleCount"0,
        "needCommentCount"0,
        "needVisitCount"0,
        "needWeeksAfterJoinCount"0,
        "levelUpPolicy""MANUAL"
      }
    },
    "memberStat": {
      "articleCount"-1,
      "commentCount"-1,
      "replyCount"-1,
      "visitCount"-1
    }
  }
}
Colored by Color Scripter
cs


그리고 이 API 호출 값은 위와 같은 JSON 형식으로 출력이 되는데


이 왁물원 즉시 신고 앱은 보낸 사람의 인증된 식별자를 네이버가 허락하지 않은 API를 가지고 무단으로 보내는 거임.




ㅇㅇㄱ) 왁물원 즉시 신고 확장 제작자 Minibox님 이거 맞아요?_2.png


그리고 이 분은


ㅇㅇㄱ) 왁물원 즉시 신고 확장 제작자 Minibox님 이거 맞아요?_3.png


이런 거랑



ㅇㅇㄱ) 왁물원 즉시 신고 확장 제작자 Minibox님 이거 맞아요?_4.png





https://minibox.xyz/

https://github.com/minibox24

https://github.com/wakscord

https://github.com/wakscord/afreeca/blob/main/pyproject.toml


왁스코드 팀 멤버기도 함.


ㅇㅇㄱ) 왁물원 즉시 신고 확장 제작자 Minibox님 이거 맞아요?_5.jpg


Minibox님. 같은 개발자로서 아무리 왁물원 내부에서 쓰는 거라고는 하지만

그.... 같은 왁물원 회원님들의 개인 정보는 제대로 관리하셔야 되는 거 아니에요????



댓글
  • 게이게이야.. 2025/07/07 13:41

    약관에도 금지로 못박혀있다던데 네이버도 참전하나

  • 익명-zY2MTgy 2025/07/07 13:42

    호오....네이버 카페에서 일어난 일을 기존에 가지고 있던 개인정보를 통해 자체 API로 조치한다는 건가?

  • 모드레드 2025/07/07 13:42

    또 죠졌구나 끼얏호우

  • 쳇젠장할 2025/07/07 13:44

    내가보기엔 네이버에서 원래 안주는정보를 강제로 탈취해서 쓰는거 같아보이는데?

  • 익명-zY2MTgy 2025/07/07 13:42

    내가 제대로 이해했나 모르겠네.

  • 시라사카 코우메P 2025/07/07 13:45

    ㅋㅋㅋㅋ개인용으로 쓰는거야 안들키면 장땡인건데
    미친짓을 다보겠네 ㅋㅋ ㅋㅋㅋㅋㅋ
    기업이 ↗으로 보이나보나

  • 게이게이야.. 2025/07/07 13:41

    약관에도 금지로 못박혀있다던데 네이버도 참전하나

    (SPk3Lh)

  • 도벨메이드 2025/07/07 13:46

    네이버는 카페 내에서 음원 무단반포한거 때문에 진작 참전중이었어

    (SPk3Lh)

  • 모드레드 2025/07/07 13:42

    또 죠졌구나 끼얏호우

    (SPk3Lh)

  • 익명-zY2MTgy 2025/07/07 13:42

    호오....네이버 카페에서 일어난 일을 기존에 가지고 있던 개인정보를 통해 자체 API로 조치한다는 건가?

    (SPk3Lh)

  • 익명-zY2MTgy 2025/07/07 13:42

    내가 제대로 이해했나 모르겠네.

    (SPk3Lh)

  • 쳇젠장할 2025/07/07 13:44

    내가보기엔 네이버에서 원래 안주는정보를 강제로 탈취해서 쓰는거 같아보이는데?

    (SPk3Lh)

  • 캐서디 2025/07/07 13:45

    커스텀 확장을 만들어서 왁물원의 안 좋은 글(이라고 가정합시다)을 제보하는 앱임.
    단순히 HTML DOM을 파싱해서 유저의 닉네임 정도만 보내면 나도 그려려니 하는데
    네이버가 내부적으로 쓰는 API를 가지고 공개되면 안되는 개인 식별자 정보(위의 memberKey)를 수집해서 통째로 자기 서버에 보냄.

    (SPk3Lh)

  • 익명-zY2MTgy 2025/07/07 13:46

    그러면 네이버 정보망에서 데이터를 갈취하는 구조임?

    (SPk3Lh)

  • 익명-zY2MTgy 2025/07/07 13:47

    허...네이버 내부 데이터를 갈취한거라고 봐도 되겠네?
    뭔 배짱이야....

    (SPk3Lh)

  • 빗치 2025/07/07 13:47

    그 식별정보를 통으로 수집해다 보내는게 가능하단건 네이버의 문제도 생각해볼수 있는거임?
    아님 어쩔 수 없는 부분인거야??

    (SPk3Lh)

  • 익명-TQyNTQ3 2025/07/07 13:44

    근데 이런거 나오면 누가 신고하긴 하겠지?

    (SPk3Lh)

  • 시라사카 코우메P 2025/07/07 13:45

    ㅋㅋㅋㅋ개인용으로 쓰는거야 안들키면 장땡인건데
    미친짓을 다보겠네 ㅋㅋ ㅋㅋㅋㅋㅋ
    기업이 ↗으로 보이나보나

    (SPk3Lh)

(SPk3Lh)