-
Notifications
You must be signed in to change notification settings - Fork 14.7k
Add auxiliary module for Pterodactyl Panel CVE-2025-49132 #20779
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
Thanks for your pull request! Before this can be merged, we need the following documentation for your module: |
|
|
||
| register_options( | ||
| [ | ||
| OptString.new('TARGETURI', [true, 'The target URI', '/locales/locale.json?locale=..%2F..%2Fconfig&namespace=app']), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rather than force the user to manually perform both the traversal and the URL encoding themselves, the typical approach is to expose a FILENAME option (or similar) and a DEPTH option to specify the traversal depth. You can find many example modules with grep DEPTH modules/auxiliary/.
|
@bcoles I have updated the module based on your feedback:
Please review it again. Thanks! |
documentation/modules/auxiliary/scanner/http/pterodactyl_traversal_cve_2025_49132.md
Outdated
Show resolved
Hide resolved
| This module exploits a path traversal vulnerability (CVE-2025-49132) in Pterodactyl Panel versions prior to the fixed release. | ||
| The vulnerability exists in the `/locales/locale.json` endpoint. It allows an unauthenticated attacker to manipulate the `locale` parameter to traverse directories and read arbitrary files on the server (e.g., configuration files containing sensitive keys). | ||
|
|
||
| To set up a vulnerable environment, you can install an older version of Pterodactyl Panel using the standard installation scripts or Docker, ensuring you do not apply the patch for CVE-2025-49132. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you setup Pterodactyl Panel using docker would you be able to paste the docker-compose.yml / Dockerfile here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure, I have applied the suggested change.
Here is the docker-compose.yml I used to set up the vulnerable environment (Pterodactyl Panel v1.11.10).
version: '3.8'
services:
database:
image: public.ecr.aws/docker/library/mariadb:10.5
restart: always
environment:
MYSQL_DATABASE: panel
MYSQL_USER: pterodactyl
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: root_password
volumes:
- db_data:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
cache:
image: public.ecr.aws/docker/library/redis:alpine
restart: always
panel:
image: ghcr.io/pterodactyl/panel:v1.11.10
ports:
- "80:80"
environment:
DB_HOST: database
DB_DATABASE: panel
DB_USERNAME: pterodactyl
DB_PASSWORD: password
REDIS_HOST: cache
APP_URL: "http://localhost"
APP_ENV: "local"
APP_DEBUG: "true"
APP_SERVICE_AUTHOR: "[email protected]"
APP_TIMEZONE: "Asia/Shanghai"
depends_on:
database:
condition: service_healthy
cache:
condition: service_started
volumes:
- panel_data:/app/var/
volumes:
db_data:
panel_data:
…rsal_cve_2025_49132.md Co-authored-by: jheysel-r7 <[email protected]>
Description
This PR adds an auxiliary scanner module for CVE-2025-49132, a path traversal vulnerability in Pterodactyl Panel. The vulnerability allows unauthenticated attackers to read the configuration file (including APP_KEY) via the
/locales/locale.jsonendpoint.Verification
msfconsoleuse auxiliary/scanner/http/pterodactyl_traversal_cve_2025_49132set RHOSTS <vulnerable_ip>run