Capire un tentativo di sfruttare un server web

6

Dato che un utente malintenzionato si connette a un server Web sulla porta 80 e genera i seguenti comandi, cosa sta cercando di ottenere?

/c/winnt/system32/cmd.exe?/c+dir HTTP/1.0

Ho già letto che questo è correlato ad una vecchia vulnerabilità di IIS e immagino che questo sia un tentativo di ottenere una shell, eseguire il comando dir e quindi chiudere la shell, ma:

  • Questo sembra essere inutile in quanto l'output verrà stampato a stdout e non restituito come risposta del server?
  • Inoltre, perché è persino possibile richiedere file al di fuori della directory www ? Questo non dovrebbe essere proibito per impostazione predefinita?
  • Quali sono i privilegi dell'utente che un tale aggressore ha quando emette questi comandi in una shell creata da te? Immagino i privilegi del server in esecuzione.
  • Potrebbe un firewall impedire questo attacco e in caso contrario, ci sono altre misure che potrebbero averlo impedito?

Grazie mille in anticipo!

    
posta AdHominem 01.08.2016 - 15:32
fonte

2 risposte

5

This seems to be useless since the output will be printed to stdout and not returned as a server response?

Dipende dalla vulnerabilità che viene sfruttata. A volte, un utente malintenzionato può determinare se un sistema è vulnerabile a un attacco in base al codice di stato HTTP o il tempo necessario per la risposta da restituire. Se l'attaccante può inviare un attacco e apprendere che il sistema è vulnerabile, potrebbe inviare degli attacchi di follow-up, ma se non ha funzionato, vai avanti per provare un altro exploit.

Non vi è alcun motivo tecnico per cui un server non possa elaborare GET /c/winnt/system32/cmd.exe?/c+dir HTTP/1.0 come eseguendo il file cmd.exe e passando '/ c dir' come argomenti, catturando l'output e inviandolo come risposta all'utente. Tutto dipende dal design del server con cui si interagisce. Con il senno di poi, questo design è sciocco, in quanto consente agli aggressori di sfruttare un sistema, ma nei primi anni del web, consentire questo tipo di accesso sarebbe stato auspicabile.

Also, why is it even possible to request files outside of the www directory? Should this not be forbidden per default?

I server Web sono complicati e gli ingegneri commettono errori. Tieni presente che questo tipo di attacco è caratteristico della rete nella sua infanzia.

What are the user privileges such an attacker has when he issues those commands in a self created shell? I guess the privileges of the running server.

Se un utente malintenzionato può sfruttare tale exploit, è probabile che l'autore dell'attacco ottenga il privilegio del server in esecuzione. Ma l'esecuzione avverrà secondo il programma scritto. È anche possibile che il server possa abbassare i privilegi prima di passare all'esecuzione. Non è probabile, ma il punto è che dipende sempre dal contesto del sistema che viene sfruttato.

Could a firewall prevent this attack and if not, are there other measures which could have prevented this?

Sì e no. Il firewall è un termine un po 'obsoleto, quindi alcuni firewall avranno questa capacità e altri no. Alcuni firewall si concentrano solo sul traffico di rete nel senso di IP sorgente: porta, destinazione ip: porta e non guardano il messaggio effettivo inviato. Altri firewall includono un Sistema di prevenzione delle intrusioni o IPS. Questa è un'applicazione che confronta il traffico con le firme di traffico cattivo noto. Quindi se il firewall ha un IPS e c'è una regola per questo traffico, sarebbe bloccato.

    
risposta data 01.08.2016 - 19:19
fonte
0

Metti un sacco di domande qui!

È probabile che il server risponda con un codice di stato diverso a seconda che il comando venga eseguito o meno. Con ogni probabilità, un sistema ben configurato restituirebbe un errore del server interno di 500, mentre un sistema configurato male restituirebbe un 200, confermando che il comando è stato eseguito. Ciò darebbe ad un avversario informazioni per procedere con un attacco.

Un sistema configurato correttamente limiterebbe l'accesso alla directory www o ad altre posizioni valide autorizzate esplicitamente. Tuttavia, esiste un'intera classe di vulnerabilità conosciuta come directory traversal, che consente di evitare le regioni del filesystem autorizzate, spesso con qualcosa di semplice come usare "../ .." nell'URL. Ad esempio, eccone uno del 2014: link Esistono bug in tutto il software, e le cose che hanno perfettamente senso non sempre accadono come dovrebbero.

Corretto, l'esecuzione della shell sarebbe nel contesto dell'utente che esegue il servizio web. Questo è il motivo per cui non dovresti mai eseguire un server web come root, per evitare che un exploit nel tuo servizio web diventi un exploit per l'intero box.

Infine, un WAF ben configurato potrebbe essere in grado di prevenire questo attacco. Ciò che in genere definisce un WAF è che è sensibile al contenuto per quanto riguarda le applicazioni Web e quindi può ispezionare e scartare le richieste che sembrano scadenti. Il diavolo è nei dettagli però, quindi avere un WAF non è sufficiente.

    
risposta data 01.08.2016 - 21:35
fonte

Leggi altre domande sui tag