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>


Reply via email to