Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
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-2021-38297-Go-wasm-Replication — Proof-of-concept educativo che replica CVE-2021-38297, un buffer overflow Go WASM che porta a XSS memorizzato. Include configurazione dell'app vulnerabile, passaggi di riproduzione dell'exploit e guida alla correzione per la ricerca sulla sicurezza. | Kitploit
Strumenti/GitHubGitHub/paras98/cve-2021-38297-go-wasm-replication
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebCTFPaper e RicercaApprendimento e FormazioneBinary ExploitationLab e Pratica
GitHubparas98/cve-2021-38297-go-wasm-replication

CVE-2021-38297-Go-wasm-Replication

Proof-of-concept educativo che replica CVE-2021-38297, un buffer overflow Go WASM che porta a XSS memorizzato. Include configurazione dell'app vulnerabile, passaggi di riproduzione dell'exploit e guida alla correzione per la ricerca sulla sicurezza.

Vedi Repository
472 anni 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

🚨 Sfruttare CVE-2021-38297: Un Viaggio nel Buffer Overflow di GO Wasm 🚨

🌐 Panoramica della Vulnerabilità 🌐

WebAssembly (WASM) 🌍, un formato di istruzioni binarie all'avanguardia, consente l'esecuzione fluida di linguaggi ad alto livello come C, C++, Rust e GO nei browser web moderni. Tuttavia, la scoperta di CVE-2021-38297 🚩 ha rivelato un difetto critico nel processo di compilazione e caricamento di GO per i binari WASM compilati con GO. Questa vulnerabilità, individuata nel loader JavaScript WASM (wasm_exec.js) fornito da GO, consentiva l'inclusione senza restrizioni di dati nell'argomento argv. Poiché argv è memorizzato nella memoria lineare di WASM, attori malintenzionati potevano potenzialmente sfruttare questo comportamento per sovrascrivere la memoria lineare del programma WASM compilato con GO con un input argv di dimensioni eccessive, portando a risultati imprevedibili e potenzialmente pericolosi. Questa vulnerabilità rappresentava una preoccupazione significativa nelle versioni di GO precedenti alla 1.17.2. In sintesi:

  1. Il front-end renderizza ogni post e i relativi commenti.
  2. Durante il rendering, il modulo GO WASM viene caricato, elaborando i commenti tramite la variabile argv e i post all'indirizzo di memoria 0x5000.
  3. Funzioni come toLeetSpeak e processSharedVar vengono utilizzate rispettivamente per il contenuto dei commenti e dei post.

💻 Applicazione Vulnerabile: Vuln-Twitter 💻

Nella nostra prova di concetto, presentiamo "Vuln-Twitter", una piattaforma di social media simulata che consente contenuti generati dagli utenti tramite post e commenti. Utilizzando un server web Node.js e SQLite per l'archiviazione dei dati, il front-end di Vuln-Twitter sfrutta JavaScript semplice insieme a un modulo GO WASM chiamato wordprocessor.wasm per il rendering dinamico dei contenuti. Questo modulo, in particolare, include metodi come toLeetSpeak, che trasformano gli input degli utenti in "LeetSpeak" stilizzato per un'esperienza utente coinvolgente. Interfaccia di Vuln twitter

Sfruttamento del Buffer Overflow

La nostra esplorazione rivela un punto critico di sfruttamento durante la fase di rendering dei contenuti, in cui ogni commento viene trasformato dal modulo GO WASM. Un commento appositamente creato e di dimensioni eccessive può innescare la vulnerabilità, portando a un buffer overflow che manipola il contenuto del post originale, dimostrando un classico vettore di attacco XSS persistente (Stored XSS). Questa vulnerabilità non solo sottolinea il potenziale di manipolazione dannosa dei dati, ma evidenzia anche le implicazioni più ampie delle pratiche di programmazione sicura nel contesto dello sviluppo web e delle applicazioni WASM. Fare riferimento alla sezione di codice che fa lo stesso:

Logica di rendering

Diagramma della memoria lineare WASM durante il rendering di un commento:

Memoria della logica di rendering Flusso di sfruttamento

Riproduzione dell'Exploit

Per gli appassionati e i ricercatori interessati a esplorare ulteriormente questa vulnerabilità, forniamo passaggi dettagliati per riprodurre l'ambiente di sfruttamento utilizzando una specifica versione vulnerabile di GO. Questo approccio pratico facilita una comprensione più profonda dei meccanismi della vulnerabilità e delle potenziali strategie di mitigazione. Nota: per riprodurre questo scenario, devi installare localmente la versione di go go1.17.1, che è la versione vulnerabile utilizzata in questo contesto. Puoi fare riferimento alla documentazione ufficiale di go per istruzioni su come installare versioni specifiche di go.

Ora proviamo a riprodurre lo scenario sopra descritto:

  1. Per configurare l'intera applicazione, clona prima il progetto: git clone [email protected]:gkrishnan724/CVE-2021-38297.git && cd vuln-twitter
  2. Esegui npm install per installare tutte le dipendenze
  3. Esegui npm run resetDB, che inizializzerà il database con alcuni post e commenti.
  4. Esegui npm run dev, che avvierà il server locale; apri localhost:3000 in un browser e dovresti vedere una pagina di login.

Ora accediamo con un account malintenzionato usando le credenziali username: I_CANT_HACK, password: hacker; dopo l'accesso, dovresti vedere il feed con alcuni post.

Questo post sembra piuttosto interessante:

Amazon: ready 4 black friday? https://www.amazon.com/blackfriday

E se, usando la tecnica precedente, riuscissimo a sovrascrivere il post di Amazon.com per farlo puntare a un link malintenzionato?

Fai riferimento al file exploit.txt: contiene il commento riempito con padding di "A" in modo da sovrascrivere tutto fino all'indirizzo 0x5000; alla fine puoi vedere il testo ready for black friday? https://evil.com/blackfriday. Se copiamo questo testo e lo inseriamo come commento al post precedente, dovremmo essere in grado di sovrascrivere il post originale con il testo sopra.

Provateci voi stessi e vedete :) Exploit

🛠️ Patch e Mitigazione 🛠️

Riconoscendo la gravità di questa vulnerabilità, delineiamo anche una strategia completa di patching, utilizzando una versione aggiornata e sicura di GO per mitigare il rischio. Questa sezione funge da guida per sviluppatori e amministratori di sistema per rafforzare le loro applicazioni contro tali vulnerabilità, sottolineando l'importanza di aggiornamenti software regolari e di pratiche di sicurezza vigili.

In questa applicazione ho fornito anche uno script di patch che utilizza una versione più recente di go:

  1. Esegui il target npm run patchServer

Questo dovrebbe ricompilare il file go con la nuova versione e avviare il server con la versione patchata.

Dovresti notare che il post non viene più sovrascritto e, osservando la console, vediamo invece un errore Argument length too long. Patch

💡 Conclusione e Riflessioni 💡

Il nostro viaggio attraverso lo sfruttamento e la mitigazione di CVE-2021-38297 offre preziosi spunti sulle sfide e le opportunità presentate dall'integrazione di linguaggi di programmazione ad alto livello negli ambienti web tramite WASM. Ci spinge a un esame critico delle pratiche di sicurezza nello sviluppo software, sollecitando un approccio proattivo alla gestione delle vulnerabilità e l'adozione di standard di codifica sicuri. In base alla nostra comprensione, riteniamo che il layout della memoria lineare di GO sia quello mostrato di seguito:

Layout memoria GO

🎓 Presentazione e Contributo Accademico 🎓

Scarica lo strumento