mitmproxy-based IDOR detection tool - intercepts traffic and analyzes parameter relationships to find insecure direct object references
Project description
IDOR-otaku (idotaku)
IDOR-otaku — mitmproxy-based IDOR detection tool that intercepts traffic and analyzes parameter relationships to find insecure direct object references.
IDOR (Insecure Direct Object Reference) is a vulnerability where an application exposes internal object IDs (user IDs, order numbers, etc.) without proper authorization checks, allowing attackers to access other users' data by manipulating these IDs.
How It Works
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Browser │────>│ mitmproxy │────>│ API Server │
└─────────────┘ └──────┬──────┘ └─────────────┘
│
v
┌─────────────┐
│ idotaku │
│ (tracker) │
└──────┬──────┘
│
v
┌─────────────┐
│ Report │
│ (JSON) │
└─────────────┘
- Intercept — Proxies browser traffic via mitmproxy
- Track — Records where IDs first appear (response) and where they are used (request)
- Detect — Flags IDs used in requests that never appeared in any response (IDOR candidates)
- Visualize — Renders parameter chains and API sequence diagrams as interactive HTML
Requirements
- Python 3.10+
- mitmproxy 10.0+
Installation
pip install idotaku
Quick Start
# Interactive mode (recommended for beginners)
idotaku -i
# Start proxy directly
idotaku
# Analyze report
idotaku report id_tracker_report.json
idotaku chain id_tracker_report.json --html chain.html
idotaku sequence id_tracker_report.json --html sequence.html
# Import HAR file (from Chrome DevTools, Burp Suite, etc.)
idotaku import-har capture.har -o report.json
Commands
Analysis
| Command | Description |
|---|---|
report |
View IDOR detection report summary |
chain |
Detect parameter chains with --html export and --domains filter |
sequence |
API sequence diagram with --html export and ID highlighting |
lifeline |
Show parameter lifespan analysis |
score |
Risk-score IDOR candidates (critical / high / medium / low) |
auth |
Detect cross-user access patterns via auth context |
diff |
Compare two reports and show changes |
interactive |
Launch interactive mode with guided menus |
Import & Export
| Command | Description |
|---|---|
import-har |
Import HAR file and generate idotaku report |
csv |
Export IDOR candidates or flows to CSV |
sarif |
Export findings to SARIF 2.1.0 (GitHub Code Scanning) |
Programmatic API
from idotaku.report import load_report, score_all_findings, diff_reports
from idotaku.export import export_csv, export_sarif
from idotaku.import_har import import_har
# Load and score
data = load_report("report.json")
scored = score_all_findings(data.potential_idor)
# Export
export_csv("idor.csv", data, mode="idor")
export_sarif("findings.sarif.json", data)
# Import HAR
report = import_har("capture.har")
# Diff two reports
from idotaku.report import diff_reports
diff = diff_reports(load_report("old.json"), load_report("new.json"))
Documentation
Contributing
# Clone and install with dev dependencies
git clone https://github.com/RalianENG/IDOR-otaku.git
cd idotaku
pip install -e ".[dev]"
# Run tests
pytest
# Run tests with coverage
pytest --cov=idotaku
# Lint
ruff check src/
Bug reports and pull requests are welcome on GitHub Issues.
Disclaimer
This tool is intended for authorized security testing and educational purposes only. You must obtain proper authorization before testing any systems you do not own. The authors are not responsible for any misuse or damage caused by this tool. Use at your own risk and in compliance with all applicable laws.
License
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 idotaku-0.1.0.tar.gz.
File metadata
- Download URL: idotaku-0.1.0.tar.gz
- Upload date:
- Size: 94.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45a19fd4d34386029d96d124cd698367bcdb0ded2006d36962fc4f7ad7e0df7d
|
|
| MD5 |
1e801068a58f8ae4b9992c32b877cba1
|
|
| BLAKE2b-256 |
f8d23edbd50e728d205f7cd65df02fcc606d6b6d99d82fbc718f9ab5e15a938b
|
Provenance
The following attestation bundles were made for idotaku-0.1.0.tar.gz:
Publisher:
publish.yml on RalianENG/IDOR-otaku
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
idotaku-0.1.0.tar.gz -
Subject digest:
45a19fd4d34386029d96d124cd698367bcdb0ded2006d36962fc4f7ad7e0df7d - Sigstore transparency entry: 930489357
- Sigstore integration time:
-
Permalink:
RalianENG/IDOR-otaku@334b169327103b29f7dae0572f03050c9d16db8a -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/RalianENG
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@334b169327103b29f7dae0572f03050c9d16db8a -
Trigger Event:
push
-
Statement type:
File details
Details for the file idotaku-0.1.0-py3-none-any.whl.
File metadata
- Download URL: idotaku-0.1.0-py3-none-any.whl
- Upload date:
- Size: 71.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
487a90e18251c345708c9032232351a72ac0ce1a8bb0278fbfbd9606ebfb0c5c
|
|
| MD5 |
59d3cd45153ee06b36d12ab00ddd91ba
|
|
| BLAKE2b-256 |
b0ec76a9d9dbb7fde19fa6f816612d85a64655e37be4673d3d754c7d19991785
|
Provenance
The following attestation bundles were made for idotaku-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on RalianENG/IDOR-otaku
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
idotaku-0.1.0-py3-none-any.whl -
Subject digest:
487a90e18251c345708c9032232351a72ac0ce1a8bb0278fbfbd9606ebfb0c5c - Sigstore transparency entry: 930489365
- Sigstore integration time:
-
Permalink:
RalianENG/IDOR-otaku@334b169327103b29f7dae0572f03050c9d16db8a -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/RalianENG
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@334b169327103b29f7dae0572f03050c9d16db8a -
Trigger Event:
push
-
Statement type: