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-68147-OSPOS-Stored-XSS — Repository PoC per CVE-2025-68147: Cross-Site Scripting Memorizzato (XSS) in OpenSourcePOS. La vulnerabilità consente l'escalation dei privilegi tramite l'iniezione di JavaScript dannoso nel modulo Store Config. Include dettagli del payload e verifica della patch (v3.4.0). Ricercatore di sicurezza: Aditya Singh (Nixon-H). | Kitploit
Strumenti/GitHubGitHub/nixon-h/cve-2025-68147-ospos-stored-xss
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e Formazione
GitHubnixon-h/cve-2025-68147-ospos-stored-xss

CVE-2025-68147-OSPOS-Stored-XSS

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 →

Informazioni

Vedi Repository
212 mesi faNon ancora revisionato

Repository PoC per CVE-2025-68147: Cross-Site Scripting Memorizzato (XSS) in OpenSourcePOS. La vulnerabilità consente l'escalation dei privilegi tramite l'iniezione di JavaScript dannoso nel modulo Store Config. Include dettagli del payload e verifica della patch (v3.4.0). Ricercatore di sicurezza: Aditya Singh (Nixon-H).

Condividi

CVE-2025-68147: Cross-Site Scripting (XSS) Memorizzato in OpenSourcePOS

MetadatiDettagli
ID CVECVE-2025-68147
GravitàAlta CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
Tipo di VulnerabilitàCross-Site Scripting Memorizzato (CWE-79)
Versioni AffetteOpenSourcePOS v3.4.0, v3.4.1
Versione Correttav3.4.2
Componente VulnerabileModulo di Configurazione del Negozio (campo Return Policy)
SegnalatoreAditya Singh (Nixon-H)

📝 Riepilogo Esecutivo

Una vulnerabilità di Cross-Site Scripting (XSS) Memorizzato è stata scoperta nel modulo Configurazione del Negozio di OpenSourcePOS. L'applicazione non è riuscita a sanificare correttamente l'input fornito dall'utente nel campo "Politica di Reso" prima di memorizzarlo nella tabella del database ospos_app_config.

Questa falla ha permesso a un attaccante autenticato con privilegi di configurazione (o a un attaccante che sfrutta una catena CSRF separata) di iniettare payload JavaScript arbitrari. Poiché la "Politica di Reso" viene renderizzata dinamicamente su ogni ricevuta di vendita, il payload iniettato viene eseguito automaticamente nel browser di qualsiasi utente—inclusi cassieri con privilegi bassi, altri amministratori o clienti—ogni volta che una ricevuta viene generata o visualizzata.


🕵️‍♂️ Analisi Tecnica della Causa Radice

1. La Logica Vulnerabile

La vulnerabilità risiede nel template di visualizzazione della ricevuta: app/Views/sales/receipt_default.php.

L'applicazione recupera la stringa "Politica di Reso" dall'array di configurazione globale ($this->config['return_policy']) e la prepara per la visualizzazione.

  • L'Errore: Gli sviluppatori hanno usato la funzione PHP nativa nl2br() per convertire i newline in interruzioni di riga HTML (<br>).
  • Il Fallimento: nl2br() non sanifica i caratteri speciali HTML. Lascia tag come <script>, `` e attributi onload completamente intatti.

Codice Vulnerabile (Prima della Patch):

root@kitploit:~
<div id="sale_return_policy">
    <?php echo nl2br($this->config['return_policy']); ?>
</div>

2. Persistenza nel Database

Quando un amministratore salva la configurazione, il payload viene memorizzato grezzo nel database.

  • Table: ospos_app_config
  • Key: return_policy
  • Value: Policy Text... <script>alert('XSS')</script>

Poiché non c'è sanificazione dell'input lato controller (Config.php) e nessun escaping dell'output lato vista (receipt_default.php), l'applicazione è vulnerabile a XSS Memorizzato.


💥 Prova di Concetto (PoC)

Vettore di Attacco

L'attacco prende di mira il pannello Configurazione del Negozio ma ha impatto sul modulo Vendite/Ricevuta.

  1. Punto di Ingresso: http://[TARGET]/config (richiesta POST per salvare la configurazione)
  2. Punto di Esecuzione: http://[TARGET]/sales/receipt/[SALE_ID]

Sfruttamento Passo per Passo

Passo 1: L'Iniezione Abbiamo effettuato l'accesso come Amministratore e navigato in Configurazione del Negozio -> Generale. Nell'area di testo "Politica di Reso", abbiamo iniettato il seguente payload specifico:

root@kitploit:~
Standard Return Policy: No Refunds.
<script>alert('XSS_BY_NIXON_SUCCESSFUL')</script>

Passo 2: Persistenza Facendo clic su "Invia", l'applicazione ha inviato una richiesta POST a /config/save. Il payload è stato correttamente salvato nel database.

Passo 3: L'Attivazione Per verificare l'impatto su altri utenti:

  1. Ci siamo disconnessi e riconnessi come Cassiere (account a bassi privilegi).
  2. Abbiamo navigato nel modulo Vendite.
  3. Abbiamo aggiunto un articolo di test al carrello e cliccato su "Completa Vendita".
  4. Risultato: L'applicazione reindirizza alla vista della ricevuta (ad es., http://localhost/sales/receipt/1). Il browser analizza il div return_policy, incontra il tag <script> ed esegue immediatamente il JavaScript.

Risultato Osservato: È apparsa una finestra di avviso del browser con il messaggio: XSS_BY_NIXON_SUCCESSFUL.

📷 Prova Multimediale

Screenshot 1: Attivazione dell'Alert

Screenshot 2: Payload nella Configurazione

🎥 Video Dimostrativo: Clicca per Scaricare / Guardare il Video PoC


⚠️ Scenari di Impatto

Questa è una vulnerabilità con Ambito Modificato (S:C) perché l'attacco è memorizzato sul server ma viene eseguito nel contesto del browser della vittima.

  1. Escalation dei Privilegi e Furto dell'Account:

    • Scenario: Un attaccante inietta un payload JavaScript progettato per rubare i cookie di sessione.
    • Esecuzione: Un Super Amministratore visualizza una ricevuta passata (ad es., /sales/receipt/105). Lo script si esegue silenziosamente, inviando document.cookie (contenente l'ID ospos_session) al server dell'attaccante.
    • Impatto: L'attaccante dirotta la sessione del Super Admin, ottenendo il controllo completo del sistema senza bisogno di password.
  2. Creazione Amministratore Wormabile:

    • Scenario: Il payload è uno script che utilizza AJAX (XMLHttpRequest) per eseguire azioni amministrative.
    • Esecuzione: Quando un Admin connesso visualizza la ricevuta, lo script forza il suo browser a inviare una richiesta POST nascosta a /employees/save.
    • Impatto: Un nuovo account Amministratore (ad es., hacker / password123) viene creato istantaneamente in background. La vittima non vede nulla se non la ricevuta, mentre l'attaccante ottiene una backdoor permanente.
  3. Deturpazione e Phishing:

    • Scenario: L'attaccante modifica il DOM per alterare le informazioni finanziarie della ricevuta.
    • Esecuzione: Lo script "Politica di Reso" riscrive il footer o le istruzioni di pagamento.
    • Impatto: Le ricevute mostrano dettagli bancari fraudolenti o indirizzi di portafogli crypto ("Si prega di trasferire il pagamento a..."), portando a frodi finanziarie contro i clienti o l'azienda.

🛡️ Mitigazione

La vulnerabilità è stata corretta in OpenSourcePOS v3.4.2.

Il manutentore ha applicato una patch che implementa Codifica dell'Output Sensibile al Contesto. Il valore di configurazione è ora avvolto nella funzione helper globale esc() di CodeIgniter prima di essere passato a nl2br().

La Patch (Commit 22297a):

root@kitploit:~
<div id="sale_return_policy">
    <?php echo nl2br(esc($this->config['return_policy'])); ?>
</div>

Verifica: Dopo l'aggiornamento a v3.4.2, lo stesso payload viene renderizzato come testo innocuo:

Standard Return Policy: No Refunds. &lt;script&gt;alert('XSS_BY_NIXON_SUCCESSFUL')&lt;/script&gt;


📅 Cronologia della Divulgazione

  • 2025-12-12: Vulnerabilità scoperta da Aditya Singh (Nixon-H) durante un audit di sicurezza manuale.
  • 2025-12-13: Report di divulgazione responsabile inviato al manutentore (Jeroen Peelaerts) via email/GitHub.
  • 2025-12-14: Vulnerabilità confermata dal manutentore. CVE-2025-68147 riservata.
  • 2025-12-14: Patch sviluppata (Commit 22297a) e verificata dal ricercatore.
  • 2025-12-19: Patch rilasciata nella versione 3.4.2.
  • 2025-12-19: Divulgazione pubblica tramite GitHub Security Advisory.

🔗 Riferimenti

  • Avviso: GHSA-xgr7-7pvw-fpmh
  • Patch: Commit 22297a
  • Segnalatore: Aditya Singh (Nixon-H)
Scarica lo strumento