usa load_file in injection

2

Sono un tester di penetrazione e sto lavorando a un nuovo sito Web vulnerabile tramite SQL injection. Questo sito inietta con questo payload:

?id=3333' union select 1,2,3,4 --+

Quarta colonna della seconda selezione restituisce in risposta.

Inoltre sono sicuro che "db.php" è presente in questo percorso:

"var \ www \ vhosts \ mySite.com \ httpdocs \ lib \ db.php"

Ma non riesco a leggere il contenuto di "db.php" usando questa iniezione:

?id=3333' union select 1,2,3,load_file('var\www\vhosts\mySite.com\httpdocs\lib\db.php')

Cosa c'è che non va con questo carico utile? E DB è MySQL.

    
posta psby 30.10.2016 - 15:00
fonte

2 risposte

2

Come risolto la parte mancante erano i privilegi di file. Come da documentazione di LOAD_FILE l'utente che esegue la query deve avere i privilegi di File più a livello di file system il file deve consentire le azioni eseguite dalla query

LOAD DATA INFILE
  1. Per ragioni di sicurezza, durante la lettura dei file che si trovano sul server, il file i file devono risiedere nella directory del database o essere leggibili da l'account utente utilizzato per eseguire il server.

  2. Per utilizzare LOAD DATA INFILE sui file del server, devi avere il FILE     privilegio.

LOAD DATA LOCAL INFILE

L'utilizzo di LOCAL è un po 'più lento del consentire al server di accedere direttamente ai file, poiché il contenuto del file deve essere inviato tramite la connessione dal client al server.

D'altra parte, non è necessario il privilegio FILE per caricare i file locali.

    
risposta data 31.10.2016 - 08:31
fonte
0

L'osservazione può verificarsi anche nelle versioni di Mysql > = 5.7.6 se il parametro --secure-file-priv viene impostato quando mysql è stato compilato per la piattaforma.

Vedi la spiegazione ufficiale per questo parametro qui

A causa dell'impostazione di questo parametro, i file load_file, dumpfile e outfile non saranno in grado di eseguire la rispettiva funzione. Se gli errori mysql vengono visualizzati nel browser, tentare di utilizzare "in dumpfile" in una directory non consentita dal parametro --secure-file-priv indicherà che è stato effettuato un tentativo di scrivere un file al di fuori del file --secure- directory privata che non è consentita.

Si noti che il valore predefinito di --secure-file-priv dipende dalla piattaforma. Per ripristinare la directory --secure-file-priv, dai un'occhiata a questo post che descrive il caso di un'installazione MYSQL in Ubuntu.

    
risposta data 13.11.2016 - 04:12
fonte

Leggi altre domande sui tag