Updated README.md
34
README.md
@@ -180,6 +180,34 @@ Disallow: /.git/
|
|||||||
Disallow: /backup.sql
|
Disallow: /backup.sql
|
||||||
Disallow: /db_backup.sql
|
Disallow: /db_backup.sql
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Honeypot pages
|
||||||
|
Requests to common admin endpoints (`/admin/`, `/wp-admin/`, `/phpMyAdmin/`) return a fake login page. Any login attempt triggers a 1-second delay to simulate real processing and is fully logged in the dashboard (credentials, IP, headers, timing).
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Requests to paths like `/backup/`, `/config/`, `/database/`, `/private/`, or `/uploads/` return a fake directory listing populated with “interesting” files, each assigned a random file size to look realistic.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
The `.env` endpoint exposes fake database connection strings, **AWS API keys**, and **Stripe secrets**. It intentionally returns an error due to the `Content-Type` being `application/json` instead of plain text, mimicking a “juicy” misconfiguration that crawlers and scanners often flag as information leakage.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
The pages `/api/v1/users` and `/api/v2/secrets` show fake users and random secrets in JSON format
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<img src="img/api-users-page.png" width="45%" style="vertical-align: middle; margin: 0 10px;" />
|
||||||
|
<img src="img/api-secrets-page.png" width="45%" style="vertical-align: middle; margin: 0 10px;" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
The pages `/credentials.txt` and `/passwords.txt` show fake users and random secrets
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<img src="img/credentials-page.png" width="35%" style="vertical-align: middle; margin: 0 10px;" />
|
||||||
|
<img src="img/passwords-page.png" width="45%" style="vertical-align: middle; margin: 0 10px;" />
|
||||||
|
</div>
|
||||||
|
|
||||||
## Wordlists Customization
|
## Wordlists Customization
|
||||||
|
|
||||||
Edit `wordlists.json` to customize fake data:
|
Edit `wordlists.json` to customize fake data:
|
||||||
@@ -209,11 +237,11 @@ Access the dashboard at `http://<server-ip>:<port>/<dashboard-path>`
|
|||||||
|
|
||||||
The attackers' triggered honeypot path and the suspicious activity (such as failed login attempts) are logged
|
The attackers' triggered honeypot path and the suspicious activity (such as failed login attempts) are logged
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
The top IP Addresses is shown along with top paths and User Agents
|
The top IP Addresses is shown along with top paths and User Agents
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
The dashboard shows:
|
The dashboard shows:
|
||||||
- Total and unique accesses
|
- Total and unique accesses
|
||||||
@@ -285,7 +313,7 @@ Contributions welcome! Please:
|
|||||||
1. Fork the repository
|
1. Fork the repository
|
||||||
2. Create a feature branch
|
2. Create a feature branch
|
||||||
3. Make your changes
|
3. Make your changes
|
||||||
4. Submit a pull request
|
4. Submit a pull request (explain the changes!)
|
||||||
|
|
||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|||||||
@@ -38,22 +38,6 @@ spec:
|
|||||||
limits:
|
limits:
|
||||||
memory: "256Mi"
|
memory: "256Mi"
|
||||||
cpu: "500m"
|
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:
|
volumes:
|
||||||
- name: wordlists
|
- name: wordlists
|
||||||
configMap:
|
configMap:
|
||||||
|
|||||||
@@ -54,14 +54,6 @@ spec:
|
|||||||
mountPath: /app/wordlists.json
|
mountPath: /app/wordlists.json
|
||||||
subPath: wordlists.json
|
subPath: wordlists.json
|
||||||
readOnly: true
|
readOnly: true
|
||||||
{{- with .Values.livenessProbe }}
|
|
||||||
livenessProbe:
|
|
||||||
{{- toYaml . | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.readinessProbe }}
|
|
||||||
readinessProbe:
|
|
||||||
{{- toYaml . | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.resources }}
|
{{- with .Values.resources }}
|
||||||
resources:
|
resources:
|
||||||
{{- toYaml . | nindent 12 }}
|
{{- toYaml . | nindent 12 }}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ service:
|
|||||||
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
className: "nginx"
|
className: "traefik"
|
||||||
annotations: {}
|
annotations: {}
|
||||||
hosts:
|
hosts:
|
||||||
- host: krawl.example.com
|
- host: krawl.example.com
|
||||||
@@ -49,28 +49,10 @@ resources:
|
|||||||
cpu: 100m
|
cpu: 100m
|
||||||
memory: 64Mi
|
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:
|
autoscaling:
|
||||||
enabled: false
|
enabled: false
|
||||||
minReplicas: 1
|
minReplicas: 1
|
||||||
maxReplicas: 5
|
maxReplicas: 1
|
||||||
targetCPUUtilizationPercentage: 70
|
targetCPUUtilizationPercentage: 70
|
||||||
targetMemoryUtilizationPercentage: 80
|
targetMemoryUtilizationPercentage: 80
|
||||||
|
|
||||||
|
|||||||
BIN
img/admin-page.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
img/api-secrets-page.png
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
img/api-users-page.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
img/credentials-page.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
img/directory-page.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
img/env-page.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
img/passwords-page.png
Normal file
|
After Width: | Height: | Size: 119 KiB |
@@ -38,22 +38,6 @@ spec:
|
|||||||
limits:
|
limits:
|
||||||
memory: "256Mi"
|
memory: "256Mi"
|
||||||
cpu: "500m"
|
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:
|
volumes:
|
||||||
- name: wordlists
|
- name: wordlists
|
||||||
configMap:
|
configMap:
|
||||||
|
|||||||