in reply to Re^4: How to avoid Null Byte Injection?
in thread How to avoid Null Byte Injection?
However, it actually looks like Perl doesn't consider opening a file readonly to be an unsafe operation, which is surprising to me. So it wouldn't have solved your security problem, but it would help with something like this (which opens a file for append):
#!/usr/bin/perl -T use warnings; use strict; use Scalar::Util qw(tainted); use CGI qw(:standard); BEGIN { if ($ENV{REQUEST_METHOD}) { eval 'use CGI::Carp qw(fatalsToBrowser)'; } } use constant EOL => $ENV{REQUEST_METHOD} ? "<br>\n" : "\n"; if ($ENV{REQUEST_METHOD}) { start_html(); } my $file = param('file') or die "No filename given"; # The next 3 lines will untaint the variable. $file =~ /^(\w+)$/ or die "illegal filename\n"; $file = $1; printf "\$file is%s tainted.".EOL,tainted($file)?"":"n't"; open(F,">> /tmp/$file") or die "Couldn't open file"; print F "Wrote.\n"; close(F); print "OK".EOL; if ($ENV{REQUEST_METHOD}) { end_html(); }
Update: This version should work from the command-line or CGI.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^6: How to avoid Null Byte Injection?
by Nik (Initiate) on Oct 09, 2006 at 17:30 UTC | |
by sgifford (Prior) on Oct 10, 2006 at 03:48 UTC | |
by Nik (Initiate) on Oct 10, 2006 at 08:34 UTC | |
by sgifford (Prior) on Oct 10, 2006 at 15:06 UTC |