Gracias Gracias:  1
Me Gusta Me Gusta:  2
No me Gusta No me Gusta:  0
Mostrando resultados del 1 al 5 de 5

Tema: qué hacer con un SQLi

  1. #1
    Fecha de Ingreso
    10-diciembre-2009
    Mensajes
    224
    Post Thanks / Like
    Poder de Credibilidad
    11

    qué hacer con un SQLi

    Hola amigos,

    Un gusto saludarlos, espero que éste sea el lugar indicado para hacer la consulta, les hago el planteamiento del siguiente escenario para solicitarles el favor de brindarme algunas ideas:

    Tengo una web pequeña PHP 7.2 y MariaDB, desarrollada sin Framework ni CMS, es decir, a pie!!

    Ya la estoy actualizando y montando sobre un Wordpress pero resulta que esta muy mal hecha que es vulnerable fácilmente a ataques de SQLi, ya he visto dos modificaciones no autorizadas en la base de datos, me recupero con un backcup pero vuelve a ocurrir, entiendo que mientras no solvente las partes del código que fueron mal desarrolladas esto no va a parar, pero la consulta es ¿Habrá alguna forma de identificar el origen del ataque para poder aplicar una restricción? o ¿Cómo hacer para prevenir que esto pase mientras aplico la solución definitiva?

    Muchas gracias desde ya por sus ideas.

    Saludos,

  2. #2
    Fecha de Ingreso
    19-marzo-2005
    Ubicación
    En un lugar del planeta Tierra
    Mensajes
    17.593
    Post Thanks / Like
    Poder de Credibilidad
    10
    Hola @darktux

    Lo tienes muy fácil o muy difícil, te cuento.

    Las restricciones se puede hacer via firewall o modificando Apache para restringir que IPs puede acceder. Si solo accede dos usuarios con una IP cada uno, solo tienes que modificar la configuración para denegar el acceso a TODOS excepto esas dos IPs. Pero te cuidado, no vayas a restringir tu propia IP, pero esta solución no es aplicable si necesitas tener esa Web y su base de datos accesible a todo el mundo salvo que el acceso a la BBDD se haga en una determinada carpeta www.pepe.com/acceso dentro de la carpeta acceso que esta tus programas puedes crear un archivo .htaccess con las IPs autorizadas.

    Mas informacion: Apache restringir acceso por IP

    La otra solución, implica crear un programa PHP de acceso, con login y password, para después modificar todo el codigo PHP existente para insertar después del "<?php" algo similar a esto:

    Código PHP:
    <?php    
    session_start
    ();        
    if (empty(
    $_SESSION)) {
             
    header('Location: https://'.$_SERVER['HTTP_HOST']);
            die();        
    }
    if ( !isset(
    $_SESSION['authuser']) || $_SESSION['authuser'] != ) {
            echo 
    'Por favor, autentificase con su usuario y contraseña en este enlace: <a href="login.php">Inicializar sesión</a>';
            exit(
    1);    
    }
    En el login.php tienes que autentificar el usuario dentro de programa o consultando a la BBDD y poner una variable de sesión como autorizado: $_SESSION['authuser'] = 1;.

    Código PHP:
    if ( $valid ) {
            
    $_SESSION['usuario'] = $usuario;
            
    $_SESSION['rol'] = $rol;
            
    $_SESSION['authuser'] = 1;
            if (
    $recordarme == "on") {
                
    setcookie("pma_data"hash('sha512',$usuario), time() + 60 60 24 7);
            }       
            
    header ('Location: index.php');
            exit;

    NORMAS A CUMPLIR EN LOS FOROS (Lectura obligatoria) Lo siento, no contesto privados sobre problemas con GNU/Linux.
    Síguenos en TWITTER y en FACEBOOK
    Código:
    Buscador de   Alojamiento      Alojamiento     Otros
     paquetes:    de imágenes:     de ficheros:    buscadores:
    Search        TinyPic          Ifile Wuala     Simple y Facil
    Webpinstant   Paste Suse       SendSpace       TextSnip  Cl1p

  3. Gracias darktux ha agradecido este mensaje
    Me Gusta darktux, victorhck le ha gustado este mensaje
  4. #3
    Fecha de Ingreso
    10-diciembre-2009
    Mensajes
    224
    Post Thanks / Like
    Poder de Credibilidad
    11
    Estimado amigo @DiabloRojo

    Como siempre un gran aporte y ayuda la tuya, comienzo con la parte más fácil del filtrado y luego ir saneando a pie las partes del código que necesito.

    Saludos

  5. #4
    Fecha de Ingreso
    03-abril-2007
    Ubicación
    Mexico/SanLuisPotosi
    Mensajes
    903
    Post Thanks / Like
    Poder de Credibilidad
    14
    Lo mas sano y seguro, seria sanitizar las peticiones a la base de datos, si estas usando php puedes utilizar mysql_real_scape_string para evitar la inyección.

    Código:
    <?php
    ...
    ...
    ...
    # Suponiendo que la variable afectada es "id"
    #http://localhost/index.php?id=22
    $getid=$_GET["id"];
    $consulta = mysql_real_escape_string("SELECT * FROM users WHERE id='$getid'"); #consulta a la base de datos tomando el valor de la variable id en la url
    mysql_query($consulta);
    ...
    ...
    
    También trata de no imprimir el error de mysql (... or die ( mysql_error() ) ... ) ya que eso es lo que se busca ya sea manualmente o con algún programa como sqlmap para lograr la inyección.
    Incluso sustituirlo por algo personalizado (... or die ("fallo en la consulta X") ...) así con suerte los programas lo tomen como falso positivo y ahora la inyección sera a ciegas (blind injection) que es muchísimo mas difícil de explotar.
    Saludos.
    __________________________________________________

    Mi Blog:
    http://elblogdedarkspark.blogspot.mx/
    Canales de Youtube:
    http://www.youtube.com/user/DarkSpark2099
    http://www.youtube.com/user/defton En des-uso

  6. #5
    Fecha de Ingreso
    19-marzo-2005
    Ubicación
    En un lugar del planeta Tierra
    Mensajes
    17.593
    Post Thanks / Like
    Poder de Credibilidad
    10
    Coincido con el compañero @Defton, es la mejor opción.

    Usando Notepad++ en Windows o Kate o Geany en Linux puedes usar la opción buscar y reemplazar para cambiar las entradas de las variables de tus programas.

    En mi caso no lo necesito porque uso PDO que ya viene con las opciones preparadas pare evitar SQLi. Lee este articulo: https://es.stackoverflow.com/questio...B3n-sql-en-php
    NORMAS A CUMPLIR EN LOS FOROS (Lectura obligatoria) Lo siento, no contesto privados sobre problemas con GNU/Linux.
    Síguenos en TWITTER y en FACEBOOK
    Código:
    Buscador de   Alojamiento      Alojamiento     Otros
     paquetes:    de imágenes:     de ficheros:    buscadores:
    Search        TinyPic          Ifile Wuala     Simple y Facil
    Webpinstant   Paste Suse       SendSpace       TextSnip  Cl1p

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Temas Similares

  1. Hacer un dvd instalable de mi sistema
    By Juanca_66 in forum Software
    Respuestas: 3
    Último mensaje: 03-jun-2011, 22:14
  2. Tenemos que hacer telnet antes de poder hacer ssh, como? para qué?
    By sruedat in forum Internet, Redes y Wireless
    Respuestas: 4
    Último mensaje: 15-dic-2010, 14:14
  3. hacer telnet a mis puestos
    By cejodrake in forum Internet, Redes y Wireless
    Respuestas: 0
    Último mensaje: 14-oct-2006, 00:22
  4. que hacer
    By dudoso in forum General OpenSUSE
    Respuestas: 0
    Último mensaje: 30-jun-2006, 17:55
  5. ktorrrent no trabaja, que hacer
    By raav6 in forum Software
    Respuestas: 1
    Último mensaje: 17-feb-2006, 21:32

Marcadores

Normas de Publicación

  • No puedes crear nuevos temas
  • No puedes responder mensajes
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •