A tool to discover S3 buckets from subdomains by analyzing JavaScript files.
Project description
JSBucket: S3 Bucket Discovery Tool From JavaScript Files
JSBucket is a Python-based tool designed to analyze subdomains for Amazon S3 bucket references in JavaScript files. It extracts S3 bucket names and URLs from subdomains and outputs them in a structured JSON format. The tool supports multi-threading, progress tracking, and silent mode for seamless integration with other tools like jq, s3scanner, etc. This tool is specifically designed for Bug Bounty Hunters and Pentesters.
Features ⚙️
usage: jsbucket [-h] [-u SUBDOMAIN] -d DOMAIN [-l LIST] [-t THREADS] [-timeout TIMEOUT] [-o OUTPUT] [-silent]
Analyze JavaScript files from given subdomain(s) for S3 buckets.
options:
-h, --help Show this help message and exit
-u SUBDOMAIN, --subdomain SUBDOMAIN
Analyze a single subdomain (e.g., `sub.example.com`)
-d DOMAIN, --domain DOMAIN
Base/root domain (mandatory)
-l LIST, --list LIST File containing a list of subdomains (one per line)
-t THREADS, --threads THREADS
Number of threads for concurrent analysis (default: 10)
-timeout TIMEOUT Timeout for HTTP requests (default: 10 seconds)
-o OUTPUT, --output OUTPUT
Save results to a JSON file (e.g., `output.json`)
-silent Suppress all output except raw JSON (useful for piping into tools like `jq` or `grep`)
Installation 🚀
Prerequisites
- Python 3.6+: Ensure Python is installed on your system.
- Dependencies: Install the required libraries using
pip.
Steps
git clone https://github.com/saeed0xf/jsbucket.git
cd jsbucket
pip install -r requirements.txt
Alternatively, you can install the tool directly from PyPI:
pip install jsbucket
Usage 📝
Run the script with the desired flags:
jsbucket [FLAGS]
Flags
| Flag | Description |
|---|---|
-u SUBDOMAIN |
Analyze a single subdomain (e.g., sub.example.com). |
-d DOMAIN |
Base/root domain (mandatory). |
-l FILE |
File containing a list of subdomains (one per line). |
-t THREADS |
Number of threads for concurrent analysis (default: 10). |
-timeout SECS |
Timeout for HTTP requests (default: 10 seconds). |
-o OUTPUT |
Save results to a JSON file (e.g., output.json). |
-silent |
Suppress all output except raw JSON (useful for piping into tools like jq or grep). |
Examples 🕵️♀️
1. Analyze a Single Subdomain
jsbucket -u sub.example.com -d example.com
2. Analyze a List of Subdomains
jsbucket -l subdomains.txt -d example.com
3. Save Results to a JSON File
jsbucket -l subdomains.txt -d example.com -o results.json
4. Use Silent Mode for Piping
jsbucket -l subdomains.txt -d example.com -silent | jq '.[].s3_buckets[].bucket_name'
5. Customize Threads and Timeout
jsbucket -l subdomains.txt -d example.com -t 20 -timeout 30
Output Format
Terminal Output (Non-Silent Mode)
Alert: S3 Bucket(s) found on subdomain https://sub.example.com!
{
subdomain: https://sub.example.com,
s3_buckets: [
{
bucket_name: my-bucket,
bucket_url: https://my-bucket.s3.amazonaws.com
}
]
}
✅ Analysis complete!
JSON Output (Silent Mode)
[
{
"subdomain": "https://sub.example.com",
"s3_buckets": [
{
"bucket_name": "my-bucket",
"bucket_url": "https://my-bucket.s3.amazonaws.com"
}
]
}
]
Notes 📌
- Silent Mode: Use the
-silentflag when integrating with tools likejqors3scanner. This ensures only raw JSON is printed tostdout. - Timeout: Adjust the
-timeoutvalue if subdomains take longer to respond. - Threads: Increase the
-tvalue for faster analysis, but be cautious with high thread counts to avoid overwhelming the network or server.
Contributing 🤝
Contributions are welcome! If you find any issues or have suggestions for improvements, feel free to:
- Open an issue.
- Submit a pull request.
License 📜
This project is licensed under the MIT License. See the LICENSE file for details.
Contact 💻
For questions, suggestions, or feedback, feel free to reach out:
Project details
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jsbucket-1.1.1.tar.gz.
File metadata
- Download URL: jsbucket-1.1.1.tar.gz
- Upload date:
- Size: 6.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec56286bad29b96303e33a49a4486734fdc887d942646c84b726848834b5931a
|
|
| MD5 |
5e36a121d1a6290237df55cfa8463e0e
|
|
| BLAKE2b-256 |
5bc322d79149eb9723bac9aa3fcc323c4e44171b20e6dcf5b414c9d324578f35
|
File details
Details for the file jsbucket-1.1.1-py3-none-any.whl.
File metadata
- Download URL: jsbucket-1.1.1-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
12b03c1225be36c37c255b5b755f5157afc91a30d5615bb26d673b18c4ff23b3
|
|
| MD5 |
f626a34d2828abfa22f879a7b67686f0
|
|
| BLAKE2b-256 |
5c6f6c1468c1c182c43a438f9047e2b83d4f0fe6423bacf48eda68adbdcd6a42
|