Foros del Web » Programando para Internet » PHP »

Vulnerabilidad de mi UPLOAD

Estas en el tema de Vulnerabilidad de mi UPLOAD en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 26/02/2012, 17:48
 
Fecha de Ingreso: enero-2012
Mensajes: 25
Antigüedad: 12 años, 3 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.
  #2 (permalink)  
Antiguo 26/02/2012, 18:14
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Vulnerabilidad de mi UPLOAD

Debes verificar que tipo de archivo es lo que se esta subiendo, checa su mime-type...

Código PHP:
Ver original
  1. $mimeType = $_FILES['upfile']['type'];
  2. $type = substr($mimeType,6);
  3. $typeFileAcept = array('jpeg','npg','gif');
  4.  
  5. if (in_array($type, $typeFileAcept)) {
  6. //archivo valido!
  7. }else {
  8. //archivo invalido!
  9. }

Actualización: No había visto lo de los permisos, por supuesto que es extremadamente riesgoso dar permisos 777, informate mas, esos permisos indican que se pueden ejecutar cualquier tipo de archivo subido, jamas debes darle dichos permisos a archivos subidos por usuarios, jamas...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 26/02/2012, 18:31
 
Fecha de Ingreso: enero-2012
Mensajes: 25
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Vulnerabilidad de mi UPLOAD

Esta que solo sea las extensiones de imágenes: .jpg, .png, etc...

Pero... lo que quiero saber es como quitar esa vulnerabilidad que si suben archivos ejemplo.php.jpg no lo permita, o lo sobreescriba...

PD: El Upload es un script adaptado por un amigo que ya no está conmigo.
  #4 (permalink)  
Antiguo 26/02/2012, 18:48
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Vulnerabilidad de mi UPLOAD

Mmmm supongo que están tratando de hacer pasar un archivo php por una imagen, bueno, podemos agregar el siguiente código...

Código PHP:
Ver original
  1. if (in_array($type, $typeFileAcept)) {
  2.      getimagesize($_FILES['upfile']['tmp_name'],$allInfo);
  3.      if (count($allInfo) == 0) {
  4.           echo 'el archivo subido no es una imagen!';
  5.      }
  6. }

De esta forma no importa en absoluto que intenten hacer pasar un archivo (sea cual sea) como imagen al agregar la extensión de una imagen, al no ser imagen, getimagesize no entregará ninguna información, por lo tanto será seguro que el archivo no es una imagen...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 26/02/2012, 18:57
 
Fecha de Ingreso: enero-2012
Mensajes: 25
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Vulnerabilidad de mi UPLOAD

Emm, sip, excelente, pero... ¿en que lado lo pongo? porque en sí, lo pongo cuando se cierra una llave, y lo que consigo es abrir el código y sacarlo de secuencia.

Eso es lo que quería... Gracias!, espero tu respuesta!.
  #6 (permalink)  
Antiguo 26/02/2012, 19:06
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Vulnerabilidad de mi UPLOAD

mmm tendrías que colocar el código antes de todo tu código que sube y guarda el archivo y demás...


Código PHP:
Ver original
  1. <!-- código javascript y demás que tienes -->
  2.  
  3. <?php include('includes/header.php'); ?>
  4.  
  5.  
  6. <div id="main">
  7. <table cellpadding="0" cellspacing="0" border="0" width="100%">
  8.  
  9. <?php
  10.  
  11. if(isset($_FILES['upfile'])) {
  12.    
  13.     $mimeType = $_FILES['archivo']['type'];
  14.     $type = substr($mimeType,6);
  15.     $typeFileAcept = array('jpeg','npg','gif');
  16.     $error = false;
  17.  
  18.     if (in_array($type, $typeFileAcept)) {
  19.         $size = getimagesize($_FILES['archivo']['tmp_name'],$allInfo);
  20.  
  21.         if (count($allInfo) == 0) {
  22.             $error = true;
  23.         }
  24.     }else {
  25.         $error = true;
  26.     }
  27.    
  28.     if (!$error) {
  29.         require_once('mysqlvalues.inc.php');
  30.         require_once('mysqlfunc.inc.php');
  31.  
  32.         open_conn();
  33.        
  34.         //tooodo el demas código que tienes...
  35. }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 26/02/2012, 19:26
 
Fecha de Ingreso: enero-2012
Mensajes: 25
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Vulnerabilidad de mi UPLOAD

Cita:
Iniciado por Nemutagk Ver Mensaje
mmm tendrías que colocar el código antes de todo tu código que sube y guarda el archivo y demás...


Código PHP:
Ver original
  1. <!-- código javascript y demás que tienes -->
  2.  
  3. <?php include('includes/header.php'); ?>
  4.  
  5.  
  6. <div id="main">
  7. <table cellpadding="0" cellspacing="0" border="0" width="100%">
  8.  
  9. <?php
  10.  
  11. if(isset($_FILES['upfile'])) {
  12.    
  13.     $mimeType = $_FILES['archivo']['type'];
  14.     $type = substr($mimeType,6);
  15.     $typeFileAcept = array('jpeg','npg','gif');
  16.     $error = false;
  17.  
  18.     if (in_array($type, $typeFileAcept)) {
  19.         $size = getimagesize($_FILES['archivo']['tmp_name'],$allInfo);
  20.  
  21.         if (count($allInfo) == 0) {
  22.             $error = true;
  23.         }
  24.     }else {
  25.         $error = true;
  26.     }
  27.    
  28.     if (!$error) {
  29.         require_once('mysqlvalues.inc.php');
  30.         require_once('mysqlfunc.inc.php');
  31.  
  32.         open_conn();
  33.        
  34.         //tooodo el demas código que tienes...
  35. }
error

Parse error: syntax error, unexpected $end in /home/u792938052/public_html/upload.php on line 197

y dice que es la linea 197 y la linea 197 es la ultima... ¿faltara algun corchete en la ultima linea o en cual sera?-
  #8 (permalink)  
Antiguo 26/02/2012, 19:35
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Vulnerabilidad de mi UPLOAD

cerraste el if ($error), ya que no coloqué el corchete final...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #9 (permalink)  
Antiguo 27/02/2012, 07:19
 
Fecha de Ingreso: enero-2012
Mensajes: 25
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Vulnerabilidad de mi UPLOAD

hablas de esto?
Cita:
if(isset($_FILES['upfile'])) {

$mimeType = $_FILES['archivo']['type'];
$type = substr($mimeType,6);
$typeFileAcept = array('jpeg','npg','gif');
$error = false;

if (in_array($type, $typeFileAcept)) {
$size = getimagesize($_FILES['archivo']['tmp_name'],$allInfo);

if (count($allInfo) == 0) {
$error = true;
}
creo que esta bien cerrado, ¿donde es que falta el corchete?... me confunde eso de corchetes y cosas asi.... Gracias de antemano!.
  #10 (permalink)  
Antiguo 27/02/2012, 07:33
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Vulnerabilidad de mi UPLOAD

No, de hecho me equivoque, no era corchete, era llave, hablo de este...

Código PHP:
Ver original
  1. if (!$error) {
  2.                 require_once('mysqlvalues.inc.php');
  3.                 require_once('mysqlfunc.inc.php');
  4.  
  5.                 open_conn();
  6.        
  7.                //tooodo el demas código que tienes...
  8.  
  9.         } //<---- Hablo de esta llave...
  10. }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #11 (permalink)  
Antiguo 27/02/2012, 08:59
 
Fecha de Ingreso: enero-2012
Mensajes: 25
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Vulnerabilidad de mi UPLOAD

Esas llaves van al final de ese código?, porque si es asi, me da error y no me funciona... o al final de todo?...

que confuncion....

aver si me lo puedes adaptar al código si?, y hay me explicas, porque mi amigo hizo un codigo demaciado extenso, me da un poco de vergüenza pedirte esto porque soy disque un supuestamente programaador., pero es que mi proyecto es para hoy en la tarde y no quiero presentar esa vulnerabilidad.

Grax mil Grax d Antemano.!

Edit: Trate de hacerlo como me dijiste, y me dio error, le quite una llave de las dos que me diste y ahora me presenta este error despues que trato de subir la foto

Cita:
Fatal error: Call to undefined function my_addslashes() in /home/u792938052/public_html/upload.php on line 92

Última edición por glassverd; 27/02/2012 a las 09:44
  #12 (permalink)  
Antiguo 27/02/2012, 12:09
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Vulnerabilidad de mi UPLOAD

Viendo detenidamente todo tu código es un spaguetti, sin ofender, pero tienes varios errores, no debes hacer que PHP imprima tanto código HTML estatico, solo haces que PHP trabaje mas para nada, usas short tags (<?) cuando estos están deprecate, debes usar <?php y vamos, con la llave me parece que era muy sencillo saber donde colocar la llave faltante...

Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html>
  3.  
  4. <head>
  5. <link rel="stylesheet" href="styles.css" type="text/css" media="screen" />
  6. <link rel="shortcut icon" href="favicon.ico" />
  7. <meta http-equiv="imagetoolbar" content="false" />
  8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  9. <title>Quien se ve mejor? - Sube tu foto</title>
  10.  
  11. <script language="JavaScript">
  12. <!--
  13. function isValid() {
  14. var isOK = false;
  15. if ((document.upload.name.value != '') && (document.upload.name.value.length > 1)) {
  16. isOK = true;
  17. }
  18. else {
  19. alert ('por favor, su nombre.')
  20. isOK = false;
  21. }
  22.  
  23. var fileName = document.upload.upfile.value.toLowerCase();
  24.  
  25. if((fileName.indexOf('.jpeg') != -1) ||
  26. (fileName.indexOf('.jpe') != -1) ||
  27. (fileName.indexOf('.jpg') != -1) ||
  28. (fileName.indexOf('.gif') != -1) ||
  29. (fileName.indexOf('.png') != -1) ) {
  30. isOK = true;
  31. }
  32. else {
  33. alert ('Unknown file type. Must be GIF, PNG or JPG/JPEG/JPE.');
  34. isOK = false;
  35. }
  36.  
  37. if(isOK) {
  38. showProgress();
  39. }
  40.  
  41. return isOK;
  42. }
  43.  
  44. function showProgress() {
  45. document.getElementById("progress").style.visibili ty = 'visible';
  46. document.getElementById("submit").disabled = true;
  47. }
  48.  
  49. function hideProgress() {
  50. document.getElementById("progress").style.visibili ty = 'hidden';
  51. document.getElementById("submit").disabled = false;
  52. }
  53. //-->
  54. </script>
  55. </head>
  56.  
  57. <body>
  58.  
  59. <? include('includes/header.php'); ?>
  60.  
  61.  
  62. <div id="main">
  63. <table cellpadding="0" cellspacing="0" border="0" width="100%">
  64.  
  65. <?
  66.  
  67. if(isset($_FILES['upfile'])) {
  68.  
  69.     require_once('mysqlvalues.inc.php');
  70.     require_once('mysqlfunc.inc.php');
  71.    
  72.     $mimeType = $_FILES['archivo']['type'];
  73.     $type = substr($mimeType,6);
  74.     $typeFileAcept = array('jpeg','png','gif');
  75.     $error = false;
  76.  
  77.     if (in_array($type, $typeFileAcept)) {
  78.         $size = getimagesize($_FILES['archivo']['tmp_name'],$allInfo);
  79.  
  80.         if (count($allInfo) == 0) {
  81.             $error = true;
  82.         }
  83.     }else {
  84.         $error = true;
  85.     }
  86.    
  87.     if (!$error) {
  88.         open_conn();
  89.  
  90.         $Name=my_addslashes($_POST[name]);
  91.         $LinkText=my_addslashes($_POST[linktext]);
  92.         $LinkUrl = trim(preg_replace('/http:\/\//', '', $_POST[linkurl], 1));
  93.         if($LinkUrl != '') {$LinkUrl="http://$LinkUrl";}
  94.  
  95.         $res=mysql_query("INSERT INTO Models SET DateTime=NOW(), Name='$Name', Wins='0', Loses='0', Draws='0', Status='0', LinkText='$LinkText', LinkUrl='$LinkUrl'");
  96.  
  97.         $id=mysql_insert_id();
  98.         $extension=explode('.', $_FILES['upfile']['name']);
  99.         $imagename=str_replace(' ', '', "$id" . ".$extension[1]");
  100.  
  101.         if (move_uploaded_file($_FILES['upfile']['tmp_name'], "images/uploads/$imagename")) {
  102.  
  103.             chmod("images/uploads/$imagename", 0777);
  104.  
  105.             mysql_query("UPDATE Models SET Thumbnail='$imagename' WHERE ID='$id'");
  106.  
  107.             $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/>";
  108.  
  109.         }else{
  110.             mysql_query("DELETE FROM Models WHERE ID='$id'"); $message="<strong>Error recibiendo el archivo.</strong><br/><br/><br/>";
  111.         }
  112.        
  113.         close_conn();
  114.     }else {
  115.         echo 'El archivo subido no es una imagen!';
  116.     }
  117.  
  118.     echo"<tr>
  119.    <td width=\"150\" id=\"results\">
  120.    &nbsp;
  121.    </td>
  122.    <td width=\"550\" id=\"vote\" align=\"left\">
  123.    <p>
  124.  
  125.    $message
  126.    <br/>
  127.    <p><a href=\"upload.php\">Upload another picture</a>.</p>
  128.    </p>
  129.    <p align=\"center\"><a href=\"index.php\"><u>Siniciar una nueva votacion!</u></a></p>
  130.    </td>
  131.  
  132.    <td width=\"150\" id=\"sponsor\">";
  133.  
  134.     include('includes/rightbanners.php');
  135.  
  136.     echo"<p align=\"center\">
  137.    &nbsp;
  138.    </p>
  139.    </td>
  140.    </tr>";
  141.  
  142. }else{
  143.  
  144.     echo"<tr>
  145.    <td width=\"150\" id=\"results\">
  146.    &nbsp;
  147.    </td>
  148.    <td width=\"550\" id=\"vote\" align=\"left\">
  149.    <p>
  150.  
  151.    <form action=\"upload.php\" onSubmit=\"return isValid()\" method=\"post\" name=\"upload\" enctype=\"multipart/form-data\">
  152.    <br/>
  153.    <strong>Submit your model for battle!</strong>
  154.    <ul>
  155.    <li>Nosotros evaluaremos su imagen antes de que sea visible en linea.</li>
  156.    <li>Las imagenes deben ser de al menos 250x250 pixeles (se recortaran a esta dimension).</li>
  157.    <li>Por favor, no incluir a criaturas menores de 12.</li>
  158.    <li>Imagenes necesita ser girada a la orientacion correcta.</li>
  159.    <li>El tema sera el texto que aparece debajo de la foto</li>
  160.    <li>El Link del tema es el Link donde se llevara cuando den click al texto (Tema)</li>
  161.    <li>.jpg .gif o .png <strong><em>SOLO</em></strong> esos formatos, por favor.</li>
  162.  
  163.    </ul>
  164.    <p>
  165.    <br/><label><strong>Tu Nombre:</strong>&nbsp;</label><input type=\"text\" name=\"name\" id=\"name\" maxlength=\"20\"/> <em>Obligatorio</em>
  166.    <br/><label><strong>Tema:</strong>&nbsp;</label><input type=\"text\" name=\"linktext\" id=\"lintext\"/>
  167.    <br/><label><strong>Link del tema:</strong>&nbsp;</label><input type=\"text\" name=\"linkurl\" id=\"linkurl\"/>
  168.    <br/><label><strong>Archivo:</strong>&nbsp;</label><input type=\"file\" name=\"upfile\" id=\"upfile\" />
  169.    <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>
  170.    <script language=\"JavaScript\">
  171.    hideProgress();
  172.    </script>
  173.  
  174.    </p>
  175.    </form>
  176.    <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>
  177.    </p>
  178.    <p align=\"center\"><a href=\"index.php\"><u>Empezar una nueva votacion!</u></a></p>
  179.    </td>
  180.  
  181.    <td width=\"150\" id=\"sponsor\">";
  182.  
  183.     include('includes/rightbanners.php');
  184.  
  185.     echo"<p align=\"center\">
  186.    &nbsp;
  187.    </p>
  188.    </td>
  189. </tr>";
  190. }
  191.  
  192. ?>
  193.  
  194. </table>
  195. </div>
  196.  
  197. <? include('includes/footer.php'); ?>
  198.  
  199. </div>
  200. </body>
  201. </html>
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #13 (permalink)  
Antiguo 27/02/2012, 16:41
 
Fecha de Ingreso: enero-2012
Mensajes: 25
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Vulnerabilidad de mi UPLOAD

Agg, ahora otro problema, si subo un archivo ejemplo.php.jpg dice que no es un archivo.

pero si subo uno .png .jpg o .gif tambien dice lo mismo y no lo sube :(

Edit: Puedes ir a mi web para que la veas www.quiensevemejor.co.cc/upload.php

Última edición por glassverd; 27/02/2012 a las 16:42 Razón: pag. web
  #14 (permalink)  
Antiguo 27/02/2012, 16:57
 
Fecha de Ingreso: agosto-2011
Mensajes: 110
Antigüedad: 12 años, 8 meses
Puntos: 13
Respuesta: Vulnerabilidad de mi UPLOAD

Mi consejo, no permitas que los usuarios nombren archivos en el servidor, me explico

si un usuario PEPITO quiere subir una foto FotoPepito.php.jpg tu coges esa foto tomas el nombre y lo almacenas en una base de datos y en su lugar das al archivo físico del servidor un nombre tipo 00000000001.jpg y le eliminas los permisos de ejecución mediante chmod(). de esta forma el servidor como mucho , mostraría el código php del archivo por pantalla pero no llegaría a ejecutarlo

por otro lado aun comprobado el tipo MIME del archivo, un usuario malintencionado podría engañar al servidor, enviando una cabecera MIME correcta en un archivo que no es imagen , para evitar esto puedes usar la función getImageSize() de la biblioteca GD que devolverá FALSE si el archivo no es una imagen y por lo tanto podrás saber, mas allá de la extensión y el MIME si el archivo es un archivo de imagen válido.

Ten en cuenta que siempre habrá una trampa y se podra engañar al sistema, asi que cuanto menos permitas hacer a los usuarios mejor, por eso mi consejo de asignar un nombre genérico a las imagenes y utilizar el nombre proporcionado por el usuario como titulo, almacenándolo en la base de datos.

Muchas de estas cosas creo que te las han dicho antes, de todas formas espero que te sean utiles.


un saludo.
  #15 (permalink)  
Antiguo 27/02/2012, 17:09
 
Fecha de Ingreso: enero-2012
Mensajes: 25
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Vulnerabilidad de mi UPLOAD

@Bray

Mi página web no tiene sistema de usuario, almacena la imagen en la carpeta por ID...

Al parecer el problema está aqui

Cita:
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'");
Con el chin de experiencia que tengo, puedo imaginarme que donde dice
Cita:
chmod ("images/uploads/$imagename", 0777);
otorga permisos 777 lo que tendría que hacer sería 0644 que es que solo el propietario puede escribir, nadie ejecutar y todos pueden ver... asi no se ejecuta el código php ingresado como supuesta imagen...

¿Que tal la idea?.
  #16 (permalink)  
Antiguo 27/02/2012, 17:12
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Vulnerabilidad de mi UPLOAD

A ver amigo, por lo que veo solo estas haciendo copy/paste del código, si no pretendes si quiera VER LO QUE EH HECHO y tratar de comprenderlo ya es problema tuyo, ahora con el error no te voy a decir cual es ni te lo solucionaré porque no pones de tu parte, ya hice suficiente en ayudarte, pero solo tu estas esperando a tener un código bonito y funcional solo para copiar eh implementar, analiza tu código y lo podrás resolver...

Nota: para @bray, getimagesize no es una función de GD, esta funcionará con o sin la librería instalada!
Nota2: @glassverd ya te habia dicho que NO DEBES poner NUNCA un permiso 777 a una carpeta con archivos que suben los usuarios JAMAS
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #17 (permalink)  
Antiguo 27/02/2012, 17:26
 
Fecha de Ingreso: enero-2012
Mensajes: 25
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Vulnerabilidad de mi UPLOAD

Cita:
Iniciado por Nemutagk Ver Mensaje
A ver amigo, por lo que veo solo estas haciendo copy/paste del código, si no pretendes si quiera VER LO QUE EH HECHO y tratar de comprenderlo ya es problema tuyo, ahora con el error no te voy a decir cual es ni te lo solucionaré porque no pones de tu parte, ya hice suficiente en ayudarte, pero solo tu estas esperando a tener un código bonito y funcional solo para copiar eh implementar, analiza tu código y lo podrás resolver...

Nota: para @bray, getimagesize no es una función de GD, esta funcionará con o sin la librería instalada!
Nota2: @glassverd ya te habia dicho que NO DEBES poner NUNCA un permiso 777 a una carpeta con archivos que suben los usuarios JAMAS

Brother, estoy tratando de analizar, pero es que soy muy novato en esto, y no quiero dañar mi código, ¿que crees? que antes de consultarte cada nuevo problema no he hecho dos o tres intentos con tutoriales del internet para tratar de arreglar el código?, si, lo he hecho, por eso consulto a ustedes, para que me ayuden, pongo de mi parte, inclusive hice un disparate de mi web, si no hubiese sido porque tenía una backup me hubiese jodido.... si te lo sabes el error, puedes decirmelo si es de tu gusto ;), sino quieres, pues de acuerdo, y es verdad has trabajado duro y me has ayudado bastante... Soy demaciado novato en esto.

@Bray, getimagesize creo que viene en la librería predeterminada, eso leí.

PD: cada código que arreglas o cada cosa que me dices y no entiendo, busco en internet y si sigo sin aprender, te consulto... ;).

PD2: El código no fue hecho por mi, y esta muy espaguetti como dijiste, para un novato, es una cosa muy compleja.

Si no me vas a ayudar, como sea Gracias por todo!, estoy muy agradecido contigo, inclusive, no creí que llegaras a soportar tanta estupidez de mi parte ;).
  #18 (permalink)  
Antiguo 27/02/2012, 17:29
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Vulnerabilidad de mi UPLOAD

Te daré una pista, es mas casi casi te lo pondré frente a tu cara (sin ofender >.<)


Que vez de diferente en estos trozos de código...
Código PHP:
Ver original
  1. //Código con problema...
  2.     $mimeType = $_FILES['archivo']['type'];
  3.     $type = substr($mimeType,6);
  4.     $typeFileAcept = array('jpeg','png','gif');
  5.     $error = false;
  6.  
  7.     if (in_array($type, $typeFileAcept)) {
  8.         $size = getimagesize($_FILES['archivo']['tmp_name'],$allInfo);
  9.  
  10.  
  11. //Código funcional!
  12.  if (move_uploaded_file($_FILES['upfile']['tmp_name'], "images/uploads/$imagename")) {
  13.  
  14.             chmod("images/uploads/$imagename", 0777);
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #19 (permalink)  
Antiguo 27/02/2012, 17:30
 
Fecha de Ingreso: agosto-2011
Mensajes: 110
Antigüedad: 12 años, 8 meses
Puntos: 13
Respuesta: Vulnerabilidad de mi UPLOAD

@Nemutagk gracias por la aclaración del getimagesize.

@glassverd aunque los usuarios no se registren tu puedes iniciar una sesión por ellos, ya que si les vas a permitir manipular el contenido del servidor, debes controlar lo que hacen y lo que no. aun así nada de lo que he dicho requiere un sistema de identificación de usuario. pero en tu lugar intentaria marcar a los usuarios que intenten hacer mal uso del servicio ya sea por IP o MAC (nada de esto es definitivo pero ... cuanto mas dificil se ponga, mejor) ya que no les vas a requerir registro.
  #20 (permalink)  
Antiguo 27/02/2012, 17:57
 
Fecha de Ingreso: enero-2012
Mensajes: 25
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Vulnerabilidad de mi UPLOAD

Cita:
Iniciado por Nemutagk Ver Mensaje
Te daré una pista, es mas casi casi te lo pondré frente a tu cara (sin ofender >.<)


Que vez de diferente en estos trozos de código...
Código PHP:
Ver original
  1. //Código con problema...
  2.     $mimeType = $_FILES['archivo']['type'];
  3.     $type = substr($mimeType,6);
  4.     $typeFileAcept = array('jpeg','png','gif');
  5.     $error = false;
  6.  
  7.     if (in_array($type, $typeFileAcept)) {
  8.         $size = getimagesize($_FILES['archivo']['tmp_name'],$allInfo);
  9.  
  10.  
  11. //Código funcional!
  12.  if (move_uploaded_file($_FILES['upfile']['tmp_name'], "images/uploads/$imagename")) {
  13.  
  14.             chmod("images/uploads/$imagename", 0777);
Con mi poca experiencia, casi nula, creo que el código de abajo, es el que sigue de arriba... Pero bueno, usted es el experto, a ver... Yo encuentro error es que en $mimetype,6 indica que deben ser 6 tipos y que el array dice que solo son tres: jpeg, png y gif.
Otra que encuentro en el código con problema es que tiene un if, pero no hay else que devuelva el algorítmo y emita un mensaje erróneo...

Algo que me confunde es que dices "que encuentras de diferente" de diferente está todo... pero bueno, hay te dije lo que se.

Eres una buena persona man... eres muy solidario, a pesar de que no se nada, tienes paciencia. Gracias otra vez.

@bray muy buena tu respuesta, tendré que implementar un sistema de localización de IP´s e agregar un código al upload.php que banée la ip que intente hacer estos tipos de fraude... Y ya puedes saber, si tengo un spaguetti (como dice mi queridísimo amigo Nemugtak) con esto, imagínate con eso que me dices... Bueno, nada es imposible para el que se dispone, yo estoy dispuesto a hacer eso y más. Inclusive me apunté en un curso que comienza en Mayo de PHP....
  #21 (permalink)  
Antiguo 27/02/2012, 17:59
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Vulnerabilidad de mi UPLOAD

o.O sin ofender,pero me eh quedado sorprendido, si hay algo "diferente" es que debe a ver algo igual (seria mas correcto decir que "comparten" algo ambos códigos)en ambos códigos, vamos, ya para acabar (¬¬ >.<) el error es en el nombre del campo file...

Código PHP:
Ver original
  1. //mal...
  2. $_FILES['archivo']['type']
  3. $_FILES['archivo']['tmp_name']
  4.  
  5. //bien...
  6. $_FILES['upfile']['tmp_name']

solo cambia el nombre de los campos.... y ya debería funcionar...

Nota: solo para aclarar el punto...

Cita:
... Yo encuentro error es que en $mimetype,6 indica que deben ser 6 tipos ...
Cuando no sepas que hace una función (en este caso substr) buscala en el manual de PHP, substr extrae (o corta según como se vea) un "pedazo" de texto de un string en el sitio indicado, en este caso le estamos diciendo a substr que "corte" el string de mime-type que nos retorne el texto a partir del 6 caracter, los anteriores serán desechados, ejemplo...

el mime-type en una imagen normalmente es image/jpeg en un archivo jpg, image/png en un png y así sucesivamente, en nuestro caso no necesitamos el image/, así que lo desechamos con substr...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Última edición por Nemutagk; 27/02/2012 a las 18:07
  #22 (permalink)  
Antiguo 27/02/2012, 18:25
 
Fecha de Ingreso: enero-2012
Mensajes: 25
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Vulnerabilidad de mi UPLOAD

no, no es eso, sigue igualito... al parecer ese código ya estaba definido, porque primero le puse "upfile" a una sola linea de código y me dio un syntax error, de acuerdo. luego le puse upfile a las dos, y no me dio error... por lo tanto uno funciona con el otro, si le pongo subirarc a los dos, no me da error syntax, pero sigue igual que no sube la foto...

He cansado de buscar tutoriales y sólo me presentan soluciones para códigos ya hechos... esto me tiene ufff hasta el tope...

Inclusive hasta estuve pensando sobre cambiar el sistema de upload por uno nuevo y con seguridad de la internet, pero los códigos que tiene para mi (porque soy newbie) es un poquito arriesgado traspasar los códigos....

Para no molestarte tanto, ¿es posible traspasar los códigos a otro sistema de upload?...
  #23 (permalink)  
Antiguo 27/02/2012, 18:29
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Vulnerabilidad de mi UPLOAD

o.O no se que estes haciendo amigo, la verdad ya me tienes desconsertado, tengo este código (que aunque esta comentado lo que no me sirve a mi) implementado y funciona, chechalo y verifica tu código y este y ve las diferencias, si sigue sin funcionarte la verdad es que no se que haces >.<

Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html>
  3.  
  4. <head>
  5. <link rel="stylesheet" href="styles.css" type="text/css" media="screen" />
  6. <link rel="shortcut icon" href="favicon.ico" />
  7. <meta http-equiv="imagetoolbar" content="false" />
  8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  9. <title>Quien se ve mejor? - Sube tu foto</title>
  10.  
  11. <script language="JavaScript">
  12. <!--
  13. function isValid() {
  14. var isOK = false;
  15. if ((document.upload.name.value != '') && (document.upload.name.value.length > 1)) {
  16. isOK = true;
  17. }
  18. else {
  19. alert ('por favor, su nombre.')
  20. isOK = false;
  21. }
  22.  
  23. var fileName = document.upload.upfile.value.toLowerCase();
  24.  
  25. if((fileName.indexOf('.jpeg') != -1) ||
  26. (fileName.indexOf('.jpe') != -1) ||
  27. (fileName.indexOf('.jpg') != -1) ||
  28. (fileName.indexOf('.gif') != -1) ||
  29. (fileName.indexOf('.png') != -1) ) {
  30. isOK = true;
  31. }
  32. else {
  33. alert ('Unknown file type. Must be GIF, PNG or JPG/JPEG/JPE.');
  34. isOK = false;
  35. }
  36.  
  37. if(isOK) {
  38. showProgress();
  39. }
  40.  
  41. return isOK;
  42. }
  43.  
  44. function showProgress() {
  45. document.getElementById("progress").style.visibili ty = 'visible';
  46. document.getElementById("submit").disabled = true;
  47. }
  48.  
  49. function hideProgress() {
  50. document.getElementById("progress").style.visibili ty = 'hidden';
  51. document.getElementById("submit").disabled = false;
  52. }
  53. //-->
  54. </script>
  55. </head>
  56.  
  57. <body>
  58.  
  59. <div id="main">
  60. <table cellpadding="0" cellspacing="0" border="0" width="100%">
  61.  
  62. <?
  63.  
  64. if(isset($_FILES['upfile'])) {
  65.  
  66. //    require_once('mysqlvalues.inc.php');
  67. //    require_once('mysqlfunc.inc.php');
  68.    
  69.     $mimeType = $_FILES['upfile']['type'];
  70.     $type = substr($mimeType,6);
  71.     $typeFileAcept = array('jpeg','png','gif');
  72.     $error = false;
  73.  
  74.     if (in_array($type, $typeFileAcept)) {
  75.         $size = getimagesize($_FILES['upfile']['tmp_name'],$allInfo);
  76.  
  77.         if (count($allInfo) == 0) {
  78.             $error = true;
  79.         }
  80.     }else {
  81.         $error = true;
  82.     }
  83.    
  84.     if (!$error) {
  85. //        open_conn();
  86. //
  87. //        $Name=my_addslashes($_POST[name]);
  88. //        $LinkText=my_addslashes($_POST[linktext]);
  89. //        $LinkUrl = trim(preg_replace('/http:\/\//', '', $_POST[linkurl], 1));
  90. //        if($LinkUrl != '') {$LinkUrl="http://$LinkUrl";}
  91. //
  92. //        $res=mysql_query("INSERT INTO Models SET DateTime=NOW(), Name='$Name', Wins='0', Loses='0', Draws='0', Status='0', LinkText='$LinkText', LinkUrl='$LinkUrl'");
  93. //
  94. //        $id=mysql_insert_id();
  95. //        $extension=explode('.', $_FILES['upfile']['name']);
  96. //        $imagename=str_replace(' ', '', "$id" . ".$extension[1]");
  97.  
  98. //        if (move_uploaded_file($_FILES['upfile']['tmp_name'], "images/uploads/$imagename")) {
  99.  
  100. //            chmod("images/uploads/$imagename", 0777);
  101. //
  102. //            mysql_query("UPDATE Models SET Thumbnail='$imagename' WHERE ID='$id'");
  103. //
  104.             $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/>";
  105.  
  106. //        }else{
  107. //            mysql_query("DELETE FROM Models WHERE ID='$id'");
  108. //            $message="<strong>Error recibiendo el archivo.</strong><br/><br/><br/>";
  109. //        }
  110.        
  111. //        close_conn();
  112.     }else {
  113.         echo 'El archivo subido no es una imagen!';
  114.     }
  115.  
  116.     echo"<tr>
  117.    <td width=\"150\" id=\"results\">
  118.    &nbsp;
  119.    </td>
  120.    <td width=\"550\" id=\"vote\" align=\"left\">
  121.    <p>
  122.  
  123.    $message
  124.    <br/>
  125.    <p><a href=\"upload.php\">Upload another picture</a>.</p>
  126.    </p>
  127.    <p align=\"center\"><a href=\"index.php\"><u>Siniciar una nueva votacion!</u></a></p>
  128.    </td>
  129.  
  130.    <td width=\"150\" id=\"sponsor\">";
  131.  
  132.     include('includes/rightbanners.php');
  133.  
  134.     echo"<p align=\"center\">
  135.    &nbsp;
  136.    </p>
  137.    </td>
  138.    </tr>";
  139.  
  140. }else{
  141.  
  142.     echo"<tr>
  143.    <td width=\"150\" id=\"results\">
  144.    &nbsp;
  145.    </td>
  146.    <td width=\"550\" id=\"vote\" align=\"left\">
  147.    <p>
  148.  
  149.    <form action=\"\" onSubmit=\"return isValid()\" method=\"post\" name=\"upload\" enctype=\"multipart/form-data\">
  150.    <br/>
  151.    <strong>Submit your model for battle!</strong>
  152.    <ul>
  153.    <li>Nosotros evaluaremos su imagen antes de que sea visible en linea.</li>
  154.    <li>Las imagenes deben ser de al menos 250x250 pixeles (se recortaran a esta dimension).</li>
  155.    <li>Por favor, no incluir a criaturas menores de 12.</li>
  156.    <li>Imagenes necesita ser girada a la orientacion correcta.</li>
  157.    <li>El tema sera el texto que aparece debajo de la foto</li>
  158.    <li>El Link del tema es el Link donde se llevara cuando den click al texto (Tema)</li>
  159.    <li>.jpg .gif o .png <strong><em>SOLO</em></strong> esos formatos, por favor.</li>
  160.  
  161.    </ul>
  162.    <p>
  163.    <br/><label><strong>Tu Nombre:</strong>&nbsp;</label><input type=\"text\" name=\"name\" id=\"name\" maxlength=\"20\"/> <em>Obligatorio</em>
  164.    <br/><label><strong>Tema:</strong>&nbsp;</label><input type=\"text\" name=\"linktext\" id=\"lintext\"/>
  165.    <br/><label><strong>Link del tema:</strong>&nbsp;</label><input type=\"text\" name=\"linkurl\" id=\"linkurl\"/>
  166.    <br/><label><strong>Archivo:</strong>&nbsp;</label><input type=\"file\" name=\"upfile\" id=\"upfile\" />
  167.    <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>
  168.    <script language=\"JavaScript\">
  169.    hideProgress();
  170.    </script>
  171.  
  172.    </p>
  173.    </form>
  174.    <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>
  175.    </p>
  176.    <p align=\"center\"><a href=\"index.php\"><u>Empezar una nueva votacion!</u></a></p>
  177.    </td>
  178.  
  179.    <td width=\"150\" id=\"sponsor\">";
  180.  
  181.     include('includes/rightbanners.php');
  182.  
  183.     echo"<p align=\"center\">
  184.    &nbsp;
  185.    </p>
  186.    </td>
  187. </tr>";
  188. }
  189.  
  190. ?>
  191.  
  192. </table>
  193. </div>
  194.  
  195. </div>
  196. </body>
  197. </html>

Nota:Se me olvidaba, con lo que dices sobre implementar otro upload, pues seria reescribir todo de nuevo, aunque podría funcionar mejor si TU sabes realmente lo que hace el código y no solo hacer copy/paste de uno que encuentres en internet
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #24 (permalink)  
Antiguo 28/02/2012, 08:38
 
Fecha de Ingreso: enero-2012
Mensajes: 25
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Vulnerabilidad de mi UPLOAD

He pasado la noche enetra comparando codigos y estan igualitos, e inclusive he puesto ese codigo entero y sigue igual, tendre q buscar otro sistema d upload


se puede adaptar??
  #25 (permalink)  
Antiguo 28/02/2012, 18:45
 
Fecha de Ingreso: enero-2012
Mensajes: 25
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Vulnerabilidad de mi UPLOAD

Gracias por todo, ya lo solucioné, puse un código en cada carpeta upload (un .htacess) que excluyera el permiso de ejecutar los archivos subidos...

tambien cambie los permisos, gracias nemutagk mil gracias man!.

gracias bray, gracias a todos!.

Etiquetas: 777, hack, permisos, shell, upload, vulnerabilidad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:43.