Alguien sabe sobre seguridad web

Publicado en 'Seguridad Informática' por loboweb, 28 Feb 2014.





  1. loboweb

    loboweb Miembro frecuente

    Registro:
    12 Dic 2009
    Mensajes:
    82
    Likes:
    4




    Alguien sabe sobre seguridad de paginas web, para evitar que sean hackeados.
    lo que pasa es que yo tengo una pagina web, y siempre paran borrando archivos o sobreescribiendo.
    que precauciones tendria que tomar.
     


  2. Dikver Luna

    Dikver Luna Miembro frecuente

    Registro:
    7 Feb 2014
    Mensajes:
    102
    Likes:
    6
    Hola,

    Soy desarrollador web en diferentes lenguajes.

    Que lenguaje esta desarrollado?, alguna aplicaciones GNU?, tu diseñaste y programaste la web?, que archivos te borran? compartes la cuenta ftp o el cpanel con alguien?

    haber si te puedo ayudar.

    Dikver Luna
     
  3. fredyac

    fredyac Miembro de plata

    Registro:
    4 May 2010
    Mensajes:
    3,724
    Likes:
    776
    Tener una clave fuerte para los acceso de la web, tener buena seguridad en la PC que se trabaja con la web(antivirus, firewall, sistema operativo, etc.), actualizar los scripts que usas en la web, no usar scripts de procedencia dudosa.
     
  4. acidcoolffc

    acidcoolffc Miembro frecuente

    Registro:
    10 Ene 2014
    Mensajes:
    211
    Likes:
    51
    No usar hostings gratuitos que siempre tienen versiones de php mysql obsoletas
     
  5. loboweb

    loboweb Miembro frecuente

    Registro:
    12 Dic 2009
    Mensajes:
    82
    Likes:
    4
    mi hosting es de pago, el lenguaje es PHP con BD mysql.
    no uso ningun CMS ni framework.
    en mi web tengo formularios para logearse y para subir archivos talvez por alli pueden haber entrado.
     
  6. Roydan

    Roydan Miembro maestro

    Registro:
    5 Jun 2007
    Mensajes:
    277
    Likes:
    12
    El Problema esta en el formulario para subir archivos. Es muy comun ese tipo de hackeos a las paginas. revisa tu script y revisa sobre seguridad con php.

    :yeah:
     
  7. Jhobian

    Jhobian Miembro de bronce

    Registro:
    22 Ene 2011
    Mensajes:
    1,226
    Likes:
    234
    Seguro estas usando joomla o wordpress y estas usando admin como usuario.
     
    A ovalencia le gustó este mensaje.
  8. loboweb

    loboweb Miembro frecuente

    Registro:
    12 Dic 2009
    Mensajes:
    82
    Likes:
    4
    mi formulario solo permite archivos de imagenes pero encontre un archivo de este tipo imagen1.jpg.php
     
  9. acidcoolffc

    acidcoolffc Miembro frecuente

    Registro:
    10 Ene 2014
    Mensajes:
    211
    Likes:
    51





    ok parece que tu script no tiene validación para subir solo archivos de imágenes, aquí te dejo un enlace para realizar la verificación. http://www.dinvaders.com/como-subir-fotos-con-php-de-forma-segura/
     
  10. BlackGrunge

    BlackGrunge Miembro nuevo

    Registro:
    20 Oct 2012
    Mensajes:
    23
    Likes:
    2
    Otra cosa es que tu crees que tu formulario solo permite subir imágenes, si encontraste ese archivo es porque tu filtro es muy básico, deberías publicar aquí esa parte de tu código php para fixearlo.
     
  11. acidcoolffc

    acidcoolffc Miembro frecuente

    Registro:
    10 Ene 2014
    Mensajes:
    211
    Likes:
    51
    Ahora para tener mejor validación de que se trata de una imagen, usa la extensión gd de php puedes ver un ejemplo en un comentario del enlace que te pase.
     
  12. BlackGrunge

    BlackGrunge Miembro nuevo

    Registro:
    20 Oct 2012
    Mensajes:
    23
    Likes:
    2
    No recomiendo ese código, a simple vista se puede ver lo vulnerable que es, por suerte no tiene un demo ya que no solo es vulnerable a subir archivos, también tiene XSS, jamás debes filtrar un un archivo por su extensión mime.
     
  13. J0N4

    J0N4 Miembro frecuente

    Registro:
    29 Jun 2013
    Mensajes:
    141
    Likes:
    11
    Cierra la pagina y hazla de 0 :hi:, pero esta vez estudia sobre seguridad en aplicaciones php
     
    Última edición: 14 Mar 2014
  14. loboweb

    loboweb Miembro frecuente

    Registro:
    12 Dic 2009
    Mensajes:
    82
    Likes:
    4
    este es el codigo del upload

    foreach ($_FILES["pictures"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
    $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
    $name = $_FILES["pictures"]["name"][$key];
    $extensiones=array("jpg","JPG","jpeg","gif","GIF","png","PNG","bmp","ico");
    $var = explode(".","$name");
    $num = count($extensiones);
    $valor = $num-1;
    $admitido=false;
    for($i=0; $i<=$valor; $i++) {
    if($extensiones[$i] == $var[1]) {
    $admitido=true;//es una extension valida
    break;
    }
    }
    if (!$admitido){
    //no graba el archivo
    print "no admitido";
    exit();
    }
    move_uploaded_file($tmp_name, "./$name");
    }
    }

    y hay un archivo que no es mio y no puedo cambiarle los permisos y tampoco puedo descargarlo, ya lo he intentado desde el ftp y desde el Cpanel.
     
  15. BlackGrunge

    BlackGrunge Miembro nuevo

    Registro:
    20 Oct 2012
    Mensajes:
    23
    Likes:
    2

    El problema esta en:
    PHP:
    if($extensiones[$i] == $var[1]) {        
    Tu validación esta pensado en buscar la primera extensión de un archivo, más no la extensión final.

    También recuerda que siempre debes de renombrar los archivos que subas a tu servidor, si no lo haces podrías tener problemas de sobreescritura de imágenes, y si tienes un servidor con configuraciones por defecto (dependiendo su versión) podrían subir una shell y ejecutarla con extensión de imágen y pueden hacer otras cosillas más todo por no renombrar un archivo.

    Te dejo en bandeja de plata el código final:
    PHP:
    foreach ($_FILES["pictures"]["error"] as $key => $error) {
       if(
    $error == UPLOAD_ERR_OK) {
            
    $tmp_name $_FILES["pictures"]["tmp_name"][$key];
            
    $name $_FILES["pictures"]["name"][$key];
            
    $extensiones=array('jpg','jpeg','gif','png','bmp','ico');
            
    $var pathinfo($name);
            
    $var $var['extension'];
            
    $size count($extensiones);
            
    $admitido false;
            for(
    $i=0$i<$size$i++) {
                if(
    $extensiones[$i] == strtolower($var)) {
                    
    $admitido=true;
                    break;
                }
            }
            if(!
    $admitido)
                exit(
    'no admitido');
           
    $name substr(md5(uniqid(rand(),true)),0,20).'.'.$var;
           
    move_uploaded_file($tmp_name"./fotos/$name");
       }
    }
    Esto no acaba aquí, ahora tu tarea es limpiar las imágenes para que no suban archivos inyectados, puedes usar la librería GD para hacer esto.

    Por otra parte, nunca debes permitir listar archivos y directorios, desde aquí veo que en tu web lo estas permitiendo :biggrin:, agrega la siguiente linea a tu .htacces de la raiz del sitio:
    Código:
    Options -Indexes
    Tienes mucho por aprender, de seguro tienes infinidades de archivos php y código estructurado por todas partes.. :oops: deberías aprender a dominar un framework y en el basarte para hacer tus proyectos.

    Saludos.
     
    Última edición: 15 Mar 2014