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-2018-14442 — PoC per Foxit Reader CVE-2018-14442 | Kitploit
Strumenti/GitHubGitHub/payatu/cve-2018-14442
Framework di ExploitAnalisi delle VulnerabilitàExploitReverse EngineeringFuzzingBinary Exploitation
GitHubpayatu/cve-2018-14442

CVE-2018-14442

PoC per Foxit Reader CVE-2018-14442

Vedi Repository
58177 anni faRevisionato da Kitploit

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

Use After Free in CPDF_Parser::m_pCryptoHandler di Foxit Reader

  1. Contesto del Formato PDF
  2. Dizionari di Crittografia
  3. Dettagli della Vulnerabilità
  4. Bypass di ASLR e DEP
  5. Dettagli dell'Ambiente
  6. Trigger
  7. Autore

Contesto del Formato PDF

Il PDF è un formato di file utilizzato per rappresentare documenti. Un pdf è composto da molteplici oggetti di dati

  • Oggetti Primitivi Semplici Integer, Number, Boolean, Null

  • Oggetti Complessi

    FormatoNome
    [.*]Array
    (.*)String
    <<.*>>Dictionary
    <.*>Hex String
    /.*Name
    stream.*endstreamStream

Questi oggetti definiscono l'aspetto di un pdf e il suo contenuto. Le strutture nei pdf sono presenti in 2 tipi di oggetti: Diretti e Indiretti. Un oggetto indiretto inizia con il Numero di oggetto e il Numero di generazione, seguiti dall'oggetto vero e proprio. Gli Oggetti Indiretti possono essere referenziati direttamente in altri oggetti come n m R dove n e m sono rispettivamente i numeri di oggetto e di generazione. Gli oggetti Dictionary sono i mattoni fondamentali per il documento. Esistono alcuni oggetti dizionario generali necessari per formare una pagina o il documento stesso. Il più importante è il dizionario Root che definisce i collegamenti a tutte le altre Pages, Metadata, Names, ecc., ciascuno dei quali può essere un altro oggetto. Gli oggetti Stream contengono la maggior parte dei dati binari come font, immagini o dati compressi/crittografati.

Dizionari di Crittografia

Un documento PDF può essere crittografato per proteggerne il contenuto da accessi non autorizzati. La crittografia si applica a tutte le stringhe e agli stream nel file PDF del documento, con alcune eccezioni come il dizionario Encrypt stesso. La crittografia si applica principalmente agli oggetti stream. La crittografia non viene applicata ad altri tipi di oggetti come interi e valori booleani, che vengono utilizzati principalmente per trasmettere informazioni sulla struttura del documento piuttosto che sul suo contenuto. Le informazioni relative alla crittografia devono essere memorizzate nel dizionario di crittografia del documento, che deve essere il valore della voce "Encrypt" nel dizionario trailer del documento.

Dettagli della Vulnerabilità

CPDF_Parser::StartParse imposta m_pCryptoHandler per gli oggetti indiretti di un pdf che sono crittografati. m_pCryptoHandler dovrebbe essere reso nullo quando CPDF_Parser::ReleaseEncryptHandler viene completato. Invece CPDF_Parser::ReleaseEncryptHandler non rimuove il riferimento al CryptoHandler in CPDF_Parser e rimane dangling. Successivamente, quando il parser inizia a esaminare gli oggetti referenziati nel dizionario Root, viene chiamato m_pCryptoHandler+8 per decrittare i dati. Un bug simile è stato corretto in pdfium nel commit 741c362fb75fd8acd2ed2059c6e3e716a63a7ac8. Vedere https://bugs.chromium.org/p/chromium/issues/detail?id=726503

Bypass di ASLR e DEP

I PDF consentono di incorporare JS nel documento che può essere eseguito automaticamente se inserito in OpenAction di un dizionario di tipo Catalog. Una volta che abbiamo l'esecuzione di JS, possiamo spruzzare oggetti nello spazio del processo in modo da raggiungere un indirizzo prevedibile dove scriveremo la nostra catena ROP. Quando un documento PDF viene firmato in Foxit Reader, utilizza plugins\jrsys\x86\jrsysMSCryptoDll.dll dalla directory di installazione per leggere le informazioni firmate, che carica jrsysCryptoDll.dll su un indirizzo statico di 0x10000000. Questa dll importa VirtualAlloc, il che rende più semplice eseguire il payload. L'exploit allegato utilizza l'heap spraying per ottenere un layout di memoria prevedibile e usa una catena ROP per allocare una pagina RWX, copiare ed eseguire il payload.

Dettagli dell'Ambiente

Questo exploit è stato testato utilizzando Foxit Reader 9.0.1.1049 x86 su MS Windows 7 Enterprise Build 7601 SP1 x86. L'exploit richiede che l'heap sia in uno stato specifico; se l'exploit fallisce, si prega di riprovare. Fare riferimento alla dimostrazione video. Questa vulnerabilità è presente anche in Foxit PDF Reader e Converter per Android.

Trigger

bitcoins.pdf è il pdf appositamente creato che esegue la riallocazione della memoria liberata e attiva il bug principale. Se si desidera riprodurre il crash nel debugger, abilitare Page Heaps per FoxitReader.exe e aprire bitcoins.pdf.

Demo

Video Demo

Autore

Questo crash è stato trovato da Cloudfuzz - Una piattaforma di fuzzing sviluppata presso Payatu. Ulteriori analisi e sfruttamento sono stati effettuati da Sudhakar

Scarica lo strumento