keris
keris adalah toolkit pentest web black-box dari CLI. Isi satu URL, keris
mengerjakan recon, discovery, scan kerentanan, sampai laporan dalam satu
perintah. Lahir dari pengetesan nyata ke situs produksi (Next.js/Vercel,
PHP/LiteSpeed, React SPA), jadi pilihan default-nya dibuat sopan: tidak asal
hantam target, anti kena ban.
/\
/ \
/ /\ \
/ / \ \
\ \__/ /
\____/
||
"Keris" itu belati Jawa. Kecil, tajam, dan tugasnya satu: uji apakah sesuatu bisa ditembus. Kalau tidak, ya tidak. Datanya tetap ada di laporan.
Isi cepat
pip install keris-toolkit # atau: pip install -r requirements.txt
# Scan penuh: recon + discovery + kerentanan + laporan Markdown
keris scan https://example.com -o report.md
# Sekalian JSON (buat CI) dan HTML
keris scan https://example.com -o report.md \
--json-output report.json --html report.html
Coba dalam 30 detik dengan server demo yang memang sengaja bocor:
python tests/demo_vuln_server.py # 127.0.0.1:8099, penuh lubang
python -m keris scan http://127.0.0.1:8099 -o demo.md --hidden-endpoints
Ada UI-nya juga
serve memunculkan halaman lokal di http://127.0.0.1:8181. Tempel link,
tekan Scan. Scan berjalan di belakang, progress dan lognya streaming ke
browser, laporan bisa diunduh dalam Markdown / HTML / PDF / JSON.
python -m keris serve
Dua tombol yang sering dipakai:
- CARIKRITIKAL - langsung menyalakan semua modul plus serangan aktif yang berizin, lalu memfilter hasil ke yang CRITICAL/HIGH saja.
- Uji DoS - tes ketahanan app-layer (slowloris / slow POST / flood terukur) dengan batas durasi dan request. Wajib centang izin tertulis.
Satu scan per waktu, ada tombol hentikan. UI tetap di 127.0.0.1; jangan
pernah di-expose ke publik.
Perintah
34 subcommand. Yang sering dipakai:
| Perintah | Kerjaannya |
|---|---|
scan |
Pipeline lengkap: recon + discovery + scan + laporan |
recon / passive |
DNS, security headers, stack detection; passive = crt.sh + whois tanpa menyentuh target |
discover / hidden / params |
Ekstraksi endpoint API, brute direktori/subdomain, cari endpoint admin/.env/backup, parameter tersembunyi |
fuzz / openapi |
Fuzzing parameter ringan, import spec Swagger lalu fuzz endpointnya |
jwt / ports / tls / dns / buckets / waf |
Token JWT, port scanner, TLS, email security (SPF/DMARC/DKIM), bucket S3/GCS publik, fingerprint WAF |
crawl / graphql / smuggling / takeover |
Peta attack surface, testing GraphQL, request smuggling, subdomain takeover |
cachepoison / hostheader / websocket |
Web cache poisoning, host header injection (termasuk password-reset poisoning), WebSocket auth & Origin |
jsanalysis / sensitive |
Sink DOM XSS + secret di bundle JS, paparan data sensitif (kredensial/PII/kartu) |
bruteforce / platforms |
Login lemah (form/basic), check khusus WordPress/Laravel/dll |
project |
Self-audit kode sumber lokal; output JSON ramah AI agent |
retest |
Diff scan lama vs baru untuk ngukur progres perbaikan |
export / dashboard |
Temuan jadi curl/Burp XML, gabung laporan JSON jadi dashboard HTML |
dos |
Uji ketahanan app-layer (khusus berizin, wajib --yes) |
serve |
Web UI lokal |
plugins / init |
Check kustom sendiri, contoh keris.json |
Semua scan default menyertakan: SQLi, XSS, SSRF, IDOR, rate-limit, directory listing, auth bypass, CORS, open redirect, cookie flags, TLS, security.txt, plus modul cache poisoning / host header / WebSocket / JS analysis / sensitive / hidden endpoints / fuzz.
Serangan aktif
Modul berikut mengirim payload. Wajib --authorized (atau --yes untuk
DoS) dan hanya untuk target yang Anda miliki atau punya izin tertulis.
# Auto-exploit SQLi/CMDI/SSTI/XSS (konfirmasi + exploit otomatis)
python -m keris scan https://example.com --authorized --exploit
# Extended brute + username enumeration
python -m keris bruteforce https://app.example.com --authorized --extended
# CVE/PoC probe sesuai platform yang terdeteksi
python -m keris scan https://example.com --authorized --exploit-cve
Autentikasi
Bearer token, cookie session, basic auth, sampai auto-login lewat form HTML (sesi ditangkap untuk seluruh scan):
python -m keris scan https://app.example.com --token eyJhbGciOi...
python -m keris scan https://app.example.com --cookie "session=abc123"
python -m keris scan https://app.example.com --login-username admin --login-password hunter2
python -m keris scan https://example.com --proxy http://127.0.0.1:8080
Laporan
Setiap temuan diberi skor CVSS v3.1 (vektor + base score) dan kategori OWASP Top 10 (2021). Laporan Markdown menyerupai laporan pentest manual: ringkasan eksekutif, tabel severitas, profil target, security headers, temuan lengkap dengan bukti, lalu rekomendasi.
python -m keris scan https://example.com -o report.md \
--html report.html --pdf report.pdf --json-output out.json
Lainnya:
- Retest:
keris retest jan.json feb.json -o retest.mdmengelompokkan temuan jadi fixed / new / persisting dan mencetak persentase progres. Exit code bukan nol kalau masih ada yang baru atau belum diperbaiki, jadi bisa jadi gerbang CI "apakah fix-nya sudah landed?". - Export: temuan jadi script curl atau session Burp XML.
- Dashboard: gabung beberapa
--json-outputjadi satu HTML. - Webhook: Slack / Discord / Telegram.
- Exit code:
0bersih,1ada temuan >= threshold (--exit-on, default high),2error.
Kebiasaan yang sudah dibangun-in
- Sopan secara default: preset
fast/stealth/aggressive, delay, workers, dan backoff adaptif saat deteksi 429/403. Scan tidak asal ngebut biar IP Anda tidak kena blokir. - Rate-limit aware: retry tidak pernah untuk HTTP 5xx, supaya SQLi berbasis error tidak tertutupi.
- Konfigurasi via
keris.json:python -m keris inituntuk contoh; flag CLI selalu menang atas file.
Instalasi
pip install keris-toolkit # cukup. semua dependensi ikut.
keris --help
# Dari source (buat development):
git clone https://github.com/dexpie/keris.git
cd keris
pip install -e ".[dev]" # + dependensi test
Dependensi: PyYAML, PySocks, reportlab, dnspython, cryptography, certifi, requests, websocket-client.
Docker juga bisa:
docker build -t keris .
docker run --rm -v "$PWD:/work" keris scan https://example.com -o /work/report.md
Kerja dengan Keris
python -m keris scan https://example.com --exit-on high # CI gate
python -m keris scan --targets targets.txt --json-output all.json # banyak target
python -m keris scan https://example.com --no-discover --no-bruteforce --no-plugins
# Development
python -m pytest tests -q
ruff check keris tests
Struktur
keris/
├── keris/
│ ├── __main__.py # CLI (34 subcommand)
│ ├── payloads.py # payload SQLi/XSS/SSRF/CMDI/SSTI + daftar wordlist
│ ├── cvss.py # CVSS v3.1 scoring + OWASP mapping
│ ├── report*.py # Markdown / HTML / PDF / dashboard
│ ├── ui.py # web UI lokal (http.server, tanpa dependensi)
│ ├── core/ # http client (auth, proxy, backoff), config, logger, utils
│ ├── modules/ # 30+ scanner: recon sampai dos, exploit, plugins
│ └── data/ # wordlist direktori & subdomain
├── plugins/ # contoh plugin (Python + JSON)
├── tests/ # pytest suite + server demo yang sengaja bocor
├── Dockerfile
└── docker-compose.yml
Roadmap
- Pipeline scan penuh + laporan
- Passive recon, form auto-login, fuzzing, preset kecepatan
- JWT, port scan, OpenAPI, brute-force, platform checks
- Project self-audit (untuk AI agent)
- Wayback, DNS/email security, bucket cloud, TLS
- WAF, hidden parameter, export curl/Burp, webhook, dashboard
- DoS resilience test (authorized-only)
- Hidden endpoint, crawler, GraphQL
- Subdomain takeover & request smuggling
- Auto-exploit + CVE probes (authorized only)
- Cache poisoning, host header, WebSocket, JS analysis
- Sensitive data scan, retest workflow
- CVSS + OWASP di semua format laporan
- Web UI dengan scan satu-klik dan uji DoS
Catatan legal
Gunakan hanya pada sistem yang Anda miliki atau yang sudah memberi izin tertulis. Modul serangan aktif (exploit, CVE, brute-force extended, DoS) wajib konfirmasi eksplisit. Semua risiko ada di pemakai.
MIT - pakai, pelajari, perbaiki. Kontribusi dipersilakan, lihat CONTRIBUTING.md. Cari celah keamanan di Keris sendiri? Lapor lewat SECURITY.md.
Keris dibangun untuk pentester, bug bounty hunter, DevOps, dan AI coding agent yang mau hasil konsisten tanpa harus menghafal 30 tool berbeda. Kalau ada tanggapan atau permintaan fitur, jangan ragu.
Metadata
Release files for keris-toolkit 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| keris_toolkit-0.3.1.tar.gz | 116.0 kB | With provenance | Details for keris_toolkit-0.3.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| keris_toolkit-0.3.1-py3-none-any.whl | Python 3 | none | any | Details for keris_toolkit-0.3.1-py3-none-any.whl |
Total release size: 243.5 kB
Release files / keris_toolkit-0.3.1.tar.gz
| Download URL | keris_toolkit-0.3.1.tar.gz |
|---|---|
| Size | 116.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
450b0b5d1a7f22f234fb5b615c0a063240babde82522ac0f97da8ad23c4f4e07
|
|
BLAKE2b-256 checksum How to use checksums |
74e554b75c0a649ad313d4e8a5e4f5c5bc6bf28134389589b95398852c3bbfb7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 14, 2026.
Transparency logRelease files / keris_toolkit-0.3.1-py3-none-any.whl
| Download URL | keris_toolkit-0.3.1-py3-none-any.whl |
|---|---|
| Size | 127.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5860ae362fc6e555c4518beadeb2b633ac2966c1a9c5e628cca93ea35f1c35b9
|
|
BLAKE2b-256 checksum How to use checksums |
7779832db3bbea551e905de7aedeffa785a455a26f786162d7c57d5786c13c27
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 14, 2026.
Transparency logSecurity for keris-toolkit 0.3.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for keris_toolkit-0.3.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 14, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.