Ci può essere qualche vulnerabilità nel codice che sta visualizzando le immagini in PHP?

0

C'è un sito web che prende l'immagine dell'utente come input e la elabora e poi la memorizza in qualche directory. Non riesco a vedere la directory, tutto quello che posso vedere nell'attributo src del tag img è il nome del file php che sta mostrando quell'immagine.

<img src="rendering-image.php">

Inoltre, dopo il caricamento dell'immagine, il sito Web mostra l'immagine sulla pagina Web e quando digito www.site.com/rendering-image.php . Mi dà tutti i dati grezzi dell'immagine (non l'immagine visualizzabile). Ho inserito del codice PHP tra i dati grezzi in modo da poter manipolare i filtri, ma non funziona. Il codice PHP che ho inserito per il test era

<?php $n3=2+2; echo $n3;?>

Dopo averlo inserito nei dati grezzi dell'immagine, i miei dati grezzi di immagine jpg erano simili a questo

        ÿØÿà JFIFHHÿápExifMM*;nÒ‡iæ<?php 
$n3=2+2; echo $n3;?>¢£–hàŒÉ4‰/VvÀ‰®sQñ•¬ ­Œfå¿ç¡;#Sø...

Mi aspettavo qualche risposta in seguito all'esecuzione di PHP, ma non ho ricevuto alcuna risposta.

Quindi cosa sta succedendo qui? C'è qualche vulnerabilità qui? Se è allora come posso sfruttarlo?

    
posta Usama Saeed 09.08.2016 - 10:53
fonte

4 risposte

1

Potrebbero esserci vulnerabilità ovunque, ma non ce ne sono prove. Ecco cosa succede:

  • il browser invia una richiesta di una pagina a un server
  • il server invia una pagina HTML contenente un riferimento per un'immagine ()
  • il browser analizza la pagina HTML (alla fine inizia a visualizzarla) e vede che ha bisogno di chiedere un'immagine all'URL original_page_URL/rendering-image.php
  • il browser invia una nuova richiesta a quell'URL, dicendo probabilmente che desidera un'immagine
  • il server rimanda i dati dell'immagine e dichiara nelle intestazioni HTTP il tipo di immagine
  • il browser si aspetta un'immagine, legge la risposta, trova il tipo di immagine, ottiene i suoi dati e la visualizza

Il problema quando scrivi direttamente l'URL nel tuo browser, è che i browser usano spesso la parte di estensione per indovinare il tipo di risposta, e qui indovina erroneamente che php debba restituire del testo. Ma altre cose potrebbero accadere qui:

  • poiché il browser non ha idea di cosa sia rendering-image.php , potrebbe dichiarare di volere dati text / html
  • il server obbedisce e dichiara di inviare anche il testo, ma invia comunque i dati dell'immagine

Dovresti usare uno strumento come wireshark per ottenere le intestazioni della richiesta e la risposta per sapere esattamente cosa è successo.

    
risposta data 09.08.2016 - 16:03
fonte
1

Potrebbe esistere una vulnerabilità se si desidera attaccare il server che ospita rendering-image.php . Di solito questo consiste nel trovare una vulnerabilità in ImageMagick o GD e sfruttarla. Queste sono le due librerie di elaborazione di immagini più comuni per PHP.

Potrebbero anche attaccare lo script stesso. C'è stato un attacco piuttosto grosso alcuni anni fa coinvolgendo timthumb.php . TimThumb è una goccia di script che manipola le immagini. Molti sviluppatori web tra cui molti sviluppatori di temi WordPress hanno usato questo. La vulnerabilità consentiva l'esecuzione di comandi remoti contro il server Web.

Perché questo non interessa per un attacco lato client è come viene utilizzato nel markup HTML.

Se lo sviluppatore web ha codificato quanto segue, un utente malintenzionato potrebbe sfruttare lo script per restituire informazioni e modificare il markup da inviare al client:

<img src="<?php include('processing-image.php') ?>">

Quale potrebbe essere sfruttato per restituire quanto segue:

echo "\"><script>alert('attack poc');<script/><\"";

E questo sarebbe reso come:

<img src=""><script>alert('attack poc');<script/><"">

Tuttavia il markup è in realtà:

<img src="processing-image.php">

Quindi le informazioni saranno trattate come dati di immagine e tenteranno di renderle invece di cambiare il contenuto della pagina. Con questo detto potrebbero essere in grado di deformare l'immagine dove potrebbero attaccare il motore di rendering del browser. Ma è una cosa altamente improbabile e difficile da attaccare.

    
risposta data 09.08.2016 - 20:10
fonte
0

Certamente, potrebbero esserci delle vulnerabilità nel codice di elaborazione delle immagini. Ad esempio, ci sono stati recentemente alcune vulnerabilità gravi in ImageMagick , una popolare libreria di elaborazione delle immagini. Una di queste vulnerabilità potrebbe portare all'esecuzione di codice in modalità remota (RCE), che è tanto grave quanto severa.

    
risposta data 09.08.2016 - 14:22
fonte
0

Invece di iniettare codice PHP nei dati grezzi dell'immagine, prova ad iniettare qualche javascript in modo che invece di

    ÿØÿà JFIFHHÿápExifMM*;nÒ‡iæ<?php 
    $n3=2+2; echo $n3;?>¢£–hàŒÉ4‰/VvÀ‰®sQñ•¬ ­Œfå¿ç¡;#Sø...

viene pubblicato come

    ÿØÿà JFIFHHÿápExifMM*;nÒ‡iæ"><script>prompt('password please') 
    </script>¢£–hàŒÉ4‰/VvÀ‰®sQñ•¬ ­Œfå¿ç¡;#Sø...

Se viene eseguito Javascript, lo chiamerei una vulnerabilità.

    
risposta data 09.08.2016 - 16:34
fonte

Leggi altre domande sui tag