L'array PHP indesiderato per convertire le stringhe è un rischio per la sicurezza?

3

Durante un test di penetrazione ho notato che cambiando alcuni dei parametri GET HTTP dalle stringhe previste agli array usando ?test[]=1 invece di ?test=1 . In PHP ciò risulta in un modo o in un errore o in una conversione Array / String indesiderata. Quale (quando gli errori vengono soppressi) risulta nella stringa "Array".

Questo introduce qualche rischio per la sicurezza? A parte il piccolo "rischio" che potrebbe dare un'idea della tecnologia usata (PHP). Che è anche rilevabile in molti modi diversi.

Una volta ho visto un caso simile in cui l'iniezione di un array multidimensionale profondo ?test[][][][][]=1 (volte 100), ha provocato un esaurimento rapido delle risorse (negazione del servizio) poiché una funzione ricorsiva ha iniziato a elaborare tutto ciò.

    
posta Bob Ortiz 21.06.2017 - 14:41
fonte

1 risposta

4

Essere in grado di provare un errore PHP è sempre un brutto segno, e vale la pena esaminarlo più in dettaglio o almeno segnalarlo. Quanto è grave nella pratica può andare da completamente benigno a assolutamente catastrofico. Tutto dipende da ciò che il codice fa con l'array che si aspetta sia una stringa.

Diamo un'occhiata a un esempio del mondo reale dal lato sbagliato di tale scala - Drupal security advisory SA-CORE -2014-005 , o Drupalgeddon come è più comunemente noto.

È stato un attacco di SQL injection che ha funzionato perché i programmatori non si aspettavano che un parametro di query fosse un array. Quando lo era, per qualche ragione non capisco appieno che le chiavi di quell'array siano concatenate in una query SQL. Puoi vedere alcuni esempi di payload qui .

Quindi questo introduce rischi? Potenzialmente, sì.

    
risposta data 21.06.2017 - 15:09
fonte

Leggi altre domande sui tag