Autor Tema: Clase para generar log de intentos de defacing, XSS, RFI, SQL I.  (Leído 4488 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Sombrero de paja Molder

  • Sombrero de Paja
  • Mensajes: 22
  • Liked: 0
  • Sombrero de Paja
    • Aztlan Hack
Clase para generar log de intentos de defacing, XSS, RFI, SQL I.
« : septiembre 26, 2008, 05:41:30 pm »
Esta es una clase que genera un log, mandamos llamar la clase donde necesitemos general el log de las acciones realisadas pore los usuarios, como por ejemplo en un sistema de logeo.

Soportada para php4 y php 5, metodo para poder ver la IP real del usuario la cual aprendi por el articulo de nitr0us de la ezine 5 de RTM.
Código: [Seleccionar]

<?php
// By Molder: molder@aztlan-hack.org
// www.aztlan-hack.org


$_Log = 200;
define("LOG_SUCCESS",         $_Log++);
define("ATACK_DETECT",         $_Log++);

$XSS         = array(">", "<", "&lt;", "&gt;");
$SQL_INJECTION   = array("=\'", "= \'","='","= '", "\/\*\*\/"," and ", " or ", "\\'");
$RFI         = array("=http://");

class LOG_ERROR
{

  
   function LOG_ERROR()
   {
      $this->Init();
   }
  
   function Init()
   {
   }
  
  
   function IP_REAL()
   {
      if (isset($_SERVER))
      {
         if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
            return $_SERVER["HTTP_X_FORWARDED_FOR"];
         if (isset($_SERVER["HTTP_CLIENT_IP"]))
            return $_SERVER["HTTP_CLIENT_IP"];
        
         return $_SERVER["REMOTE_ADDR"];
      }
      
      if (getenv('HTTP_X_FORWARDED_FOR'))
         return getenv('HTTP_X_FORWARDED_FOR');
      if (getenv('HTTP_CLIENT_IP'))
         return getenv('HTTP_CLIENT_IP');
      
      return getenv('REMOTE_ADDR');
   }
  
   function ValidaURL()
   {
      global $RFI;
      $tags = '('.implode($RFI, ')|(').')';

      if (eregi($tags, urlencode($_SERVER['REQUEST_URI'])) || eregi($tags, urldecode($_SERVER['REQUEST_URI'])))
      {
            return "RFI: [".$_SERVER['REQUEST_URI']."]";
      }
      
      return LOG_SUCCESS;
   }
  

  
   function ValidaINYECCIONES($variables)
   {
      if($variables == "")
      {
         return LOG_SUCCESS;
      }
      
      global $SQL_INJECTION;
      global $XSS;
  
      
      foreach($variables as $campo => $valor)
      {
         if(!empty($valor))
         {
            $tags = '('.implode($SQL_INJECTION, ')|(').')';
            
            if (eregi($tags, urldecode($valor)) || eregi($tags, urldecode($valor)))
            {
               return "SQL INJECTION:[$campo][".htmlentities($valor)."]";
            }
                  
            
            $tags = '('.implode($XSS, ')|(').')';
            
            
            if (eregi($tags, urlencode($valor)) || eregi($tags, urldecode($valor)))
            {
               return "XSS:[$campo][".htmlentities($valor)."]";
            }

         }
      }
      
      
      return LOG_SUCCESS;
   }
  
  
   function LogsError($seccion, $variables)
   {
      switch($seccion)
      {
         case 'URL':
            $result = $this->ValidaURL();
            break;
         default:
            $result = $this->ValidaINYECCIONES($variables);
            break;
      }
      
      
      if($result != LOG_SUCCESS)
      {
         $nvoregistro = array(      
                     'fecha'      =>   date('Y-m-d'),
                     'hora'      =>   date('H:i:s'),
                     'ip'      =>   $this->IP_REAL(),
                     'seccion'   =>   $seccion,
                     'error'      =>   addslashes($result)
                     );
        
                                               //Aki estan los resultados del Log, guardar como mejor paresca.

         return $result;
      
      }
   }
}

$MyLog = new LOG_ERROR;

$MyLog->LogsError('URL', '')//ejemplo RFI

$variables =  arry("usuario" => $_POST['usuario'],"password" =>$_POST['password']);

$MyLog->LogsError('Login', $variables)//ejemplo 2
 

salu2
« Última Modificación: agosto 05, 2011, 12:51:24 pm por Molder »
www.aztlan-hack.org  || Aztlan Hack

nitr0us

  • ***
  • Mensajes: 359
  • Liked: 99
  • #rm -fr /
    • http://www.brainoverflow.org
Re: Clase para generar log de intentos de defacing, XSS, RFI, SQL I.
« Respuesta #1 : septiembre 26, 2008, 09:30:27 pm »
Nada más te comento que ese código fué lo más básico posible, en realidad, tendrías que poner mm sanitización a X-Forwarded-For (o cualquier otro header relacionado con IP que el usuario pueda modificar), ya que es fácil modificarlo y podrían resultar comportamientos indefinidos en tu código o simplemente no funcionar. Pasa la IP por una función para verificar que en verdad se trata de una dirección IP.

Está buena la idea.
saludos.