Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/02/2012, 17:48
glassverd
 
Fecha de Ingreso: enero-2012
Mensajes: 25
Antigüedad: 12 años, 4 meses
Puntos: 1
Exclamación Vulnerabilidad de mi UPLOAD

Hola a todos, tengo mucho visitando este foro, sin temas aún, pero visitando y supliendome de su información tan inmensa...

Lo que pasa es que tengo una web de upload de fotos para comparacion, pero tengo un error, se pueden subir shells, se suben ejemplo.php.jpg, y quiero una funcion que cuando pongas ejemplo.php.jpg, te sobreescriba a .jpg nada mas, para evitar esa vunerabilidad...

Aca le pego el código de mi upload.php

Cita:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>

<head>
<link rel="stylesheet" href="styles.css" type="text/css" media="screen" />
<link rel="shortcut icon" href="favicon.ico" />
<meta http-equiv="imagetoolbar" content="false" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Quien se ve mejor? - Sube tu foto</title>

<script language="JavaScript">
<!--
function isValid() {
var isOK = false;
if ((document.upload.name.value != '') && (document.upload.name.value.length > 1)) {
isOK = true;
}
else {
alert ('por favor, su nombre.')
isOK = false;
}

var fileName = document.upload.upfile.value.toLowerCase();

if((fileName.indexOf('.jpeg') != -1) ||
(fileName.indexOf('.jpe') != -1) ||
(fileName.indexOf('.jpg') != -1) ||
(fileName.indexOf('.gif') != -1) ||
(fileName.indexOf('.png') != -1) ) {
isOK = true;
}
else {
alert ('Unknown file type. Must be GIF, PNG or JPG/JPEG/JPE.');
isOK = false;
}

if(isOK) {
showProgress();
}

return isOK;
}

function showProgress() {
document.getElementById("progress").style.visibili ty = 'visible';
document.getElementById("submit").disabled = true;
}

function hideProgress() {
document.getElementById("progress").style.visibili ty = 'hidden';
document.getElementById("submit").disabled = false;
}
//-->
</script>
</head>

<body>

<? include('includes/header.php'); ?>


<div id="main">
<table cellpadding="0" cellspacing="0" border="0" width="100%">

<?

if(isset($_FILES['upfile'])) {

require_once('mysqlvalues.inc.php');
require_once('mysqlfunc.inc.php');

open_conn();

$Name=my_addslashes($_POST[name]);
$LinkText=my_addslashes($_POST[linktext]);
$LinkUrl = trim(preg_replace('/http:\/\//', '', $_POST[linkurl], 1));
if($LinkUrl != '') {$LinkUrl="http://$LinkUrl";}

$res=mysql_query("INSERT INTO Models SET DateTime=NOW(), Name='$Name', Wins='0', Loses='0', Draws='0', Status='0', LinkText='$LinkText', LinkUrl='$LinkUrl'");

$id=mysql_insert_id();
$extension=explode('.', $_FILES['upfile']['name']);
$imagename=str_replace(' ', '', "$id" . ".$extension[1]");

if (move_uploaded_file($_FILES['upfile']['tmp_name'], "images/uploads/$imagename")) {

chmod("images/uploads/$imagename", 0777);

mysql_query("UPDATE Models SET Thumbnail='$imagename' WHERE ID='$id'");

$message="<br><strong>Archivo Recibido!<br/></strong>Sera revisado y publicado en linea, por lo general dentro de 24 horas.<br/><br/><strong>Puede ver su publicacion en: <br/><a href=\"http://www.quiensevemejor.co.cc.com/stats.php?id=$id\">http://www.quiensevemejor.com/stats.php?id=$id</a> <font color='red'>(guarda este link)</font></strong><br/><br/><br/>";

}else{mysql_query("DELETE FROM Models WHERE ID='$id'"); $message="<strong>Error recibiendo el archivo.</strong><br/><br/><br/>";}

close_conn();

echo"<tr>
<td width=\"150\" id=\"results\">
&nbsp;
</td>
<td width=\"550\" id=\"vote\" align=\"left\">
<p>

$message
<br/>
<p><a href=\"upload.php\">Upload another picture</a>.</p>
</p>
<p align=\"center\"><a href=\"index.php\"><u>Siniciar una nueva votacion!</u></a></p>
</td>

<td width=\"150\" id=\"sponsor\">";

include('includes/rightbanners.php');

echo"<p align=\"center\">
&nbsp;
</p>
</td>
</tr>";

}else{

echo"<tr>
<td width=\"150\" id=\"results\">
&nbsp;
</td>
<td width=\"550\" id=\"vote\" align=\"left\">
<p>

<form action=\"upload.php\" onSubmit=\"return isValid()\" method=\"post\" name=\"upload\" enctype=\"multipart/form-data\">
<br/>
<strong>Submit your model for battle!</strong>
<ul>
<li>Nosotros evaluaremos su imagen antes de que sea visible en linea.</li>
<li>Las imagenes deben ser de al menos 250x250 pixeles (se recortaran a esta dimension).</li>
<li>Por favor, no incluir a criaturas menores de 12.</li>
<li>Imagenes necesita ser girada a la orientacion correcta.</li>
<li>El tema sera el texto que aparece debajo de la foto</li>
<li>El Link del tema es el Link donde se llevara cuando den click al texto (Tema)</li>
<li>.jpg .gif o .png <strong><em>SOLO</em></strong> esos formatos, por favor.</li>

</ul>
<p>
<br/><label><strong>Tu Nombre:</strong>&nbsp;</label><input type=\"text\" name=\"name\" id=\"name\" maxlength=\"20\"/> <em>Obligatorio</em>
<br/><label><strong>Tema:</strong>&nbsp;</label><input type=\"text\" name=\"linktext\" id=\"lintext\"/>
<br/><label><strong>Link del tema:</strong>&nbsp;</label><input type=\"text\" name=\"linkurl\" id=\"linkurl\"/>
<br/><label><strong>Archivo:</strong>&nbsp;</label><input type=\"file\" name=\"upfile\" id=\"upfile\" />
<br/><label>&nbsp;</label><input type=\"submit\" id=\"submit\" name=\"submit\" value=\"Subir Foto\"/>&nbsp;<span id=\"progress\"><img src=\"images/busy_blue.gif\"/>&nbsp;<strong>Subiendo archivo...</strong></span>
<script language=\"JavaScript\">
hideProgress();
</script>

</p>
</form>
<p><strong>Aviso:</strong> Al enviar material a este sitio, usted acepta los terminos de nuestra <a href=\"legal.php\">privacidad y politicas</a>.</p>
</p>
<p align=\"center\"><a href=\"index.php\"><u>Empezar una nueva votacion!</u></a></p>
</td>

<td width=\"150\" id=\"sponsor\">";

include('includes/rightbanners.php');

echo"<p align=\"center\">
&nbsp;
</p>
</td>
</tr>";
}

?>

</table>
</div>

<? include('includes/footer.php'); ?>

</div>
</body>
</html>
Ahh, una pregunta...

Tengo los permisos 777 en la carpeta UPLOAD para que los usuarios puedan subir las fotos a la carpeta, ¿eso implica mucho?, le cambie los permisos y le quite los de ejecutar, fue inutil, otra vez me la hackearon... pero suerte q fue un amigo...

Gracias de antemano.