elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  Vulnerabilidad en la subida de imagenes
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: Vulnerabilidad en la subida de imagenes  (Leído 15,224 veces)
50l3r


Desconectado Desconectado

Mensajes: 784


Solo se que se algo pero no me acuerdo


Ver Perfil WWW
Vulnerabilidad en la subida de imagenes
« en: 1 Septiembre 2009, 02:38 am »

Veran, tengo una web dedicada al hosting de imagenes .gif .jpg y .png de maximo 5 megas

Segun mi cabeza, y aun asi ya visto en mi web, se puede subir a esta webshells c99 y demas con extension .jpg por ejemplo y dar ordenes desde estas

Como se repara este fallo de seguridad? aun nose si mi web es vulnerable, se algo de la vulnerabilidad pero no como protegerme

saludos
En línea

Og.


Desconectado Desconectado

Mensajes: 822


Aprendiendo de la vida


Ver Perfil
Re: Vulnerabilidad en la subida de imagenes
« Respuesta #1 en: 1 Septiembre 2009, 05:10 am »

Veran, tengo una web dedicada al hosting de imagenes .gif .jpg y .png de maximo 5 megas

Segun mi cabeza, y aun asi ya visto en mi web, se puede subir a esta webshells c99 y demas con extension .jpg por ejemplo y dar ordenes desde estas

Como se repara este fallo de seguridad? aun nose si mi web es vulnerable, se algo de la vulnerabilidad pero no como protegerme

saludos

esto va en nivel web, puedes poner el filtro que usas?
En línea

|-
50l3r


Desconectado Desconectado

Mensajes: 784


Solo se que se algo pero no me acuerdo


Ver Perfil WWW
Re: Vulnerabilidad en la subida de imagenes
« Respuesta #2 en: 1 Septiembre 2009, 10:24 am »

si te refieres al upload, claro aqui te lo dejo:

Código
  1. <html>
  2. <head>
  3. <title>Subiendo Imagen</title>
  4. <link href="CSS/styles.css" rel="stylesheet" type="text/css" />
  5. <style type="text/css">
  6. .principal2_titulo{
  7.        background: #202020 url("CSS/Images/back_title.jpg") bottom left repeat-x;
  8. width:85%;
  9. height:auto;
  10. background-color:#000000;
  11. border-style:solid;
  12. border-width:0px;
  13. border-color:#000000;
  14. margin:0 5px 0 0px;
  15. padding:4px;
  16. }
  17.  
  18. .principal2{
  19. width:85%;
  20. height:auto;
  21. background-color:#202020;
  22. border-style:solid;
  23. border-width:1px;
  24. border-color:#000000;
  25. margin:0 5px 0 0px;
  26. padding:3px;
  27. text-align:left;
  28. }
  29. </style>
  30. </head>
  31. <body>
  32. <a href="index.html"><div id="imagen_fijada"><img src="Images/uploadmore.png" border=0 alt="Sube mas imagenes"></div></a>
  33. <div class="header"><center><img src="Images/Titulo.png"></center>
  34. <br><br>
  35. <center><div class='principal2_titulo'>Imagen</div>
  36. <div class='principal2'>
  37. <?php
  38. //tomo el valor de un elemento de tipo texto del formulario
  39. $cadenatexto = htmlentities($_POST["cadenatexto"]);
  40. echo "<center><b>Hola " . $cadenatexto . " gracias por participar en este proyecto :)</b></center><br><br>";
  41. //datos del arhivo
  42. $nombre_archivo = $_FILES['userfile']['name'];
  43. $tipo_archivo = $_FILES['userfile']['type'];
  44. $tamano_archivo = $_FILES['userfile']['size'];
  45. $ruta = "BlackBox/";
  46. $aleatorio= rand(0,50000);
  47. //compruebo si las características del archivo son las que deseo
  48. if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg") || strpos($tipo_archivo, "png")) && ($tamano_archivo < 5000000))) {
  49.    echo "La extensión o el tamaño de los archivos no es correcta:<br><br><table><tr><td><li>Se permiten archivos .gif, .jpg o .png<br><li>Se permiten archivos de 5MB máximo<br>Los nombres de imagenes deben tener estos caracteres: [a-z] [0-9] ^$.</td></tr></table>";
  50. }else{
  51.    if (move_uploaded_file($_FILES['userfile']['tmp_name'], "$ruta $aleatorio $nombre_archivo")){
  52.       echo "<center><img src='$ruta $aleatorio $nombre_archivo' alt='tu imagen' onload='if(this.width > 1024 || this.height >768) {this.width=1024; this.height=768;}'></center>";
  53.   echo "<center><div style='color:#F8485D;'><i>" .$nombre_archivo. "</i></div><br>Imagen cargada correctamente<br><br></center>";
  54.       echo "<center><h3>Link Directo:</h3></center>";  
  55.   echo "<center><h4>http://black-box.no-ip.info/$ruta$aleatorio$nombre_archivo</h4></center>";
  56.    }else{
  57.       echo "Ocurrió algún error al subir el fichero. No pudo guardarse";
  58.    }
  59. }
  60. ?>
  61. </div></Center>
  62. </body>
  63. </html>

SUPUESTAMENTE, el filtro no deja pasar archivos que no sean png, jpg y gif de tamaño mayor a 5mb, pero por lo que vi si que se puede
En línea

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


Ver Perfil WWW
Re: Vulnerabilidad en la subida de imagenes
« Respuesta #3 en: 1 Septiembre 2009, 21:22 pm »

Se logra cambiando el tipo en las cabeceras cuando lo envias :xD

Se me ocurre que con GD resizes la imagen un pixcel, si no es imagen te dara error al hacer eso, si da error entonces mandas msg de error xD

Tambien podrias "vaciar" el contenido del archivo y buscar alguna cadena de las shells mas comunes y decir "HDP no se vale juakearme" :xD
En línea

Darioxhcx


Desconectado Desconectado

Mensajes: 2.294


Ver Perfil
Re: Vulnerabilidad en la subida de imagenes
« Respuesta #4 en: 1 Septiembre 2009, 22:15 pm »

renombrar el archivo al finalizar la subida...
creo que se podria hacer mucho , si no krackwar habia puesto un upload seguro...
pero nu se (?
saludos
En línea

50l3r


Desconectado Desconectado

Mensajes: 784


Solo se que se algo pero no me acuerdo


Ver Perfil WWW
Re: Vulnerabilidad en la subida de imagenes
« Respuesta #5 en: 2 Septiembre 2009, 01:51 am »

mmm renombrar el archivo puede ser una opcion pero se acabaria averiguando ya que la web da el mismo link de la imagen para poder indexarlo en foros y demas y no valdria no?

aun asi, yo ya lo renombro, pongo un numero aleatorio antes del nombre para que las imagenes que tengan el mismo nombre no se sobreescriban


Código:
Se logra cambiando el tipo en las cabeceras cuando lo envias :xD

Se me ocurre que con GD resizes la imagen un pixcel, si no es imagen te dara error al hacer eso, si da error entonces mandas msg de error xD

Tambien podrias "vaciar" el contenido del archivo y buscar alguna cadena de las shells mas comunes y decir "HDP no se vale juakearme" :xD

azielito, a que te refieres cambiando el tipo en las cabeceras?
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Vulnerabilidad en la subida de imagenes
« Respuesta #6 en: 2 Septiembre 2009, 06:24 am »

lo que debes hacer es verificar la extensión en el caso de que no tengas GD ya que por defecto no viene en php.

Código
  1. <?php
  2. function verifica_extension($archivo, $permitidos){
  3. if(!eregi('.', $archivo)) return false; // No tiene extension
  4. /* Separa extensión */
  5. $extension = explode('.', $archivo);
  6. $extension = $extension[count($extension) - 1];
  7. foreach($permitidos as $permitido){
  8.  if(strtolower($permitido) == strtolower($extension)){
  9.   return true; // Permitido
  10.  }
  11. }
  12. return false; // No permitido
  13. }
  14.  
  15. $permitidos = array('jpg','jpeg','png','gif','bmp','svg');
  16. if(verifica_extension($_FILES['userfile']['name'], $permitidos)){
  17. mueve , procesa y todo lo demás .....
  18. }else{
  19. muestra el mensaje de error que la extension no es valida ....
  20. }
  21. ?>

Además puedes quitarle el permiso de ejecución al directorio por si las dudas.


Citar
azielito, a que te refieres cambiando el tipo en las cabeceras?

Citar
POST /script.php HTTP/1.1
Host: 127.0.0.1
Connection: close
Content-Type: multipart/form-data; boundary=---------------------------00000000000001
Content-Length: 169

-----------------------------00000000000001
Content-Disposition: form-data; name="archivo"; filename="shell.php"
Content-Type: application/png

<?php phpinfo(); ?>
« Última modificación: 2 Septiembre 2009, 06:31 am por WHK » En línea

50l3r


Desconectado Desconectado

Mensajes: 784


Solo se que se algo pero no me acuerdo


Ver Perfil WWW
Re: Vulnerabilidad en la subida de imagenes
« Respuesta #7 en: 2 Septiembre 2009, 14:06 pm »

Bueno, ya comprendi el php aun sin saber medianamente el lenguaje

lo modifique un poco y en vez de usar funcion php lo acople directamente a lo que tenia

ya lo comprobe y cambiando las cabeceras aun asi no resulta

podria pasaros a alguno el enlace por mp y me decis si esta correcto? hice la prueba y esta bien pero nose si tendra algun agujerito por otro lado

si estais de acuerdo decirmelo por aqui y muchas gracias, abro de nuevo mi web :)
« Última modificación: 2 Septiembre 2009, 16:50 pm por 50l3r » En línea

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


Ver Perfil WWW
Re: Vulnerabilidad en la subida de imagenes
« Respuesta #8 en: 4 Septiembre 2009, 18:11 pm »

Pone aqui la url, y su source para que los que saben mas intenten vulnerarlo y ver que fallas tienen :D
En línea

50l3r


Desconectado Desconectado

Mensajes: 784


Solo se que se algo pero no me acuerdo


Ver Perfil WWW
Re: Vulnerabilidad en la subida de imagenes
« Respuesta #9 en: 4 Septiembre 2009, 18:40 pm »

pero 0% intencion spam:

black-box.es.gd

Código
  1. <html>
  2. <head>
  3. <title>Subiendo Imagen</title>
  4. <link href="CSS/styles.css" rel="stylesheet" type="text/css" />
  5. <LINK REL="SHORTCUT ICON" HREF="Images/blackico.ico">
  6. <style type="text/css">
  7. .principal2_titulo{
  8.        background: #202020 url("CSS/Images/back_title.jpg") bottom left repeat-x;
  9. width:85%;
  10. height:auto;
  11. background-color:#000000;
  12. border-style:solid;
  13. border-width:0px;
  14. border-color:#000000;
  15. margin:0 5px 0 0px;
  16. padding:4px;
  17. }
  18.  
  19. .principal2{
  20. width:85%;
  21. height:auto;
  22. background-color:#202020;
  23. border-style:solid;
  24. border-width:1px;
  25. border-color:#000000;
  26. margin:0 5px 0 0px;
  27. padding:3px;
  28. text-align:left;
  29. }
  30. </style>
  31. </head>
  32. <body>
  33. <a href="index.html"><div id="imagen_fijada"><img src="Images/uploadmore.png" border=0 alt="Sube mas imagenes"></div></a>
  34. <div class="header"><center><img src="Images/Titulo.png"></center>
  35. <br><br>
  36. <center><div class='principal2_titulo'>Imagen</div>
  37. <div class='principal2'>
  38.  
  39.  
  40. <?php
  41. //definiendo varaiables
  42. $cadenatexto = htmlentities($_POST["cadenatexto"]);
  43. $chkcon = isset($_POST["chkcon"]);
  44. $chkvis = isset($_POST["chkvis"]);
  45. $chkwall = isset($_POST["chkwall"]);
  46. $nombre_archivo = $_FILES['userfile']['name'];
  47. $tamano_archivo = $_FILES['userfile']['size'];
  48. $ruta = "BlackBox/";
  49. $ruta_concurso = "Escritorios/";
  50. $ruta_muro = "Muro-pendiente/";
  51. $ruta_invisible= "no-visibles/";
  52. $aleatorio= rand(0,50000);
  53. $permitidos = array('jpg','jpeg','png','gif','bmp','svg','ico');
  54.  
  55.  
  56. if ($nombre_archivo=="" || $cadenatexto==""){
  57. echo "<center><div style='color:#ec2929;'>Ups¡¡ ha ocurrido un error :/ puede deberse a:</div><br></center>";
  58. echo "<li>No has escrito tu nombre";
  59. echo "<li>No has especificado la imagen a enviar";}else{
  60.  
  61. echo "<center><b>Hola " . $cadenatexto . " gracias por participar en este proyecto :)</b></center><br><br>";
  62.  
  63. if (eregi('.',$nombre_archivo)) {
  64. $extension = explode('.', $nombre_archivo);
  65. $extension = $extension[count($extension) -1];
  66.  
  67. foreach($permitidos as $permitido){
  68. if (strtolower($permitido) == strtolower($extension)&& tamano_archivo < 20000000){
  69.  
  70. if ($chkcon==1) {
  71. if (copy($_FILES['userfile']['tmp_name'], "$ruta_concurso$aleatorio$nombre_archivo")){
  72.   echo "<div style='color:#bcea64;'><li>Su imagen esta puesta en el desfile de escritorios, si su escritorio tiene estilo podra estar en el album de la Caja Negra</div><br><br>";
  73. }else{
  74.   echo "<table>La extensióncita o el tamaño de los archivos no es correcta:<br><br><tr><li>Se permiten archivos .gif, .jpg/.jpeg, .png, .bmp y .svg<br><li>Se permiten archivos de 2MB máximo</tr></table>";}}
  75.  
  76. if ($chkwall==1){  
  77. if (copy($_FILES['userfile']['tmp_name'], "$ruta_muro$aleatorio$nombre_archivo")){
  78.   echo "<div style='color:#f1283f;'><li>Su imagen sera insertada en el muro, espere hasta que se valide</div><br><br>";
  79. }else{
  80.   echo "<table>La extensión o el tamaño de los archivos no es correcta:<br><br><tr><li>Se permiten archivos .gif, .jpg/.jpeg, .png, .bmp y .svg<br><li>Se permiten archivos de 2MB máximo</tr></table>";}}  
  81.  
  82.  
  83. if ($chkvis==1){
  84. if (copy($_FILES['userfile']['tmp_name'], "$ruta$aleatorio$nombre_archivo")){
  85.       echo "<center><img src='$ruta$aleatorio$nombre_archivo' alt='tu imagen' onload='if(this.width > 1024 || this.height >768) {this.width=1024; this.height=768;}'></center>";
  86.   echo "<center><div style='color:#7fbbcc;'><i>" .$nombre_archivo. "</i></div><br>Estado de visibilidad de tu imagen:<br><img src='Images/visible.png' title='Imagen cargada como visible' alt='Imagen cargada y visible en la portada'><br><br></center>";
  87.       echo "<hr>";
  88.   echo "<center><h3><div style='color:#bcea64;'>Link Directo:</div></h3></center>";  
  89.   echo "<center><h4>http://black-box.no-ip.info/$ruta$aleatorio$nombre_archivo</h4></center><br>";
  90.   echo "<hr>";
  91.   echo "<center><h3><div style='color:#f1283f;'>BBCODE:</div></h3></center>";  
  92.   echo "<center><h4>[img]http://black-box.no-ip.info/$ruta$aleatorio$nombre_archivo&#38;#91&#38;#47img&#38;#93</h4></center><br>";
  93.   echo "<hr>";
  94.   echo "<center><h3><div style='color:#7fbbcc;;'>HTML:</div></h3></center>";  
  95.   echo "<center><h4>&#38;#60img src=&#38;#34http://black-box.no-ip.info/$ruta$aleatorio$nombre_archivo&#38;#34&#38;#62</h4></center><br>";
  96. }else{
  97.   echo "<table>La extensión o el tamañito de los archivos no es correcta:<br><br><tr><li>Se permiten archivos .gif, .jpg/.jpeg, .png, .bmp y .svg<br><li>Se permiten archivos de 2MB máximo</tr></table>";
  98.   }}else{
  99.  
  100.   if (copy($_FILES['userfile']['tmp_name'], "$ruta_invisible$aleatorio$nombre_archivo")){
  101.       echo "<center><img src='$ruta_invisible$aleatorio$nombre_archivo' alt='tu imagen' onload='if(this.width > 1024 || this.height >768) {this.width=1024; this.height=768;}'></center>";
  102.   echo "<center><div style='color:#f1d27d;'><i>" .$nombre_archivo. "</i></div><br><img src='Images/invisible.jpg' title='Imagen cargada como invisible' alt='Imagen cargada como invisible'><br><br></center>";
  103.       echo "<hr>";
  104.   echo "<center><h3><div style='color:#bcea64;'>Link Directo:</div></h3></center>";  
  105.   echo "<center><h4>http://black-box.no-ip.info/$ruta$aleatorio$nombre_archivo</h4></center><br>";
  106.   echo "<hr>";
  107.   echo "<center><h3><div style='color:#f1283f;'>BBCODE:</div></h3></center>";  
  108.   echo "<center><h4>[img]http://black-box.no-ip.info/$ruta$aleatorio$nombre_archivo&#38;#91&#38;#47img&#38;#93</h4></center><br>";
  109.   echo "<hr>";
  110.   echo "<center><h3><div style='color:#7fbbcc;;'>HTML:</div></h3></center>";  
  111.   echo "<center><h4>&#38;#60img src=&#38;#34http://black-box.no-ip.info/$ruta$aleatorio$nombre_archivo&#38;#34&#38;#62</h4></center><br>";
  112. }else{
  113.   echo "<table>La extensión o el tamaño de los archivos no es correcta:<br><br><tr><li>Se permiten archivos .gif, .jpg/.jpeg, .png, .bmp y .svg<br><li>Se permiten archivos de 2MB máximo</tr></table>";}
  114.  
  115. }
  116. }
  117. }
  118. }
  119. }
  120. ?>
  121.  
  122.  
  123. </div></Center>
  124. </body>
  125. </html>
En línea

Páginas: [1] 2 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
javascript para la subida de imagenes en una pagina web
Desarrollo Web
condorito 0 1,696 Último mensaje 13 Marzo 2017, 06:48 am
por condorito
Que programacion para rellenar formulario web con subida de imagenes
.NET (C#, VB.NET, ASP)
nomed 5 5,078 Último mensaje 11 Junio 2017, 21:47 pm
por nomed
[Pregunta]: ¿Como validar CORRECTAMENTE la subida de imagenes?
Desarrollo Web
Leguim 3 2,450 Último mensaje 21 Julio 2019, 04:42 am
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines