elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
30 Agosto 2008, 15:28  



+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking Avanzado (Moderadores: ANELKAOS, zhyzura)
| | |-+  PHP Security-Shell RFI Scanner v1.0
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: PHP Security-Shell RFI Scanner v1.0  (Leído 842 veces)
cacadegalinha

Desconectado Desconectado

Mensajes: 7


Ver Perfil
PHP Security-Shell RFI Scanner v1.0
« en: 04 Noviembre 2007, 02:01 »

It works in windows and linux.

Only you have to compile the tool, and in the same folder you have to put the script you wanth to scan for find a vulnerability R.F.I


you download some new script like powered by phpbb,
and with this tool we can test locally if is vulnerable to remote file inclusion.

Enjoy and have fun  :D

<?php
/***************************************************************************
 *   PHP Security-Shell RFI Scanner v1.0                                   *
 *                                                                         * 
 *   Copyright (C) 2007 by pentest                                         *
 *                                                                         *
 *   http://security-shell.uni.cc                                          *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 ***************************************************************************/
    
    
$escan_inc_regex   = array( '/include(_once)?.\$/ix''/require(_once)?.\$/ix' );
    
/* Regex to extract the names of variables */
    
$escan_var_regex   = array( '/\Ainclude(_once)?./is''/\Arequire(_once)?./is' );
    
/* Array of file extensions to scan */
    
$escan_valid_ext   = array( 'php' );
    
/* Maximum size of a file to scan, scans all if 0 */
    
$escan_max_size    0;
    
/* Counter crawled directory */ 
    
$escan_dir_count   0;
    
/* Perpetual scanned files */
    
$escan_file_count  0;
    
/* Perpetual potential rfi found */
    
$escan_match_count 0;
    
/*Perpetual crawled total bytes */
    
$escan_byte_count  0;

    
escan_banner();


    if( 
$argc ){
        
escan_usage($argv[0]);
    }
    else{   

        
$stime escan_get_mtime();

        
escan_recurse_dirrealpath($argv[1]).DIRECTORY_SEPARATOR );

        
$etime escan_get_mtime();

        print 
"\n@ Scan report : \n\n" .
              
"\t$escan_dir_count directory .\n".
              
"\t$escan_file_count file .\n".
              
"\t" escan_format_size($escan_byte_count) . " .\n".
              
"\t$escan_match_count Potential RFI .\n"
              
"\t".($etime-$stime) . " Second Processing .\n\n";
    }

    
/* A string formats in a magnitude expressed in bytes */
    
function escan_format_size($bytes)
    {
        if( 
$bytes 1024       ) return "$bytes bytes";
        if( 
$bytes 1048576    ) return ($bytes 1024) . " Kb";
        if( 
$bytes 1073741824 ) return ($bytes 1048576) . " Mb";
        
        return (
$bytes 1073741824) . " Gb";
    }
    
    
/* Returns the timestamp in seconds */
    
function escan_get_mtime()
    {
        list(
$usec$sec) = explode(" ",microtime());
        return ((float)
$usec + (float)$sec);
    } 

    
/* Extracts line of code inclusion */
    
function escan_scan_line($content,$offset)
    {
        list( 
$line$dummy ) = explode";" substr($content,$offset,strlen($content)) );
        
        return 
$line.";";
    }

    
/* Extract the variable name from line of code inclusion */
    
function escan_parse_var$line$regex_id )
    {
        global 
$escan_var_regex;
       
        
$vars       preg_split($escan_var_regex[$regex_id],$line);
        
$varname    $vars[1];
        
$delimiters " .);";

        for( 
$i 0$i strlen($varname); $i++ ){
            for( 
$j 0$j strlen($delimiters); $j++ ){
                if(
$varname[$i] == $delimiters[$j]){
                    return 
substr$varname0$i );
                }
            }
        }

        return 
$varname;
    }

    
/* Check if the variable $var is defined in $content before position $offset*/
    
function escan_check_definitions($content,$offset,$var)
    {
        if( 
strpos$var"->" ) ){
            return 
1;
        }

        
$chunk substr($content,0,$offset);
        
$regex "/".preg_quote($var,"/")."\s*=/ix";
        
preg_match$regex$chunk,$matches );

        return 
count($matches);
    }

    
/* $file the file to check for potential rfi */
    
function escan_parse_file($file)   
    {
        global 
$escan_inc_regex;       
        global 
$escan_max_size;
        global 
$escan_file_count;
        global 
$escan_match_count;
        global 
$escan_byte_count;

        
$fsize filesize($file);

        if( 
$escan_max_size && $fsize $escan_max_size ) return;

        
$escan_file_count++;
        
$escan_byte_count += $fsize;

        
$content = @file_get_contents($file);

        for( 
$i 0$i count($escan_inc_regex); $i++ ){
            if( 
preg_match_all$escan_inc_regex[$i], $content$matchesPREG_OFFSET_CAPTURE ) ){       
                
                
$nmatch count($matches[0]);

                for( 
$j 0$j $nmatch$j++ ){
                    
$offset $matches[0][$j][1];
                    
$line   escan_scan_line($content,$offset);
                    
$var    escan_parse_var($line,$i);
                    
                    if( 
escan_check_definitions($content,$offset,$var) == )
                    {
                        
$escan_match_count++;
                        print 
"@ $file - \n\t- '$var' The position $offset .\n";
                    }
                }
            }
        }
    }
    
    
/* Returns the file extension $fname */
    
function escan_get_file_ext($fname)
    {
        if( 
strchr($fname,'.') ){
            return 
substr($fname,strrpos($fname,'.')+1);
        }
        else{
            return 
"";
        }
    }

    
/* Check if file $fname is a valid extension */
    
function escan_isvalid_ext($fname)
    {
        global 
$escan_valid_ext;

        for( 
$i 0$i count($escan_valid_ext); $i++ ){
            if(
strstr(escan_get_file_ext($fname),$escan_valid_ext[$i])){
                return 
true;
            }
        }

        return 
false;
    }

    
/* That function scans directories recursively */
    
function escan_recurse_dir($dir
    {         
        global 
$escan_dir_count;
        
        
$escan_dir_count++;

        if( 
$cdir = @dir($dir) ){
            while( 
$entry $cdir->read() ){
                if( 
$entry != '.' && $entry != '..' ){
                    if( 
is_dir($dir.$entry) ){
                        
escan_recurse_dir($dir.$entry.DIRECTORY_SEPARATOR);
                    }
                    else{
                        if( 
escan_isvalid_ext($dir.$entry) ){
                            
escan_parse_file($dir.$entry);
                        }
                    }       
                }
            }
    
            
$cdir->close();
        }
    }

    function 
escan_banner()
    {
        print 
"*-----------------------------------------------------*\n" .
              
"*   PHP Security-Shell RFI Scanner v1.0  by pentest   *\n" .
              
"*                                                     *\n" .
              
"*             http://security-shell.uni.cc            *\n" .
              
"*-----------------------------------------------------*\n\n";
    }
    
    function 
escan_usage($pname)
    {
        print 
"Use : php $pname <dir>\n";
    }   
?> 

foi aqui que mirei el codigo fuente:
http://security-shell.org/security-shell.txt



En línea
Páginas: [1] Ir Arriba Imprimir 
Ir a:  





Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC