NICE!!! I really like this! I'm not sure about security - but it seems fairly safe, since no real system interaction is implemented... nice, real nice script - I'll have some fun with it ;)
BUT, the logs will grow... On Thu, 5 Feb 2004 15:46:55 -0500 Carl Fischer <[EMAIL PROTECTED]> wrote: > I just put together this script to annoy script kiddies looking for > cmd.exe on my Linux-based web server. Just wanted to know what people > thought about its security. AFAIK, it's pretty safe. Also, new > commands and responses are appreciated. > > - Carl > > > #!/usr/bin/perl -T > # > # Written by Carl Fischer <[EMAIL PROTECTED]> > # > # GNU license. > # > # This is a web server CGI designed to pretend to be cmd.exe > # I'm not an expert in perl scripting security, so no guarantees as > to its # safety. I think it's pretty safe though. > # > > print "Content-type: text/plain\n\n"; > > > if (defined $ARGV[0] == FALSE) { > # This flushes STDOUT after every command (I hope). > $|=1; > # if no argument is given, make it look like we've hung at C:\> > print <<EOF > Microsoft(R) Windows NT(TM) > (C) Copyright 1985-1996 Microsoft Corp. > > EOF > ; > print 'C:\> '; > sleep 30; > } else { > if ($ARGV[0] =~ /\/c/i) { > # Handle those obnoxious dir requests. > if ($ARGV[1] eq 'dir') { > $dir = 'C:\\'; > > # If any other path to dir is specified, say we can't find it. > unless ( (defined $ARGV[2] == FALSE) || ($ARGV[2] =~ /^C:.?$/i) > ) { > if ($ARGV[2] =~ /[ABD-Gabd-g]:/) { > print "The device is not ready\n"; > } else { > print "The system cannot find the file specified.\n\n"; > } > } else { > # if no path is given, produce this output. > print <<EOF > Volume in drive C is BAIT > Volume Serial Number is A33B-666A > > Directory of $dir > > 06/02/01 12:02p <DIR> WINNT > 09/23/03 12:43p <DIR> pdf995 > 06/02/01 12:04p <DIR> Program Files > 06/02/01 12:05p 0 CONFIG.SYS > 06/02/01 12:05p 0 AUTOEXEC.BAT > 06/02/01 12:38p <DIR> Windows Update Setup Files > 09/23/03 02:03p <DIR> My Documents > 01/16/04 04:26a 333 GatorPdpPlg.log > 09/17/03 11:57p <DIR> Users > 09/19/03 02:33p <DIR> My Downloads > 06/02/01 05:57p 0 temp.ps > 02/03/04 02:14p 278,921,216 pagefile.sys > 09/11/01 04:45p <DIR> My Music > 02-05-04 8:30a 0 You Are a LUSER now go away.txt > 14 File(s) 2,138,598 bytes > 20,101,311,488 bytes free > EOF > ; > } > } elsif ($ARGV[1] eq 'type' ) { > # the next logical thing to do is type a file. > if (defined $ARGV[2]) { > print "The system cannot find the file specified\n"; > } else { > print "The syntax of the command is incorrect.\n"; > } > } elsif ($ARGV[1] eq 'copy' ) { > if (defined $ARGV[3]) { > print " 1 file(s) copied.\n\n"; > } else { > print "The syntax of the command is incorrect.\n"; > } > } elsif ($ARGV[1] eq 'tftp') { > print "Sorry. Haven't implemented bullshit response for tftp > yet.\n"; > } elsif ($ARGV[1] eq 'echo') { > print $ARGV[2]."\n" unless ( join(' ', @ARGV) =~ />/ ); > } elsif ($ARGV[1] eq 'move' ) { > print " 1 file(s) moved.\n\n"; > } elsif ($ARGV[1] eq 'del' ) { > print "You're one nasty little son of a bitch, aren't you?!\n"; > print "I think I'll just keep those files.\n"; > print "Now, go play with someone else's web server\n\n"; > } > # If we haven't thought of it, it's a bad command. > else { > print <<EOF > The name specified is not recognized as an > internal or external command, operable program or batch file. > EOF > ; > } > } elsif ($ARGV[0] eq '/?') { > print <<'EOF' > Starts a new instance of the Windows/NT command interpreter > > CMD [/X | /Y] [/A | /U] [/Q] [[/C | /K] string] > > /C Carries out the command specified by string and then > terminates/K Carries out the command specified by string but > remains/Q Turns the echo off > /A Causes the output of internal commands to a pipe or file to be > ANSI/U Causes the output of internal commands to a pipe or file > to be Unicode/T:fg Sets the foreground/background colors (see COLOR > /? for more info)/X Enable extensions to the Windows NT version > of CMD.EXE/Y Disable extensions to the Windows NT version of > CMD.EXE > > Note that multiple commands separated by the command separator '&&' > are accepted for string if surrounded by quotes > > Command Extensions are enabled by default. You may also disable > extensions for all invocations of the command processor by setting the > following value in the registry to 0 > > HKEY_CURRENT_USER\Software\Microsoft\Command > Processor\EnableExtensions > > The command extensions involve changes and/or additions to the > following commands: > > DEL or ERASE > COLOR > CD or CHDIR > MD or MKDIR > PROMPT > PUSHD > POPD > SET > SETLOCAL > ENDLOCAL > IF > FOR > CALL > SHIFT > GOTO > START (also includes changes to external command invocation) > ASSOC > FTYPE > > To get specific details, type HELP commandname to view the specifics. > EOF > ; > } > } > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > <http://learn.perl.org/> <http://learn.perl.org/first-response> > > cheers, Alex -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>