From 076b2de584d8be76b1a75a7309814f1742338226 Mon Sep 17 00:00:00 2001 From: BlessedRebuS Date: Sun, 14 Dec 2025 19:08:01 +0100 Subject: [PATCH] First commit --- .dockerignore | 14 + .gitignore | 71 +++++ Dockerfile | 19 ++ README.md | 299 ++++++++++++++++++++- deployment.yaml | 60 +++++ docker-compose.yaml | 33 +++ helm/.helmignore | 1 + helm/Chart.yaml | 15 ++ helm/NOTES.txt | 60 +++++ helm/templates/NOTES.txt | 60 +++++ helm/templates/_helpers.tpl | 60 +++++ helm/templates/configmap.yaml | 17 ++ helm/templates/deployment.yaml | 84 ++++++ helm/templates/hpa.yaml | 32 +++ helm/templates/ingress.yaml | 42 +++ helm/templates/network-policy.yaml | 24 ++ helm/templates/secret.yaml | 16 ++ helm/templates/service.yaml | 26 ++ helm/templates/wordlists-configmap.yaml | 9 + helm/values.yaml | 295 ++++++++++++++++++++ img/dashboard-1.png | Bin 0 -> 100494 bytes img/dashboard-2.png | Bin 0 -> 55135 bytes img/database.png | Bin 0 -> 73797 bytes img/deception-page.png | Bin 0 -> 41225 bytes manifests/configmap.yaml | 16 ++ manifests/deployment.yaml | 60 +++++ manifests/hpa.yaml | 26 ++ manifests/ingress.yaml | 24 ++ manifests/kustomization.yaml | 14 + manifests/namespace.yaml | 4 + manifests/network-policy.yaml | 29 ++ manifests/service.yaml | 16 ++ manifests/wordlists-configmap.yaml | 205 ++++++++++++++ src/config.py | 48 ++++ src/dashboard_template.py | 214 +++++++++++++++ src/generators.py | 190 +++++++++++++ src/handler.py | 342 ++++++++++++++++++++++++ src/server.py | 83 ++++++ src/templates/dashboard_template.py | 241 +++++++++++++++++ src/templates/html_templates.py | 229 ++++++++++++++++ src/tracker.py | 114 ++++++++ src/wordlists.py | 123 +++++++++ wordlists.json | 197 ++++++++++++++ 43 files changed, 3410 insertions(+), 2 deletions(-) create mode 100644 .dockerignore create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 deployment.yaml create mode 100644 docker-compose.yaml create mode 100644 helm/.helmignore create mode 100644 helm/Chart.yaml create mode 100644 helm/NOTES.txt create mode 100644 helm/templates/NOTES.txt create mode 100644 helm/templates/_helpers.tpl create mode 100644 helm/templates/configmap.yaml create mode 100644 helm/templates/deployment.yaml create mode 100644 helm/templates/hpa.yaml create mode 100644 helm/templates/ingress.yaml create mode 100644 helm/templates/network-policy.yaml create mode 100644 helm/templates/secret.yaml create mode 100644 helm/templates/service.yaml create mode 100644 helm/templates/wordlists-configmap.yaml create mode 100644 helm/values.yaml create mode 100644 img/dashboard-1.png create mode 100644 img/dashboard-2.png create mode 100644 img/database.png create mode 100644 img/deception-page.png create mode 100644 manifests/configmap.yaml create mode 100644 manifests/deployment.yaml create mode 100644 manifests/hpa.yaml create mode 100644 manifests/ingress.yaml create mode 100644 manifests/kustomization.yaml create mode 100644 manifests/namespace.yaml create mode 100644 manifests/network-policy.yaml create mode 100644 manifests/service.yaml create mode 100644 manifests/wordlists-configmap.yaml create mode 100644 src/config.py create mode 100644 src/dashboard_template.py create mode 100644 src/generators.py create mode 100644 src/handler.py create mode 100644 src/server.py create mode 100644 src/templates/dashboard_template.py create mode 100644 src/templates/html_templates.py create mode 100644 src/tracker.py create mode 100644 src/wordlists.py create mode 100644 wordlists.json diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..755671c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,14 @@ +__pycache__ +*.pyc +*.pyo +*.pyd +.Python +*.so +*.egg +*.egg-info +dist +build +.git +.gitignore +README.md +*.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5d758cb --- /dev/null +++ b/.gitignore @@ -0,0 +1,71 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# Virtual Environment +venv/ +env/ +ENV/ +env.bak/ +venv.bak/ + +# IDEs +.vscode/ +.idea/ +*.swp +*.swo +*~ +.DS_Store + +# Helm +helm/charts/ +helm/*.tgz +helm/values-production.yaml +helm/values-*.yaml +!helm/values.yaml + +# Kubernetes secrets (if generated locally) +*.secret.yaml +secrets/ + +# Docker +*.log + +# Environment variables +.env +.env.local +.env.*.local + +# Logs +*.log +logs/ + +# Temporary files +*.tmp +*.temp +.cache/ + +# Personal canary tokens or sensitive configs +*canary*token*.yaml +personal-values.yaml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..adac20f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +FROM python:3.11-slim + +LABEL org.opencontainers.image.source=https://github.com/BlessedRebuS/Krawl + +WORKDIR /app + +COPY src/ /app/src/ +COPY wordlists.json /app/ + +RUN useradd -m -u 1000 krawl && \ + chown -R krawl:krawl /app + +USER krawl + +EXPOSE 5000 + +ENV PYTHONUNBUFFERED=1 + +CMD ["python3", "src/server.py"] diff --git a/README.md b/README.md index a855c3d..498bc9e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,297 @@ -# Krawl -Krawl is a Web Honeypot & Deception server that aims to foul enumerations, web crawling, fuzzing and bruteforcing +

🕷️ Krawl

+ +

+ A modern, customizable zero-dependencies honeypot server designed to detect and track malicious activity through deceptive web pages, fake credentials, and canary tokens. +

+ +
+ + License + + + Release + +
+ +
+ + GitHub Container Registry + + + Kubernetes + + + Helm Chart + +
+ +
+ +

+ Overview • + Quick Start • + Configuration • + Dashboard • + Deception Techniques • + Contributing +

+ +![asd](img/deception-page.png) + +## What is Krawl? + +Krawl is a simple cloud native deception server that creates fake web applications with low hanging fruit and juicy fake random information. + +It features: + +- **Spider Trap Pages**: Infinite random links to waste crawler resources based on the [spidertrap project](https://github.com/adhdproject/spidertrap) +- **Fake Login Pages**: WordPress, phpMyAdmin, admin panels +- **Honeypot Paths**: Advertised in robots.txt to catch scanners +- **Fake Credentials**: Realistic-looking usernames, passwords, API keys +- **Canary Token Integration**: External alert triggering +- **Real-time Dashboard**: Monitor suspicious activity +- **Customizable Wordlists**: Easy JSON-based configuration +- **Random Error Injection**: Mimic real server behavior + +## 🚀 Quick Start +## Helm Chart + +Install with default values + +```bash +helm install krawl ./helm \ + --namespace krawl-system \ + --create-namespace +``` + +Install with custom values + +```bash +helm install krawl ./helm \ + --namespace krawl-system \ + --create-namespace \ + --values values.yaml +``` + +Install with custom canary token + +```bash +helm install krawl ./helm \ + --namespace krawl-system \ + --create-namespace \ + --set config.canaryTokenUrl="http://your-canary-token-url" +``` + +Uninstall with +```bash +helm uninstall krawl --namespace krawl-system +``` + +## Kubernetes / Kustomize +Apply all manifests + +```bash +kubectl apply -k manifests/ +``` +Retrieve dashboard path +```bash +kubectl get secret krawl-server -n krawl-system -o jsonpath='{.data.dashboard-path}' | base64 -d +``` +Uninstall with +```bash +kubectl delete -k manifests/ +``` + +## Docker + +```bash +docker run -d \ + -p 5000:5000 \ + -e CANARY_TOKEN_URL="http://your-canary-token-url" \ + --name krawl \ + ghcr.io/blessedrebus/krawl:latest +``` + +## Docker Compose + +```bash +docker-compose up -d +``` + +## Python 3.11+ + +Clone the repository + +```bash +git clone https://github.com/blessedrebus/krawl.git +cd krawl/src +``` +Run the server +```bash +python3 server.py +``` + +Visit + +`http://localhost:5000` + +To access the dashboard + +`http://localhost:5000/dashboard-secret-path` + +## Configuration via Environment Variables + +To customize the deception server installation several **environment variables** can be specified. + +| Variable | Description | Default | +|----------|-------------|---------| +| `PORT` | Server listening port | `5000` | +| `DELAY` | Response delay in milliseconds | `100` | +| `LINKS_MIN_LENGTH` | Minimum random link length | `5` | +| `LINKS_MAX_LENGTH` | Maximum random link length | `15` | +| `LINKS_MIN_PER_PAGE` | Minimum links per page | `10` | +| `LINKS_MAX_PER_PAGE` | Maximum links per page | `15` | +| `MAX_COUNTER` | Initial counter value | `10` | +| `CANARY_TOKEN_TRIES` | Requests before showing canary token | `10` | +| `CANARY_TOKEN_URL` | External canary token URL | None | +| `DASHBOARD_SECRET_PATH` | Custom dashboard path | Auto-generated | +| `PROBABILITY_ERROR_CODES` | Error response probability (0-100%) | `0` | + +## robots.txt +The actual (juicy) robots.txt configuration is the following + +```txt +Disallow: /admin/ +Disallow: /api/ +Disallow: /backup/ +Disallow: /config/ +Disallow: /database/ +Disallow: /private/ +Disallow: /uploads/ +Disallow: /wp-admin/ +Disallow: /phpMyAdmin/ +Disallow: /admin/login.php +Disallow: /api/v1/users +Disallow: /api/v2/secrets +Disallow: /.env +Disallow: /credentials.txt +Disallow: /passwords.txt +Disallow: /.git/ +Disallow: /backup.sql +Disallow: /db_backup.sql +``` +## Wordlists Customization + +Edit `wordlists.json` to customize fake data: + +```json +{ + "usernames": { + "prefixes": ["admin", "root", "user"], + "suffixes": ["_prod", "_dev", "123"] + }, + "passwords": { + "prefixes": ["P@ssw0rd", "Admin"], + "simple": ["test", "password"] + }, + "directory_listing": { + "files": ["credentials.txt", "backup.sql"], + "directories": ["admin/", "backup/"] + } +} +``` + +or **values.yaml** in the case of helm chart installation + +## Dashboard + +Access the dashboard at `http://:/` + +The attackers' triggered honeypot path and the suspicious activity (such as failed login attempts) are logged + +![asd](img/dashboard-1.png) + +The top IP Addresses is shown along with top paths and User Agents + +![asd](img/dashboard-2.png) + +The dashboard shows: +- Total and unique accesses +- Suspicious activity detection +- Honeypot triggers +- Top IPs, paths, and user-agents +- Real-time monitoring + +### Retrieving Dashboard Path + +Check server startup logs + +**Python/Docker:** +```bash +docker logs krawl | grep "Dashboard available" +``` + +**Kubernetes:** +```bash +kubectl get secret krawl-server -n krawl-system \ + -o jsonpath='{.data.dashboard-path}' | base64 -d && echo +``` + +**Helm:** +```bash +kubectl get secret krawl -n krawl-system \ + -o jsonpath='{.data.dashboard-path}' | base64 -d && echo +``` + +## Deception Techniques + +### 1. Robots.txt Honeypots +Advertises forbidden paths that legitimate crawlers avoid but scanners investigate: +- `/admin/`, `/backup/`, `/config/` +- `/credentials.txt`, `/.env`, `/passwords.txt` + +### 2. Fake Services +Mimics real applications: +- WordPress (`/wp-admin`, `/wp-login.php`) +- phpMyAdmin (`/phpmyadmin`) +- Admin panels (`/admin`, `/login`) + +### 3. Credential Traps +Generates realistic but fake: +- Usernames and passwords +- API keys and tokens +- Database connection strings +- AWS credentials + +### 4. Spider Traps +Infinite random links to waste automated scanner time + +### 5. Error Simulation +Random HTTP errors to appear more realistic + + +### Custom Canary Token + +Generate a canary token at [canarytokens.org](https://canarytokens.org) and configure: + +```bash +export CANARY_TOKEN_URL="http://canarytokens.com/..." +python3 src/server.py +``` + +## Contributing + +Contributions welcome! Please: +1. Fork the repository +2. Create a feature branch +3. Make your changes +4. Submit a pull request + + +
+ +## Disclaimer + +**This is a deception/honeypot system.** +Deploy in isolated environments and monitor carefully for security events. +Use responsibly and in compliance with applicable laws and regulations. diff --git a/deployment.yaml b/deployment.yaml new file mode 100644 index 0000000..cb39eaf --- /dev/null +++ b/deployment.yaml @@ -0,0 +1,60 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: krawl-server + namespace: krawl + labels: + app: krawl-server +spec: + replicas: 1 + selector: + matchLabels: + app: krawl-server + template: + metadata: + labels: + app: krawl-server + spec: + containers: + - name: krawl + image: ghcr.io/blessedrebus/krawl:latest + imagePullPolicy: Always + ports: + - containerPort: 5000 + name: http + protocol: TCP + envFrom: + - configMapRef: + name: krawl-config + volumeMounts: + - name: wordlists + mountPath: /app/wordlists.json + subPath: wordlists.json + readOnly: true + resources: + requests: + memory: "64Mi" + cpu: "100m" + limits: + memory: "256Mi" + cpu: "500m" + livenessProbe: + httpGet: + path: / + port: 5000 + initialDelaySeconds: 10 + periodSeconds: 30 + timeoutSeconds: 5 + failureThreshold: 3 + readinessProbe: + httpGet: + path: / + port: 5000 + initialDelaySeconds: 5 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + volumes: + - name: wordlists + configMap: + name: krawl-wordlists diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..57c648d --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,33 @@ +version: '3.8' + +services: + krawl: + build: + context: . + dockerfile: Dockerfile + container_name: krawl-server + ports: + - "5000:5000" + volumes: + - ./wordlists.json:/app/wordlists.json:ro + environment: + - PORT=5000 + - DELAY=100 + - LINKS_MIN_LENGTH=5 + - LINKS_MAX_LENGTH=15 + - LINKS_MIN_PER_PAGE=10 + - LINKS_MAX_PER_PAGE=15 + - MAX_COUNTER=10 + - CANARY_TOKEN_TRIES=10 + - PROBABILITY_ERROR_CODES=0 + # Optional: Set your canary token URL + # - CANARY_TOKEN_URL=http://canarytokens.com/api/users/YOUR_TOKEN/passwords.txt + # Optional: Set custom dashboard path (auto-generated if not set) + # - DASHBOARD_SECRET_PATH=/my-secret-dashboard + restart: unless-stopped + healthcheck: + test: ["CMD", "python3", "-c", "import requests; requests.get('http://localhost:5000')"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 10s diff --git a/helm/.helmignore b/helm/.helmignore new file mode 100644 index 0000000..6b8c0ab --- /dev/null +++ b/helm/.helmignore @@ -0,0 +1 @@ +.helmignore diff --git a/helm/Chart.yaml b/helm/Chart.yaml new file mode 100644 index 0000000..3fe5d8a --- /dev/null +++ b/helm/Chart.yaml @@ -0,0 +1,15 @@ +apiVersion: v2 +name: krawl-chart +description: A Helm chart for Krawl honeypot server +type: application +version: 0.1.2 +appVersion: "1.0.0" +keywords: + - honeypot + - security + - krawl +maintainers: + - name: blessedrebus +home: https://github.com/blessedrebus/krawl +sources: + - https://github.com/blessedrebus/krawl diff --git a/helm/NOTES.txt b/helm/NOTES.txt new file mode 100644 index 0000000..6ba8fd9 --- /dev/null +++ b/helm/NOTES.txt @@ -0,0 +1,60 @@ +▄▄▄ ▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄ ▄▄▄▄ ▄▄▄ ▄▄▄▄ ▄▄▄ +███ ▄███▀ ███▀▀███▄ ▄██▀▀██▄ ▀███ ███ ███▀ ███ +███████ ███▄▄███▀ ███ ███ ███ ███ ███ ███ +███▀███▄ ███▀▀██▄ ███▀▀███ ███▄▄███▄▄███ ███ +███ ▀███ ███ ▀███ ███ ███ ▀████▀████▀ ████████ + | + | + | + | + | + || || + \\(_)// + //(___)\\ + || || + +WARNING: This is a krawl/honeypot service. Monitor access logs for security events. + +For more information, visit: https://github.com/blessedrebus/krawl + +Your krawl honeypot server has been deployed successfully. + +{{- if .Values.service.type }} + +Service Type: {{ .Values.service.type }} +{{- if eq .Values.service.type "LoadBalancer" }} + +To get the LoadBalancer IP address, run: + kubectl get svc {{ include "krawl.fullname" . }} -n {{ .Release.Namespace }} + +Once the EXTERNAL-IP is assigned, access your krawl server at: + http://:{{ .Values.service.port }} +{{- else if eq .Values.service.type "NodePort" }} + +To get the NodePort, run: + export NODE_PORT=$(kubectl get svc {{ include "krawl.fullname" . }} -n {{ .Release.Namespace }} -o jsonpath='{.spec.ports[0].nodePort}') + export NODE_IP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[0].address}') + echo "Access at: http://$NODE_IP:$NODE_PORT" +{{- else if eq .Values.service.type "ClusterIP" }} + +To access the service from your local machine: + kubectl port-forward svc/{{ include "krawl.fullname" . }} {{ .Values.service.port }}:{{ .Values.service.port }} -n {{ .Release.Namespace }} + +Then access at: http://localhost:{{ .Values.service.port }} +{{- end }} +{{- end }} + +Dashboard Access: + To retrieve the dashboard path, run: + kubectl get secret {{ include "krawl.fullname" . }} -n {{ .Release.Namespace }} -o jsonpath='{.data.dashboard-path}' | base64 -d && echo + + Then access the dashboard at: + http://:{{ .Values.service.port }}/ + +{{- if .Values.ingress.enabled }} + +Ingress is ENABLED. Your service will be available at: +{{- range .Values.ingress.hosts }} + - http{{ if $.Values.ingress.tls }}s{{ end }}://{{ .host }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/helm/templates/NOTES.txt b/helm/templates/NOTES.txt new file mode 100644 index 0000000..8ca65f6 --- /dev/null +++ b/helm/templates/NOTES.txt @@ -0,0 +1,60 @@ +▄▄▄ ▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄ ▄▄▄▄ ▄▄▄ ▄▄▄▄ ▄▄▄ +███ ▄███▀ ███▀▀███▄ ▄██▀▀██▄ ▀███ ███ ███▀ ███ +███████ ███▄▄███▀ ███ ███ ███ ███ ███ ███ +███▀███▄ ███▀▀██▄ ███▀▀███ ███▄▄███▄▄███ ███ +███ ▀███ ███ ▀███ ███ ███ ▀████▀████▀ ████████ + | + | + | + | + | + || || + \\(_)// + //(___)\\ + || || + +WARNING: This is a deception/honeypot service. Monitor access logs for security events. + +For more information, visit: https://github.com/blessedrebus/deception + +Your deception honeypot server has been deployed successfully. + +{{- if .Values.service.type }} + +Service Type: {{ .Values.service.type }} +{{- if eq .Values.service.type "LoadBalancer" }} + +To get the LoadBalancer IP address, run: + kubectl get svc {{ include "krawl.fullname" . }} -n {{ .Release.Namespace }} + +Once the EXTERNAL-IP is assigned, access your deception server at: + http://:{{ .Values.service.port }} +{{- else if eq .Values.service.type "NodePort" }} + +To get the NodePort, run: + export NODE_PORT=$(kubectl get svc {{ include "krawl.fullname" . }} -n {{ .Release.Namespace }} -o jsonpath='{.spec.ports[0].nodePort}') + export NODE_IP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[0].address}') + echo "Access at: http://$NODE_IP:$NODE_PORT" +{{- else if eq .Values.service.type "ClusterIP" }} + +To access the service from your local machine: + kubectl port-forward svc/{{ include "krawl.fullname" . }} {{ .Values.service.port }}:{{ .Values.service.port }} -n {{ .Release.Namespace }} + +Then access at: http://localhost:{{ .Values.service.port }} +{{- end }} +{{- end }} + +Dashboard Access: + To retrieve the dashboard path, run: + kubectl get secret {{ include "krawl.fullname" . }} -n {{ .Release.Namespace }} -o jsonpath='{.data.dashboard-path}' | base64 -d && echo + + Then access the dashboard at: + http://:{{ .Values.service.port }}/ + +{{- if .Values.ingress.enabled }} + +Ingress is ENABLED. Your service will be available at: +{{- range .Values.ingress.hosts }} + - http{{ if $.Values.ingress.tls }}s{{ end }}://{{ .host }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/helm/templates/_helpers.tpl b/helm/templates/_helpers.tpl new file mode 100644 index 0000000..57f524a --- /dev/null +++ b/helm/templates/_helpers.tpl @@ -0,0 +1,60 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "krawl.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +*/}} +{{- define "krawl.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "krawl.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "krawl.labels" -}} +helm.sh/chart: {{ include "krawl.chart" . }} +{{ include "krawl.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "krawl.selectorLabels" -}} +app.kubernetes.io/name: {{ include "krawl.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "krawl.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "krawl.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/helm/templates/configmap.yaml b/helm/templates/configmap.yaml new file mode 100644 index 0000000..f6fe92c --- /dev/null +++ b/helm/templates/configmap.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "krawl.fullname" . }}-config + labels: + {{- include "krawl.labels" . | nindent 4 }} +data: + PORT: {{ .Values.config.port | quote }} + DELAY: {{ .Values.config.delay | quote }} + LINKS_MIN_LENGTH: {{ .Values.config.linksMinLength | quote }} + LINKS_MAX_LENGTH: {{ .Values.config.linksMaxLength | quote }} + LINKS_MIN_PER_PAGE: {{ .Values.config.linksMinPerPage | quote }} + LINKS_MAX_PER_PAGE: {{ .Values.config.linksMaxPerPage | quote }} + MAX_COUNTER: {{ .Values.config.maxCounter | quote }} + CANARY_TOKEN_TRIES: {{ .Values.config.canaryTokenTries | quote }} + PROBABILITY_ERROR_CODES: {{ .Values.config.probabilityErrorCodes | quote }} + CANARY_TOKEN_URL: {{ .Values.config.canaryTokenUrl | quote }} diff --git a/helm/templates/deployment.yaml b/helm/templates/deployment.yaml new file mode 100644 index 0000000..bad4f0d --- /dev/null +++ b/helm/templates/deployment.yaml @@ -0,0 +1,84 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "krawl.fullname" . }} + labels: + {{- include "krawl.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "krawl.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "krawl.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.podSecurityContext }} + securityContext: + {{- toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ .Chart.Name }} + {{- with .Values.securityContext }} + securityContext: + {{- toYaml . | nindent 12 }} + {{- end }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: {{ .Values.config.port }} + protocol: TCP + envFrom: + - configMapRef: + name: {{ include "krawl.fullname" . }}-config + env: + - name: DASHBOARD_SECRET_PATH + valueFrom: + secretKeyRef: + name: {{ include "krawl.fullname" . }} + key: dashboard-path + volumeMounts: + - name: wordlists + mountPath: /app/wordlists.json + subPath: wordlists.json + readOnly: true + {{- with .Values.livenessProbe }} + livenessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.readinessProbe }} + readinessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} + volumes: + - name: wordlists + configMap: + name: {{ include "krawl.fullname" . }}-wordlists + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/templates/hpa.yaml b/helm/templates/hpa.yaml new file mode 100644 index 0000000..0f64b10 --- /dev/null +++ b/helm/templates/hpa.yaml @@ -0,0 +1,32 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "krawl.fullname" . }} + labels: + {{- include "krawl.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "krawl.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/helm/templates/ingress.yaml b/helm/templates/ingress.yaml new file mode 100644 index 0000000..ac72446 --- /dev/null +++ b/helm/templates/ingress.yaml @@ -0,0 +1,42 @@ +{{- if .Values.ingress.enabled -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ include "krawl.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "krawl.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if .Values.ingress.className }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + pathType: {{ .pathType }} + backend: + service: + name: {{ include "krawl.fullname" $ }} + port: + number: {{ $.Values.service.port }} + {{- end }} + {{- end }} +{{- end }} diff --git a/helm/templates/network-policy.yaml b/helm/templates/network-policy.yaml new file mode 100644 index 0000000..085d847 --- /dev/null +++ b/helm/templates/network-policy.yaml @@ -0,0 +1,24 @@ +{{- if .Values.networkPolicy.enabled -}} +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: {{ include "krawl.fullname" . }} + labels: + {{- include "krawl.labels" . | nindent 4 }} +spec: + podSelector: + matchLabels: + {{- include "krawl.selectorLabels" . | nindent 6 }} + {{- with .Values.networkPolicy.policyTypes }} + policyTypes: + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.networkPolicy.ingress }} + ingress: + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.networkPolicy.egress }} + egress: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/helm/templates/secret.yaml b/helm/templates/secret.yaml new file mode 100644 index 0000000..798289c --- /dev/null +++ b/helm/templates/secret.yaml @@ -0,0 +1,16 @@ +{{- $secret := (lookup "v1" "Secret" .Release.Namespace (include "krawl.fullname" .)) -}} +{{- $dashboardPath := "" -}} +{{- if and $secret $secret.data -}} + {{- $dashboardPath = index $secret.data "dashboard-path" | b64dec -}} +{{- else -}} + {{- $dashboardPath = printf "/%s" (randAlphaNum 32) -}} +{{- end -}} +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "krawl.fullname" . }} + labels: + {{- include "krawl.labels" . | nindent 4 }} +type: Opaque +stringData: + dashboard-path: {{ $dashboardPath | quote }} diff --git a/helm/templates/service.yaml b/helm/templates/service.yaml new file mode 100644 index 0000000..340f905 --- /dev/null +++ b/helm/templates/service.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "krawl.fullname" . }} + labels: + {{- include "krawl.labels" . | nindent 4 }} + {{- with .Values.service.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.service.type }} + {{- if .Values.service.externalTrafficPolicy }} + externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy }} + {{- end }} + sessionAffinity: ClientIP + sessionAffinityConfig: + clientIP: + timeoutSeconds: 10800 + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "krawl.selectorLabels" . | nindent 4 }} diff --git a/helm/templates/wordlists-configmap.yaml b/helm/templates/wordlists-configmap.yaml new file mode 100644 index 0000000..c37faca --- /dev/null +++ b/helm/templates/wordlists-configmap.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "krawl.fullname" . }}-wordlists + labels: + {{- include "krawl.labels" . | nindent 4 }} +data: + wordlists.json: | + {{- .Values.wordlists | toJson | nindent 4 }} diff --git a/helm/values.yaml b/helm/values.yaml new file mode 100644 index 0000000..93d668b --- /dev/null +++ b/helm/values.yaml @@ -0,0 +1,295 @@ +replicaCount: 1 + +image: + repository: ghcr.io/blessedrebus/krawl + pullPolicy: Always + tag: "latest" + +imagePullSecrets: [] +nameOverride: "krawl" +fullnameOverride: "" + +serviceAccount: + create: false + annotations: {} + name: "" + +podAnnotations: {} + +podSecurityContext: {} + +securityContext: {} + +service: + type: LoadBalancer + port: 5000 + annotations: {} + # Preserve source IP when using LoadBalancer + externalTrafficPolicy: Local + +ingress: + enabled: true + className: "nginx" + annotations: {} + hosts: + - host: krawl.example.com + paths: + - path: / + pathType: Prefix + tls: [] + # - secretName: krawl-tls + # hosts: + # - krawl.example.com + +resources: + limits: + cpu: 500m + memory: 256Mi + requests: + cpu: 100m + memory: 64Mi + +livenessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 10 + periodSeconds: 30 + timeoutSeconds: 5 + failureThreshold: 3 + +readinessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 5 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 5 + targetCPUUtilizationPercentage: 70 + targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +# Application configuration +config: + port: 5000 + delay: 100 + linksMinLength: 5 + linksMaxLength: 15 + linksMinPerPage: 10 + linksMaxPerPage: 15 + maxCounter: 10 + canaryTokenTries: 10 + probabilityErrorCodes: 0 +# canaryTokenUrl: set-your-canary-token-url-here + +networkPolicy: + enabled: true + policyTypes: + - Ingress + - Egress + ingress: + - from: + - podSelector: {} + - namespaceSelector: {} + - ipBlock: + cidr: 0.0.0.0/0 + ports: + - protocol: TCP + port: 5000 + egress: + - to: + - namespaceSelector: {} + - ipBlock: + cidr: 0.0.0.0/0 + ports: + - protocol: TCP + - protocol: UDP + +# Wordlists configuration +wordlists: + usernames: + prefixes: + - admin + - user + - developer + - root + - system + - db + - api + - service + - deploy + - test + - prod + - backup + - monitor + - jenkins + - webapp + suffixes: + - "" + - "_prod" + - "_dev" + - "_test" + - "123" + - "2024" + - "_backup" + - "_admin" + - "01" + - "02" + - "_user" + - "_service" + - "_api" + passwords: + prefixes: + - P@ssw0rd + - Passw0rd + - Admin + - Secret + - Welcome + - System + - Database + - Secure + - Master + - Root + simple: + - test + - demo + - temp + - change + - password + - admin + - letmein + - welcome + - default + - sample + emails: + domains: + - example.com + - company.com + - localhost.com + - test.com + - domain.com + - corporate.com + - internal.net + - enterprise.com + - business.org + api_keys: + prefixes: + - sk_live_ + - sk_test_ + - api_ + - key_ + - token_ + - access_ + - secret_ + - prod_ + - "" + databases: + names: + - production + - prod_db + - main_db + - app_database + - users_db + - customer_data + - analytics + - staging_db + - dev_database + - wordpress + - ecommerce + - crm_db + - inventory + hosts: + - localhost + - db.internal + - mysql.local + - postgres.internal + - 127.0.0.1 + - db-server-01 + - database.prod + - sql.company.com + applications: + names: + - WebApp + - API Gateway + - Dashboard + - Admin Panel + - CMS + - Portal + - Manager + - Console + - Control Panel + - Backend + users: + roles: + - Administrator + - Developer + - Manager + - User + - Guest + - Moderator + - Editor + - Viewer + - Analyst + - Support + directory_listing: + files: + - admin.txt + - test.exe + - backup.sql + - database.sql + - db_backup.sql + - dump.sql + - config.php + - credentials.txt + - passwords.txt + - users.csv + - .env + - id_rsa + - id_rsa.pub + - private_key.pem + - api_keys.json + - secrets.yaml + - admin_notes.txt + - settings.ini + - database.yml + - wp-config.php + - .htaccess + - server.key + - cert.pem + - shadow.bak + - passwd.old + directories: + - uploads/ + - backups/ + - logs/ + - temp/ + - cache/ + - private/ + - config/ + - admin/ + - database/ + - backup/ + - old/ + - archive/ + - .git/ + - keys/ + - credentials/ + error_codes: + - 400 + - 401 + - 403 + - 404 + - 500 + - 502 + - 503 diff --git a/img/dashboard-1.png b/img/dashboard-1.png new file mode 100644 index 0000000000000000000000000000000000000000..ad11dd898e332db37bcb70d04c943f2987ca4953 GIT binary patch literal 100494 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 literal 0 HcmV?d00001 diff --git a/img/dashboard-2.png b/img/dashboard-2.png new file mode 100644 index 0000000000000000000000000000000000000000..65c07661dc590c48bde1266c7bbb2b7f51d7c16b GIT binary patch literal 55135 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 bPH_uYFnZ*SYtrDJvN-C>+P9&KW4`fv?h(Dm5}R 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%0A1II}6`qw@Z)Q@xY@BkleOD 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

(gXC^*BS*guPh>fU_<5$S>&?__q= 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 'Config': + """Create configuration from environment variables""" + return cls( + port=int(os.getenv('PORT', 5000)), + delay=int(os.getenv('DELAY', 100)), + links_length_range=( + int(os.getenv('LINKS_MIN_LENGTH', 5)), + int(os.getenv('LINKS_MAX_LENGTH', 15)) + ), + links_per_page_range=( + int(os.getenv('LINKS_MIN_PER_PAGE', 10)), + int(os.getenv('LINKS_MAX_PER_PAGE', 15)) + ), + char_space=os.getenv('CHAR_SPACE', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), + max_counter=int(os.getenv('MAX_COUNTER', 10)), + canary_token_url=os.getenv('CANARY_TOKEN_URL'), + canary_token_tries=int(os.getenv('CANARY_TOKEN_TRIES', 10)), + dashboard_secret_path=os.getenv('DASHBOARD_SECRET_PATH', f'/{os.urandom(16).hex()}'), + api_server_url=os.getenv('API_SERVER_URL'), + api_server_port=int(os.getenv('API_SERVER_PORT', 8080)), + api_server_path=os.getenv('API_SERVER_PATH', '/api/v2/users'), + probability_error_codes=int(os.getenv('PROBABILITY_ERROR_CODES', 5)) + ) diff --git a/src/dashboard_template.py b/src/dashboard_template.py new file mode 100644 index 0000000..4bcde8b --- /dev/null +++ b/src/dashboard_template.py @@ -0,0 +1,214 @@ +#!/usr/bin/env python3 + +""" +Dashboard template for viewing honeypot statistics. +Customize this template to change the dashboard appearance. +""" + + +def generate_dashboard(stats: dict) -> str: + """Generate dashboard HTML with access statistics""" + + top_ips_rows = '\n'.join([ + f'{i+1}{ip}{count}' + for i, (ip, count) in enumerate(stats['top_ips']) + ]) or 'No data' + + # Generate paths rows + top_paths_rows = '\n'.join([ + f'{i+1}{path}{count}' + for i, (path, count) in enumerate(stats['top_paths']) + ]) or 'No data' + + # Generate User-Agent rows + top_ua_rows = '\n'.join([ + f'{i+1}{ua[:80]}{count}' + for i, (ua, count) in enumerate(stats['top_user_agents']) + ]) or 'No data' + + # Generate suspicious accesses rows + suspicious_rows = '\n'.join([ + f'{log["ip"]}{log["path"]}{log["user_agent"][:60]}{log["timestamp"].split("T")[1][:8]}' + for log in stats['recent_suspicious'][-10:] + ]) or 'No suspicious activity detected' + + return f""" + + + + Krawl Dashboard + + + +

+

🕷️ Krawl Dashboard

+ +
+
+
{stats['total_accesses']}
+
Total Accesses
+
+
+
{stats['unique_ips']}
+
Unique IPs
+
+
+
{stats['unique_paths']}
+
Unique Paths
+
+
+
{stats['suspicious_accesses']}
+
Suspicious Accesses
+
+
+ +
+

⚠️ Recent Suspicious Activity

+ + + + + + + + + + + {suspicious_rows} + +
IP AddressPathUser-AgentTime
+
+ +
+

Top IP Addresses

+ + + + + + + + + + {top_ips_rows} + +
#IP AddressAccess Count
+
+ +
+

Top Paths

+ + + + + + + + + + {top_paths_rows} + +
#PathAccess Count
+
+ +
+

Top User-Agents

+ + + + + + + + + + {top_ua_rows} + +
#User-AgentCount
+
+
+ + +""" diff --git a/src/generators.py b/src/generators.py new file mode 100644 index 0000000..16c0c32 --- /dev/null +++ b/src/generators.py @@ -0,0 +1,190 @@ +#!/usr/bin/env python3 + +""" +Generators for creating random fake data (credentials, API keys, etc.) +""" + +import random +import string +import json +from templates import html_templates +from wordlists import get_wordlists + + +def random_username() -> str: + """Generate random username""" + wl = get_wordlists() + return random.choice(wl.username_prefixes) + random.choice(wl.username_suffixes) + + +def random_password() -> str: + """Generate random password""" + wl = get_wordlists() + templates = [ + lambda: ''.join(random.choices(string.ascii_letters + string.digits, k=12)), + lambda: f"{random.choice(wl.password_prefixes)}{random.randint(100, 999)}!", + lambda: f"{random.choice(wl.simple_passwords)}{random.randint(1000, 9999)}", + lambda: ''.join(random.choices(string.ascii_lowercase, k=8)), + ] + return random.choice(templates)() + + +def random_email(username: str = None) -> str: + """Generate random email""" + wl = get_wordlists() + if not username: + username = random_username() + return f"{username}@{random.choice(wl.email_domains)}" + + +def random_api_key() -> str: + """Generate random API key""" + wl = get_wordlists() + key = ''.join(random.choices(string.ascii_letters + string.digits, k=32)) + return random.choice(wl.api_key_prefixes) + key + + +def random_database_name() -> str: + """Generate random database name""" + wl = get_wordlists() + return random.choice(wl.database_names) + + +def credentials_txt() -> str: + """Generate fake credentials.txt with random data""" + content = "# Production Credentials\n\n" + for i in range(random.randint(3, 7)): + username = random_username() + password = random_password() + content += f"{username}:{password}\n" + return content + + +def passwords_txt() -> str: + """Generate fake passwords.txt with random data""" + content = "# Password List\n" + content += f"Admin Password: {random_password()}\n" + content += f"Database Password: {random_password()}\n" + content += f"API Key: {random_api_key()}\n\n" + content += "User Passwords:\n" + for i in range(random.randint(5, 10)): + username = random_username() + password = random_password() + content += f"{username} = {password}\n" + return content + + +def users_json() -> str: + """Generate fake users.json with random data""" + wl = get_wordlists() + users = [] + for i in range(random.randint(3, 8)): + username = random_username() + users.append({ + "id": i + 1, + "username": username, + "email": random_email(username), + "password": random_password(), + "role": random.choice(wl.user_roles), + "api_token": random_api_key() + }) + return json.dumps({"users": users}, indent=2) + + +def api_keys_json() -> str: + """Generate fake api_keys.json with random data""" + keys = { + "stripe": { + "public_key": "pk_live_" + ''.join(random.choices(string.ascii_letters + string.digits, k=24)), + "secret_key": random_api_key() + }, + "aws": { + "access_key_id": "AKIA" + ''.join(random.choices(string.ascii_uppercase + string.digits, k=16)), + "secret_access_key": ''.join(random.choices(string.ascii_letters + string.digits + '+/', k=40)) + }, + "sendgrid": { + "api_key": "SG." + ''.join(random.choices(string.ascii_letters + string.digits, k=48)) + }, + "twilio": { + "account_sid": "AC" + ''.join(random.choices(string.ascii_lowercase + string.digits, k=32)), + "auth_token": ''.join(random.choices(string.ascii_lowercase + string.digits, k=32)) + } + } + return json.dumps(keys, indent=2) + + +def api_response(path: str) -> str: + """Generate fake API JSON responses with random data""" + wl = get_wordlists() + + def random_users(count: int = 3): + users = [] + for i in range(count): + username = random_username() + users.append({ + "id": i + 1, + "username": username, + "email": random_email(username), + "role": random.choice(wl.user_roles) + }) + return users + + responses = { + '/api/users': json.dumps({ + "users": random_users(random.randint(2, 5)), + "total": random.randint(50, 500) + }, indent=2), + '/api/v1/users': json.dumps({ + "status": "success", + "data": [{ + "id": random.randint(1, 100), + "name": random_username(), + "api_key": random_api_key() + }] + }, indent=2), + '/api/v2/secrets': json.dumps({ + "database": { + "host": random.choice(wl.database_hosts), + "username": random_username(), + "password": random_password(), + "database": random_database_name() + }, + "api_keys": { + "stripe": random_api_key(), + "aws": 'AKIA' + ''.join(random.choices(string.ascii_uppercase + string.digits, k=16)) + } + }, indent=2), + '/api/config': json.dumps({ + "app_name": random.choice(wl.application_names), + "debug": random.choice([True, False]), + "secret_key": random_api_key(), + "database_url": f"postgresql://{random_username()}:{random_password()}@localhost/{random_database_name()}" + }, indent=2), + '/.env': f"""APP_NAME={random.choice(wl.application_names)} +DEBUG={random.choice(['true', 'false'])} +APP_KEY=base64:{''.join(random.choices(string.ascii_letters + string.digits, k=32))}= +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE={random_database_name()} +DB_USERNAME={random_username()} +DB_PASSWORD={random_password()} +AWS_ACCESS_KEY_ID=AKIA{''.join(random.choices(string.ascii_uppercase + string.digits, k=16))} +AWS_SECRET_ACCESS_KEY={''.join(random.choices(string.ascii_letters + string.digits + '+/', k=40))} +STRIPE_SECRET={random_api_key()} +""" + } + return responses.get(path, json.dumps({"error": "Not found"}, indent=2)) + + +def directory_listing(path: str) -> str: + """Generate fake directory listing using wordlists""" + wl = get_wordlists() + + files = wl.directory_files + dirs = wl.directory_dirs + + selected_files = [(f, random.randint(1024, 1024*1024)) + for f in random.sample(files, min(6, len(files)))] + + return html_templates.directory_listing(path, dirs, selected_files) diff --git a/src/handler.py b/src/handler.py new file mode 100644 index 0000000..2768c6b --- /dev/null +++ b/src/handler.py @@ -0,0 +1,342 @@ +#!/usr/bin/env python3 + +import random +import time +from http.server import BaseHTTPRequestHandler +from typing import Optional, List +from datetime import datetime + +from config import Config +from tracker import AccessTracker +from templates import html_templates +from templates.dashboard_template import generate_dashboard +from generators import ( + credentials_txt, passwords_txt, users_json, api_keys_json, + api_response, directory_listing +) +from wordlists import get_wordlists + + +class Handler(BaseHTTPRequestHandler): + """HTTP request handler for the deception server""" + webpages: Optional[List[str]] = None + config: Config = None + tracker: AccessTracker = None + counter: int = 0 + + def _get_client_ip(self) -> str: + """Extract client IP address from request, checking proxy headers first""" + # Headers might not be available during early error logging + if hasattr(self, 'headers') and self.headers: + # Check X-Forwarded-For header (set by load balancers/proxies) + forwarded_for = self.headers.get('X-Forwarded-For') + if forwarded_for: + # X-Forwarded-For can contain multiple IPs, get the first (original client) + return forwarded_for.split(',')[0].strip() + + # Check X-Real-IP header (set by nginx and other proxies) + real_ip = self.headers.get('X-Real-IP') + if real_ip: + return real_ip.strip() + + # Fallback to direct connection IP + return self.client_address[0] + + def _get_user_agent(self) -> str: + """Extract user agent from request""" + return self.headers.get('User-Agent', '') + + def _should_return_error(self) -> bool: + """Check if we should return an error based on probability""" + if self.config.probability_error_codes <= 0: + return False + return random.randint(1, 100) <= self.config.probability_error_codes + + def _get_random_error_code(self) -> int: + """Get a random error code from wordlists""" + wl = get_wordlists() + error_codes = wl.error_codes + if not error_codes: + error_codes = [400, 401, 403, 404, 500, 502, 503] + return random.choice(error_codes) + + def generate_page(self, seed: str) -> str: + """Generate a webpage containing random links or canary token""" + random.seed(seed) + num_pages = random.randint(*self.config.links_per_page_range) + + html = f""" + + + + Krawl + + + +
+ +""" + return html + + def do_HEAD(self): + """Sends header information""" + self.send_response(200) + self.send_header("Content-type", "text/html") + self.end_headers() + + def do_POST(self): + """Handle POST requests (mainly login attempts)""" + client_ip = self._get_client_ip() + user_agent = self._get_user_agent() + + self.tracker.record_access(client_ip, self.path, user_agent) + + print(f"[LOGIN ATTEMPT] {client_ip} - {self.path} - {user_agent[:50]}") + + content_length = int(self.headers.get('Content-Length', 0)) + if content_length > 0: + post_data = self.rfile.read(content_length).decode('utf-8') + print(f"[POST DATA] {post_data[:200]}") + + time.sleep(1) + + self.send_response(200) + self.send_header('Content-type', 'text/html') + self.end_headers() + self.wfile.write(html_templates.login_error().encode()) + + def serve_special_path(self, path: str) -> bool: + """Serve special paths like robots.txt, API endpoints, etc.""" + + if path == '/robots.txt': + self.send_response(200) + self.send_header('Content-type', 'text/plain') + self.end_headers() + self.wfile.write(html_templates.robots_txt().encode()) + return True + + if path in ['/credentials.txt', '/passwords.txt', '/admin_notes.txt']: + self.send_response(200) + self.send_header('Content-type', 'text/plain') + self.end_headers() + if 'credentials' in path: + self.wfile.write(credentials_txt().encode()) + else: + self.wfile.write(passwords_txt().encode()) + return True + + if path in ['/users.json', '/api_keys.json', '/config.json']: + self.send_response(200) + self.send_header('Content-type', 'application/json') + self.end_headers() + if 'users' in path: + self.wfile.write(users_json().encode()) + elif 'api_keys' in path: + self.wfile.write(api_keys_json().encode()) + else: + self.wfile.write(api_response('/api/config').encode()) + return True + + if path in ['/admin', '/admin/', '/admin/login', '/login', '/wp-login.php']: + self.send_response(200) + self.send_header('Content-type', 'text/html') + self.end_headers() + self.wfile.write(html_templates.login_form().encode()) + return True + + if path == '/wp-admin' or path == '/wp-admin/': + self.send_response(200) + self.send_header('Content-type', 'text/html') + self.end_headers() + self.wfile.write(html_templates.login_form().encode()) + return True + + if path in ['/wp-content/', '/wp-includes/'] or 'wordpress' in path.lower(): + self.send_response(200) + self.send_header('Content-type', 'text/html') + self.end_headers() + self.wfile.write(html_templates.wordpress().encode()) + return True + + if 'phpmyadmin' in path.lower() or path in ['/pma/', '/phpMyAdmin/']: + self.send_response(200) + self.send_header('Content-type', 'text/html') + self.end_headers() + self.wfile.write(html_templates.phpmyadmin().encode()) + return True + + if path.startswith('/api/') or path.startswith('/api') or path in ['/.env']: + self.send_response(200) + self.send_header('Content-type', 'application/json') + self.end_headers() + self.wfile.write(api_response(path).encode()) + return True + + if path in ['/backup/', '/uploads/', '/private/', '/admin/', '/config/', '/database/']: + self.send_response(200) + self.send_header('Content-type', 'text/html') + self.end_headers() + self.wfile.write(directory_listing(path).encode()) + return True + + return False + + def do_GET(self): + """Responds to webpage requests""" + client_ip = self._get_client_ip() + user_agent = self._get_user_agent() + + if self.config.dashboard_secret_path and self.path == self.config.dashboard_secret_path: + self.send_response(200) + self.send_header('Content-type', 'text/html') + self.end_headers() + try: + stats = self.tracker.get_stats() + self.wfile.write(generate_dashboard(stats).encode()) + except Exception as e: + print(f"Error generating dashboard: {e}") + return + + self.tracker.record_access(client_ip, self.path, user_agent) + + if self.tracker.is_suspicious_user_agent(user_agent): + print(f"[SUSPICIOUS] {client_ip} - {user_agent[:50]} - {self.path}") + + if self._should_return_error(): + error_code = self._get_random_error_code() + print(f"[ERROR] Returning {error_code} to {client_ip} - {self.path}") + self.send_response(error_code) + self.end_headers() + return + + if self.serve_special_path(self.path): + return + + time.sleep(self.config.delay / 1000.0) + self.send_response(200) + self.send_header('Content-type', 'text/html') + self.end_headers() + + try: + self.wfile.write(self.generate_page(self.path).encode()) + + Handler.counter -= 1 + + if Handler.counter < 0: + Handler.counter = self.config.canary_token_tries + except Exception as e: + print(f"Error generating page: {e}") + + def log_message(self, format, *args): + """Override to customize logging""" + client_ip = self._get_client_ip() + print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] {client_ip} - {format % args}") diff --git a/src/server.py b/src/server.py new file mode 100644 index 0000000..d10d33e --- /dev/null +++ b/src/server.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python3 + +""" +Main server module for the deception honeypot. +Run this file to start the server. +""" + +import sys +from http.server import HTTPServer + +from config import Config +from tracker import AccessTracker +from handler import Handler + + +def print_usage(): + """Print usage information""" + print(f'Usage: {sys.argv[0]} [FILE]\n') + print('FILE is file containing a list of webpage names to serve, one per line.') + print('If no file is provided, random links will be generated.\n') + print('Environment Variables:') + print(' PORT - Server port (default: 5000)') + print(' DELAY - Response delay in ms (default: 100)') + print(' LINKS_MIN_LENGTH - Min link length (default: 5)') + print(' LINKS_MAX_LENGTH - Max link length (default: 15)') + print(' LINKS_MIN_PER_PAGE - Min links per page (default: 10)') + print(' LINKS_MAX_PER_PAGE - Max links per page (default: 15)') + print(' MAX_COUNTER - Max counter value (default: 10)') + print(' CANARY_TOKEN_URL - Canary token URL to display') + print(' CANARY_TOKEN_TRIES - Number of tries before showing token (default: 10)') + print(' DASHBOARD_SECRET_PATH - Secret path for dashboard (auto-generated if not set)') + print(' PROBABILITY_ERROR_CODES - Probability (0-100) to return HTTP error codes (default: 0)') + print(' CHAR_SPACE - Characters for random links') + + +def main(): + """Main entry point for the deception server""" + if '-h' in sys.argv or '--help' in sys.argv: + print_usage() + exit(0) + + config = Config.from_env() + + tracker = AccessTracker() + + Handler.config = config + Handler.tracker = tracker + Handler.counter = config.canary_token_tries + + if len(sys.argv) == 2: + try: + with open(sys.argv[1], 'r') as f: + Handler.webpages = f.readlines() + + if not Handler.webpages: + print('The file provided was empty. Using randomly generated links.') + Handler.webpages = None + except IOError: + print('Can\'t read input file. Using randomly generated links.') + + try: + print(f'Starting deception server on port {config.port}...') + print(f'Dashboard available at: {config.dashboard_secret_path}') + if config.canary_token_url: + print(f'Canary token will appear after {config.canary_token_tries} tries') + else: + print('No canary token configured (set CANARY_TOKEN_URL to enable)') + + server = HTTPServer(('0.0.0.0', config.port), Handler) + print('Server started. Use to stop.') + server.serve_forever() + except KeyboardInterrupt: + print('\nStopping server...') + server.socket.close() + print('Server stopped') + except Exception as e: + print(f'Error starting HTTP server on port {config.port}: {e}') + print(f'Make sure you are root, if needed, and that port {config.port} is open.') + exit(1) + + +if __name__ == '__main__': + main() diff --git a/src/templates/dashboard_template.py b/src/templates/dashboard_template.py new file mode 100644 index 0000000..d4c6421 --- /dev/null +++ b/src/templates/dashboard_template.py @@ -0,0 +1,241 @@ +#!/usr/bin/env python3 + +""" +Dashboard template for viewing honeypot statistics. +Customize this template to change the dashboard appearance. +""" + + +def generate_dashboard(stats: dict) -> str: + """Generate dashboard HTML with access statistics""" + + # Generate IP rows + top_ips_rows = '\n'.join([ + f'{i+1}{ip}{count}' + for i, (ip, count) in enumerate(stats['top_ips']) + ]) or 'No data' + + # Generate paths rows + top_paths_rows = '\n'.join([ + f'{i+1}{path}{count}' + for i, (path, count) in enumerate(stats['top_paths']) + ]) or 'No data' + + # Generate User-Agent rows + top_ua_rows = '\n'.join([ + f'{i+1}{ua[:80]}{count}' + for i, (ua, count) in enumerate(stats['top_user_agents']) + ]) or 'No data' + + # Generate suspicious accesses rows + suspicious_rows = '\n'.join([ + f'{log["ip"]}{log["path"]}{log["user_agent"][:60]}{log["timestamp"].split("T")[1][:8]}' + for log in stats['recent_suspicious'][-10:] + ]) or 'No suspicious activity detected' + + # Generate honeypot triggered IPs rows + honeypot_rows = '\n'.join([ + f'{ip}{", ".join(paths)}{len(paths)}' + for ip, paths in stats.get('honeypot_triggered_ips', []) + ]) or 'No honeypot triggers yet' + + return f""" + + + + Krawl Dashboard + + + +
+

🕷️ Krawl Dashboard

+ +
+
+
{stats['total_accesses']}
+
Total Accesses
+
+
+
{stats['unique_ips']}
+
Unique IPs
+
+
+
{stats['unique_paths']}
+
Unique Paths
+
+
+
{stats['suspicious_accesses']}
+
Suspicious Accesses
+
+
+
{stats.get('honeypot_ips', 0)}
+
Honeypot Caught
+
+
+ +
+

🍯 Honeypot Triggers

+ + + + + + + + + + {honeypot_rows} + +
IP AddressAccessed PathsCount
+
+ +
+

⚠️ Recent Suspicious Activity

+ + + + + + + + + + + {suspicious_rows} + +
IP AddressPathUser-AgentTime
+
+ +
+

Top IP Addresses

+ + + + + + + + + + {top_ips_rows} + +
#IP AddressAccess Count
+
+ +
+

Top Paths

+ + + + + + + + + + {top_paths_rows} + +
#PathAccess Count
+
+ +
+

Top User-Agents

+ + + + + + + + + + {top_ua_rows} + +
#User-AgentCount
+
+
+ + +""" diff --git a/src/templates/html_templates.py b/src/templates/html_templates.py new file mode 100644 index 0000000..e17df75 --- /dev/null +++ b/src/templates/html_templates.py @@ -0,0 +1,229 @@ +#!/usr/bin/env python3 + +""" +HTML templates for the deception server. +Edit these templates to customize the appearance of fake pages. +""" + + +def login_form() -> str: + """Generate fake login page""" + return """ + + + + Admin Login + + + + + +""" + + +def login_error() -> str: + """Generate fake login error page""" + return """ + + + + Login Failed + + + + + +""" + + +def wordpress() -> str: + """Generate fake WordPress page""" + return """ + + + + + My Blog – Just another WordPress site + + + + + + + + +
+ + +
+
+
+

Hello world!

+ +
+
+

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

+
+
+ +
+
+

About This Site

+ +
+
+

This is a sample page. You can use it to write about your site, yourself, or anything else you'd like.

+
+
+
+ + +
+ + +""" + + +def phpmyadmin() -> str: + """Generate fake phpMyAdmin page""" + return """ + + + phpMyAdmin + + + +

phpMyAdmin

+ + +""" + + +def robots_txt() -> str: + """Generate juicy robots.txt""" + return """User-agent: * +Disallow: /admin/ +Disallow: /api/ +Disallow: /backup/ +Disallow: /config/ +Disallow: /database/ +Disallow: /private/ +Disallow: /uploads/ +Disallow: /wp-admin/ +Disallow: /phpMyAdmin/ +Disallow: /admin/login.php +Disallow: /api/v1/users +Disallow: /api/v2/secrets +Disallow: /.env +Disallow: /credentials.txt +Disallow: /passwords.txt +Disallow: /.git/ +Disallow: /backup.sql +Disallow: /db_backup.sql +""" + + +def directory_listing(path: str, dirs: list, files: list) -> str: + """Generate fake directory listing""" + html = f""" + +Index of {path} + + + +

Index of {path}

+ + + +""" + + for d in dirs: + html += f'\n' + + for f, size in files: + html += f'\n' + + html += '
NameLast ModifiedSize
Parent Directory--
{d}2024-12-01 10:30-
{f}2024-12-01 14:22{size}
' + return html diff --git a/src/tracker.py b/src/tracker.py new file mode 100644 index 0000000..8a73a4c --- /dev/null +++ b/src/tracker.py @@ -0,0 +1,114 @@ +#!/usr/bin/env python3 + +from typing import Dict, List, Tuple +from collections import defaultdict +from datetime import datetime + + +class AccessTracker: + """Track IP addresses and paths accessed""" + def __init__(self): + self.ip_counts: Dict[str, int] = defaultdict(int) + self.path_counts: Dict[str, int] = defaultdict(int) + self.user_agent_counts: Dict[str, int] = defaultdict(int) + self.access_log: List[Dict] = [] + self.suspicious_patterns = [ + 'bot', 'crawler', 'spider', 'scraper', 'curl', 'wget', 'python-requests', + 'scanner', 'nikto', 'sqlmap', 'nmap', 'masscan', 'nessus', 'acunetix', + 'burp', 'zap', 'w3af', 'metasploit', 'nuclei', 'gobuster', 'dirbuster' + ] + # Track IPs that accessed honeypot paths from robots.txt + self.honeypot_triggered: Dict[str, List[str]] = defaultdict(list) + + def record_access(self, ip: str, path: str, user_agent: str = ''): + """Record an access attempt""" + self.ip_counts[ip] += 1 + self.path_counts[path] += 1 + if user_agent: + self.user_agent_counts[user_agent] += 1 + + is_suspicious = self.is_suspicious_user_agent(user_agent) or self.is_honeypot_path(path) + + # Track if this IP accessed a honeypot path + if self.is_honeypot_path(path): + self.honeypot_triggered[ip].append(path) + + self.access_log.append({ + 'ip': ip, + 'path': path, + 'user_agent': user_agent, + 'suspicious': is_suspicious, + 'honeypot_triggered': self.is_honeypot_path(path), + 'timestamp': datetime.now().isoformat() + }) + + def is_honeypot_path(self, path: str) -> bool: + """Check if path is one of the honeypot traps from robots.txt""" + honeypot_paths = [ + '/admin', + '/admin/', + '/backup', + '/backup/', + '/config', + '/config/', + '/private', + '/private/', + '/database', + '/database/', + '/credentials.txt', + '/passwords.txt', + '/admin_notes.txt', + '/api_keys.json', + '/.env', + '/wp-admin', + '/wp-admin/', + '/phpmyadmin', + '/phpMyAdmin/' + ] + return path in honeypot_paths or any(hp in path.lower() for hp in ['/backup', '/admin', '/config', '/private', '/database', 'phpmyadmin']) + + def is_suspicious_user_agent(self, user_agent: str) -> bool: + """Check if user agent matches suspicious patterns""" + if not user_agent: + return True + ua_lower = user_agent.lower() + return any(pattern in ua_lower for pattern in self.suspicious_patterns) + + def get_top_ips(self, limit: int = 10) -> List[Tuple[str, int]]: + """Get top N IP addresses by access count""" + return sorted(self.ip_counts.items(), key=lambda x: x[1], reverse=True)[:limit] + + def get_top_paths(self, limit: int = 10) -> List[Tuple[str, int]]: + """Get top N paths by access count""" + return sorted(self.path_counts.items(), key=lambda x: x[1], reverse=True)[:limit] + + def get_top_user_agents(self, limit: int = 10) -> List[Tuple[str, int]]: + """Get top N user agents by access count""" + return sorted(self.user_agent_counts.items(), key=lambda x: x[1], reverse=True)[:limit] + + def get_suspicious_accesses(self, limit: int = 20) -> List[Dict]: + """Get recent suspicious accesses""" + suspicious = [log for log in self.access_log if log.get('suspicious', False)] + return suspicious[-limit:] + + def get_honeypot_triggered_ips(self) -> List[Tuple[str, List[str]]]: + """Get IPs that accessed honeypot paths""" + return [(ip, paths) for ip, paths in self.honeypot_triggered.items()] + + def get_stats(self) -> Dict: + """Get statistics summary""" + suspicious_count = sum(1 for log in self.access_log if log.get('suspicious', False)) + honeypot_count = sum(1 for log in self.access_log if log.get('honeypot_triggered', False)) + return { + 'total_accesses': len(self.access_log), + 'unique_ips': len(self.ip_counts), + 'unique_paths': len(self.path_counts), + 'suspicious_accesses': suspicious_count, + 'honeypot_triggered': honeypot_count, + 'honeypot_ips': len(self.honeypot_triggered), + 'top_ips': self.get_top_ips(10), + 'top_paths': self.get_top_paths(10), + 'top_user_agents': self.get_top_user_agents(10), + 'recent_suspicious': self.get_suspicious_accesses(20), + 'honeypot_triggered_ips': self.get_honeypot_triggered_ips() + } diff --git a/src/wordlists.py b/src/wordlists.py new file mode 100644 index 0000000..b0a9e1a --- /dev/null +++ b/src/wordlists.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python3 + +""" +Wordlists loader - reads all wordlists from wordlists.json +This allows easy customization without touching Python code. +""" + +import json +import os +from pathlib import Path + + +class Wordlists: + """Loads and provides access to wordlists from wordlists.json""" + + def __init__(self): + self._data = self._load_config() + + def _load_config(self): + """Load wordlists from JSON file""" + config_path = Path(__file__).parent.parent / 'wordlists.json' + + try: + with open(config_path, 'r') as f: + return json.load(f) + except FileNotFoundError: + print(f"⚠️ Warning: {config_path} not found, using default values") + return self._get_defaults() + except json.JSONDecodeError as e: + print(f"⚠️ Warning: Invalid JSON in {config_path}: {e}") + return self._get_defaults() + + def _get_defaults(self): + """Fallback default wordlists if JSON file is missing or invalid""" + return { + "usernames": { + "prefixes": ["admin", "user", "root"], + "suffixes": ["", "_prod", "_dev"] + }, + "passwords": { + "prefixes": ["P@ssw0rd", "Admin"], + "simple": ["test", "demo", "password"] + }, + "emails": { + "domains": ["example.com", "test.com"] + }, + "api_keys": { + "prefixes": ["sk_live_", "api_", ""] + }, + "databases": { + "names": ["production", "main_db"], + "hosts": ["localhost", "db.internal"] + }, + "applications": { + "names": ["WebApp", "Dashboard"] + }, + "users": { + "roles": ["Administrator", "User"] + } + } + + @property + def username_prefixes(self): + return self._data.get("usernames", {}).get("prefixes", []) + + @property + def username_suffixes(self): + return self._data.get("usernames", {}).get("suffixes", []) + + @property + def password_prefixes(self): + return self._data.get("passwords", {}).get("prefixes", []) + + @property + def simple_passwords(self): + return self._data.get("passwords", {}).get("simple", []) + + @property + def email_domains(self): + return self._data.get("emails", {}).get("domains", []) + + @property + def api_key_prefixes(self): + return self._data.get("api_keys", {}).get("prefixes", []) + + @property + def database_names(self): + return self._data.get("databases", {}).get("names", []) + + @property + def database_hosts(self): + return self._data.get("databases", {}).get("hosts", []) + + @property + def application_names(self): + return self._data.get("applications", {}).get("names", []) + + @property + def user_roles(self): + return self._data.get("users", {}).get("roles", []) + + @property + def directory_files(self): + return self._data.get("directory_listing", {}).get("files", []) + + @property + def directory_dirs(self): + return self._data.get("directory_listing", {}).get("directories", []) + + @property + def error_codes(self): + return self._data.get("error_codes", []) + + +_wordlists_instance = None + +def get_wordlists(): + """Get the singleton Wordlists instance""" + global _wordlists_instance + if _wordlists_instance is None: + _wordlists_instance = Wordlists() + return _wordlists_instance + diff --git a/wordlists.json b/wordlists.json new file mode 100644 index 0000000..f1aae81 --- /dev/null +++ b/wordlists.json @@ -0,0 +1,197 @@ +{ + "usernames": { + "prefixes": [ + "admin", + "user", + "developer", + "root", + "system", + "db", + "api", + "service", + "deploy", + "test", + "prod", + "backup", + "monitor", + "jenkins", + "webapp" + ], + "suffixes": [ + "", + "_prod", + "_dev", + "_test", + "123", + "2024", + "_backup", + "_admin", + "01", + "02", + "_user", + "_service", + "_api" + ] + }, + "passwords": { + "prefixes": [ + "P@ssw0rd", + "Passw0rd", + "Admin", + "Secret", + "Welcome", + "System", + "Database", + "Secure", + "Master", + "Root" + ], + "simple": [ + "test", + "demo", + "temp", + "change", + "password", + "admin", + "letmein", + "welcome", + "default", + "sample" + ] + }, + "emails": { + "domains": [ + "example.com", + "company.com", + "localhost.com", + "test.com", + "domain.com", + "corporate.com", + "internal.net", + "enterprise.com", + "business.org" + ] + }, + "api_keys": { + "prefixes": [ + "sk_live_", + "sk_test_", + "api_", + "key_", + "token_", + "access_", + "secret_", + "prod_", + "" + ] + }, + "databases": { + "names": [ + "production", + "prod_db", + "main_db", + "app_database", + "users_db", + "customer_data", + "analytics", + "staging_db", + "dev_database", + "wordpress", + "ecommerce", + "crm_db", + "inventory" + ], + "hosts": [ + "localhost", + "db.internal", + "mysql.local", + "postgres.internal", + "127.0.0.1", + "db-server-01", + "database.prod", + "sql.company.com" + ] + }, + "applications": { + "names": [ + "WebApp", + "API Gateway", + "Dashboard", + "Admin Panel", + "CMS", + "Portal", + "Manager", + "Console", + "Control Panel", + "Backend" + ] + }, + "users": { + "roles": [ + "Administrator", + "Developer", + "Manager", + "User", + "Guest", + "Moderator", + "Editor", + "Viewer", + "Analyst", + "Support" + ] + }, + "directory_listing": { + "files": [ + "test.exe", + "backup.sql", + "database.sql", + "db_backup.sql", + "dump.sql", + "config.php", + "credentials.txt", + "passwords.txt", + "users.csv", + ".env", + "id_rsa", + "id_rsa.pub", + "private_key.pem", + "api_keys.json", + "secrets.yaml", + "admin_notes.txt", + "settings.ini", + "database.yml", + "wp-config.php", + ".htaccess", + "server.key", + "cert.pem", + "shadow.bak", + "passwd.old" + ], + "directories": [ + "uploads/", + "backups/", + "logs/", + "temp/", + "cache/", + "private/", + "config/", + "admin/", + "database/", + "backup/", + "old/", + "archive/", + ".git/", + "keys/", + "credentials/" + ] + }, + "error_codes": [ + 400, + 401, + 403, + 404, + 500, + 502, + 503 + ] +}
+

Krawl me! 🕸

+
{Handler.counter}
+ +
+