A server to catch Microsoft Entra OAuth codes and exchange them for a JWT token.
Project description
authcodecatcher
A server for exchanging OAuth Codes for Tokens
Description
If an open or hijackable redirect URI is discovered for an entra application, authcodecatcher can serve as a server at the hijackable URL to catch auth codes and exchange them for tokens. The user will be redirected to the configurable landing page. PKCE is supported.
Installation
pip install authcodecatcher
Usage
First, an SSL certificate needs to be created if you don't have one already
openssl req -new -x509 -keyout cert.pem -out cert.pem -days 365 -nodes
Next, run the module with the required arguments
python3 -m authcodecatcher.server --client-id <ID of hijackable app registration> --tenant-id <target tenant ID> --redirect-uri <The hijackable URI that you control> --port <The port to listen on> --cert-file <The PEM certificate file created in the previous step>
Lastly, generate a URL that will be sent to the target
curl https://localhost:1337/generateurl
The output will be JSON with a URL that contains the authorization endpoint. If an authenticated user navigates to this URL, authcodecatcher will obtain the auth code and exchange it for an access token. All access tokens are saved to a JSON file 'tokens.json' by default.
Command Options
--redirect-uri
The hijackable URI that the attacker controls. Must be listed in the application registration.
--scope
The requested scope of the JWT. Defaults to https://graph.microsoft.com/.default+offline_access
--urlpath
The path of the redirect-uri. For example, if the redirect-uri is https://test.example.com/oauth/token, then the --urlpath should be set to /oauth/token.
--port
The port on which the server will listen
--client-id
The client ID (application ID) of the targeted Entra application.
--tenant-id
The target tenant ID
--output-file
The file that authcodecatcher will write tokens and pkce codes to.
--cert-file
The certificate file to use for SSL
--landing-page
The page that the user will be redirected to after the code exchange. Defaults to https://en.wikipedia.org/wiki/Snallygaster.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file authcodecatcher-0.1.1.tar.gz
.
File metadata
- Download URL: authcodecatcher-0.1.1.tar.gz
- Upload date:
- Size: 15.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1679a30c84e3ef5c565f9c83cfb260e132fe145bf81a26e7f38995f25dfa9c69 |
|
MD5 | 4f5666a4dc17810880efc409064eb45d |
|
BLAKE2b-256 | 44672ca4cabb2c7e7665d4f1c09a0129be7a9085092448fa752928f9a0dc7e9b |
File details
Details for the file authcodecatcher-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: authcodecatcher-0.1.1-py3-none-any.whl
- Upload date:
- Size: 7.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 181401317bc3d7cfeea58da6c644134594e460ef133d98c99bd5a93b91b6c0f2 |
|
MD5 | 1133aebcdd437148b99b3bb6ad7d0210 |
|
BLAKE2b-256 | 0f764b148e675b2280cf3ed28857321f944beb4e8e4f4d062097405d7bf96970 |