Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cookiemonster — Django, Flask, Laravel, Express 및 JWT 프레임워크의 취약한 세션 쿠키를 디코딩하고 서명 해제합니다. HMAC 기반 디코더, base64 단어 목록 및 신속한 취약점 발견을 위한 자동화 파이프라인을 지원합니다. | Kitploit
도구/GitHubGitHub/iangcarroll/cookiemonster
Vulnerability AnalysisWeb SecurityCryptographyPenetration Testing
GitHubiangcarroll/cookiemonster

cookiemonster

Django, Flask, Laravel, Express 및 JWT 프레임워크의 취약한 세션 쿠키를 디코딩하고 서명 해제합니다. HMAC 기반 디코더, base64 단어 목록 및 신속한 취약점 발견을 위한 자동화 파이프라인을 지원합니다.

저장소 보기
982751년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

🍪 CookieMonster

CookieMonster는 여러 프레임워크의 취약한 세션 쿠키를 디코딩하고 수정하기 위한 명령줄 도구이자 API입니다. 이러한 쿠키를 대량으로 효율적으로 처리하여 취약점을 신속하게 발견해야 하는 자동화 파이프라인에서 실행되도록 설계되었습니다. 또한 CookieMonster는 확장 가능하며 새로운 쿠키 형식을 쉽게 지원할 수 있습니다.

CookieMonster는 일반적으로 프레임워크 자체가 아니라 해당 프레임워크를 사용하는 사용자에게서 취약점을 발견한다는 점을 강조할 가치가 있습니다. 이러한 사용자는 강력한 비밀 키를 사용하도록 프레임워크를 구성하여 CookieMonster를 통해 발견된 취약점을 해결할 수 있습니다.

기능

  • Laravel, Django, Flask, Rack, Express의 세션 쿠키를 디코딩 및 서명 해제하고 원시 JWT도 처리합니다.
  • 쿠키를 빠르게 평가하며, 유효하지 않거나 지원되지 않는 쿠키는 무시하고 처리 가능한 쿠키는 신속히 테스트합니다.
  • Go의 빠른 네이티브 해시 함수 구현을 최대한 활용합니다.
  • 초기 디코딩이 실패할 경우 URL 인코딩 및 Base64 인코딩된 쿠키(예: JWT의 Base64)를 지능적으로 디코딩합니다.
  • HMAC 기반 디코더에 대해 프레임워크가 일반적으로 하나만 사용하더라도 여러 알고리즘을 지원합니다.
  • 유연한 base64 인코딩 워드리스트 형식으로 모든 바이트 시퀀스 키를 항목으로 추가할 수 있으며, 합리적인 기본 목록이 함께 제공됩니다.
프레임워크지원 여부참고 사항
JSON Web Tokens✅HS256, HS384, HS512
Django✅일반적인 알고리즘
Flask✅일반적인 알고리즘
Rack✅일반적인 알고리즘
Express (cookie-signer)✅일반적인 알고리즘
Laravel✅AES-CBC-128/256 (GCM은 아직 지원되지 않음)
itsdangerous✅URLSafeSerializer/URLSafeTimedSerializer (기본 솔트)
기타❌아직!

시작하기

CookieMonster를 설치하려면 Go를 설치한 후 CLI를 설치하십시오:

root@kitploit:~
go install github.com/iangcarroll/cookiemonster/cmd/cookiemonster@latest

CookieMonster에는 두 가지 필수 요소만 필요합니다: 서명 해제를 시도할 쿠키와 사용할 워드리스트입니다. 워드리스트가 없다면 CookieMonster는 Flask-Unsign 프로젝트의 기본 워드리스트와 함께 제공됩니다. CookieMonster 워드리스트는 조금 다릅니다. 각 줄은 base64로 인코딩되어야 합니다. 이는 Python 프로젝트가 이러한 키에 불필요한 바이트를 넣는 데 특히 자유롭기 때문에 이를 적절히 처리할 수 있어야 하기 때문입니다.

정적 쿠키 또는 URL을 사용한 CLI 사용 예:

root@kitploit:~
% ./cookiemonster -cookie "gAJ9cQFYCgAAAHRlc3Rjb29raWVxAlgGAAAAd29ya2VkcQNzLg:1mgnkC:z5yDxzI06qYVAU3bkLaWYpADT4I"
🍪 CookieMonster 1.3.0
ℹ️ CookieMonster가 기본 워드리스트를 로드했습니다. 항목 수는 38919개입니다.
✅ 성공! django 디코더로 이 쿠키의 키를 발견했습니다. 키는 "changeme"입니다.

% ./cookiemonster -url "https://httpbingo.org/cookies/set?abc=gAJ9cQFYCgAAAHRlc3Rjb29raWVxAlgGAAAAd29ya2VkcQNzLg:1mgnkC:z5yDxzI06qYVAU3bkLaWYpADT4I"
🍪 CookieMonster 1.3.0
⚠️  이 URL에서 200이 아닌 상태 코드를 받았습니다. 코드는 302입니다.
ℹ️ CookieMonster가 기본 워드리스트를 로드했습니다. 항목 수는 38919개입니다.
✅ 성공! django 디코더로 이 쿠키의 키를 발견했습니다. 키는 "changeme"입니다.

Express 지원

CookieMonster는 Express에서 흔히 사용되는 cookie-session으로 서명된 쿠키를 지원할 수 있습니다. 하지만 이 도구를 사용하려면 주의해야 할 몇 가지 특이한 사항이 있습니다. cookie-session 애플리케이션의 일반적인 응답은 다음과 같습니다:

root@kitploit:~
set-cookie: session=eyJhbmltYWxzIjoibGlvbiJ9
set-cookie: session.sig=Vf2INocdJIqKWVfYGhXwPhQZNFI

이것을 CookieMonster에 전달하려면 쿠키 이름과 서명 쿠키를 모두 포함해야 합니다. 이 예에서는 다음과 같이 CookieMonster를 호출합니다: cookiemonster -cookie session=eyJhbmltYWxzIjoibGlvbiJ9^Vf2INocdJIqKWVfYGhXwPhQZNFI (구분자 ^와 접두사로 쿠키 이름을 붙입니다). API는 monster.NewCookie에서 동일한 형식을 허용합니다.

재서명 지원

CookieMonster는 -resign 플래그를 사용하여 쿠키 서명 해제 후 재서명을 제한적으로 지원합니다. 이는 쿠키 본문을 입력과 일치하도록 수정한 다음 발견된 키로 서명을 다시 계산하는 과정입니다. 현재 Django 디코딩된 쿠키에 대해 이 작업을 수행할 수 있습니다. -cookie에 원본 쿠키를 전달하고 -resign에 쿠키 안에 포함시키려는 인코딩되지 않은 문자열 텍스트를 전달하십시오. CookieMonster가 입력을 올바르게 인코딩한 다음 쿠키를 재서명합니다.

API 사용법

CookieMonster는 pkg/monster를 노출하여 다른 애플리케이션이 쉽게 활용할 수 있도록 합니다. 이는 많은 쿠키를 테스트하는 경우 CLI를 실행하는 것보다 훨씬 성능이 뛰어납니다. 아래는 사용 예입니다.

root@kitploit:~
import (
    "github.com/iangcarroll/cookiemonster/pkg/monster"
    "errors"
)

var (
	//go:embed wordlists/my-wordlist.txt
	monsterWordlist string

	wl = monster.NewWordlist()
)

func init() {
	if err := wl.LoadFromString(monsterWordlist); err != nil {
        panic(err)
    }
}

func MonsterRun(cookie string) (success bool, err error) {
	c := monster.NewCookie(cookie)

	if !c.Decode() {
		return false, errors.New("디코딩할 수 없음")
	}

	if _, success := c.Unsign(wl, 100); !success {
		return false, errors.New("서명 해제할 수 없음")
	}

	return true, nil
}

크레딧

CookieMonster는 여러 출처에서 영감을 받아 제작되었으며, 훌륭한 Flask-Unsign 워드리스트가 포함되어 있습니다.

  • https://github.com/Paradoxis/Flask-Unsign
  • https://github.com/nicksanders/rust-django-signing
도구 다운로드