Enumeration
https://github.com/diego-treitos/linux-smart-enumeration
/snap/docker/2963/usr/share/man/man8/zstreamdump.8.gz nichts drin
cron dir schreibar vlt ja einen job hinzufügen in hourly oder ähnliches
tmux und screen session
/snap/snapd/23545/usr/lib/snapd/snap-confine
/snap/snapd/23258/usr/lib/snapd/snap-confine
https://github.com/deeexcee-io/CVE-2021-44731-snap-confine-SUID/blob/main/snap_confine_LPE.sh
pfad geändert
prozesse
---
[i] pro510 Running process binaries and permissions........................ yes!
---
-rwxr-xr-x 1 root root 1446024 Mar 31 2024 /bin/bash
lrwxrwxrwx 1 root root 4 Mar 31 2024 /bin/sh -> dash
-rwxr-xr-x 1 root root 60992 Aug 9 02:33 /sbin/agetty
lrwxrwxrwx 1 root root 22 Aug 8 14:51 /sbin/init -> ../lib/systemd/systemd
-rwxr-xr-x 1 root root 145880 Apr 7 2024 /sbin/multipathd
lrwxrwxrwx 1 root root 13 Jan 8 13:36 /snap/bin/docker -> /usr/bin/snap
-rwxr-xr-x 1 root root 39028584 Sep 6 19:08 /snap/docker/2963/bin/docker
-rwsr-xr-x 1 root root 180752 Dec 4 09:13 /snap/snapd/23545/usr/lib/snapd/snap-confine
-rwxr-xr-x 1 root root 1446024 Mar 31 2024 /usr/bin/bash
-rwxr-xr-x 1 root root 236176 Aug 9 02:33 /usr/bin/dbus-daemon
-rwxr-xr-x 1 root root 204264 Apr 8 2024 /usr/bin/find
-rwxr-xr-x 1 root root 366096 Apr 6 2024 /usr/bin/gpg-agent
-rwxr-xr-x 1 root root 186824 Apr 8 2024 /usr/bin/grep
-rwxr-xr-x 1 root root 35336 Apr 5 2024 /usr/bin/groups
lrwxrwxrwx 1 root root 10 Aug 7 17:44 /usr/bin/python3 -> python3.12
lrwxrwxrwx 1 root root 10 Aug 7 17:44 /usr/bin/python3 -> python3.12
-rwxr-xr-x 1 root root 51720 Apr 5 2024 /usr/bin/seq
-rwxr-xr-x 1 root root 35336 Apr 5 2024 /usr/bin/sleep
-rwxr-xr-x 1 root root 105272 Apr 5 2024 /usr/bin/sort
-rwxr-xr-x 1 root root 132168 Mar 31 2024 /usr/bin/ss
-rwsr-xr-x 1 root root 277936 Apr 8 2024 /usr/bin/sudo
-rwxr-xr-x 1 root root 1501304 Aug 8 14:51 /usr/bin/systemctl
-rwxr-xr-x 1 root root 39432 Apr 5 2024 /usr/bin/uniq
-rwxr-xr-x 1 root root 27008 Mar 31 2024 /usr/bin/w
-rwxr-xr-x 1 root root 76160 Aug 27 14:26 /usr/libexec/fwupd/fwupd
-rwxr-xr-x 1 root root 547840 Aug 27 14:26 /usr/libexec/udisks2/udisksd
-rwxr-xr-x 1 root root 145856 Apr 8 2024 /usr/libexec/upowerd
-rwxr-xr-x 1 root root 125536 Apr 3 2024 /usr/lib/polkit-1/polkitd
-rwxr-xr-x 1 root root 23575272 Aug 20 22:39 /usr/lib/snapd/snapd
-rwxr-xr-x 1 root root 5101016 Aug 20 22:39 /usr/lib/snapd/snap-exec
-rwxr-xr-x 1 root root 100816 Aug 8 14:51 /usr/lib/systemd/systemd
-rwxr-xr-x 1 root root 193664 Aug 8 14:51 /usr/lib/systemd/systemd-journald
-rwxr-xr-x 1 root root 285264 Aug 8 14:51 /usr/lib/systemd/systemd-logind
-rwxr-xr-x 1 root root 1657576 Aug 8 14:51 /usr/lib/systemd/systemd-networkd
-rwxr-xr-x 1 root root 535048 Aug 8 14:51 /usr/lib/systemd/systemd-resolved
-rwxr-xr-x 1 root root 59688 Aug 8 14:51 /usr/lib/systemd/systemd-timesyncd
lrwxrwxrwx 1 root root 17 Aug 8 14:51 /usr/lib/systemd/systemd-udevd -> ../../bin/udevadm
-rwxr-xr-x 1 root root 60080 Aug 27 14:26 /usr/sbin/cron
-rwxr-xr-x 1 root root 14648 Apr 8 2024 /usr/sbin/getcap
lrwxrwxrwx 1 root root 7 Mar 31 2024 /usr/sbin/ip -> /bin/ip
-rwxr-xr-x 1 root root 2165576 Aug 27 14:26 /usr/sbin/ModemManager
-rwxr-xr-x 1 root root 790192 Aug 27 14:26 /usr/sbin/rsyslogd
Metaspoloit
https://github.com/rapid7/metasploit-framework/blob/master/documentation/modules/payload/linux/x86/meterpreter/reverse_tcp.md
getsystem
and priv module not working
https://www.offsec.com/metasploit-unleashed/privilege-escalation/
https://null-byte.wonderhowto.com/how-to/get-root-with-metasploits-local-exploit-suggester-0199463/
cheeseing
funktioniert nicht
#!/bin/bash
# Farben für die Ausgabe
green="\033[0;32m"
red="\033[0;31m"
reset="\033[0m"
# Funktion: Statusmeldung
function status {
echo -e "${green}[INFO]${reset} $1"
}
# Funktion: Fehlerausgabe
function error {
echo -e "${red}[ERROR]${reset} $1"
exit 1
}
# Funktion: Zufälligen Benutzernamen generieren
generate_random_username() {
local animals=("DancingPanda" "JumpingKangaroo" "SingingDolphin" "GrumpyCat" "FlyingPig" "NappingKoala" "LaughingLlama" "JollyPenguin" "WittyFox" "CheerfulOtter")
echo "${animals[$RANDOM % ${#animals[@]}]}"
}
# Funktion: Benutzer prüfen und erstellen
check_and_create_user() {
local user_name="$1"
local user_home="/home/$user_name"
if id "$user_name" &>/dev/null; then
status "Benutzer $user_name existiert bereits."
else
status "Erstelle Benutzer $user_name..."
useradd -m "$user_name" || error "Konnte Benutzer $user_name nicht erstellen."
echo "$user_name:password" | chpasswd || error "Konnte Passwort für $user_name nicht setzen."
status "Benutzer $user_name erfolgreich erstellt."
fi
# Sicherstellen, dass das Home-Verzeichnis existiert
if [[ ! -d "$user_home" ]]; then
mkdir -p "$user_home" || error "Konnte Home-Verzeichnis für $user_name nicht erstellen."
chown "$user_name":"$user_name" "$user_home" || error "Konnte Besitzer des Home-Verzeichnisses setzen."
fi
}
# Funktion: Flag durch sudo einrichten
setup_flag_sudo() {
local flag_file="/opt/secret_flag.txt"
local flag_content="FLAG{sudo_privileges_are_key}"
local sudo_user="$1"
status "Richte Flag für sudo ein..."
echo "$flag_content" > "$flag_file" || error "Konnte $flag_file nicht erstellen."
chmod 600 "$flag_file" || error "Konnte Berechtigungen für $flag_file nicht setzen."
chown root:root "$flag_file" || error "Konnte Besitzer von $flag_file nicht ändern."
echo "$sudo_user ALL=(ALL) NOPASSWD: /bin/cat $flag_file" > /etc/sudoers.d/ctf || error "Konnte sudoers-Datei nicht konfigurieren."
status "Flag für sudo erfolgreich eingerichtet."
}
# Funktion: Flag in .history hinzufügen
setup_flag_history() {
local user_name="$1"
local user_home="/home/$user_name"
local history_file="$user_home/.history"
local flag_content="cat FLAG{always_check_history}"
status "Richte Flag in .history für $user_name ein..."
# Sicherstellen, dass die Datei existiert und die richtigen Berechtigungen hat
touch "$history_file" || error "Konnte $history_file nicht erstellen."
chown "$user_name":"$user_name" "$history_file" || error "Konnte Besitzer von $history_file nicht setzen."
echo "$flag_content" >> "$history_file" || error "Konnte $history_file nicht bearbeiten."
chattr +i "$history_file" || error "Konnte $history_file nicht unveränderbar machen."
status "Flag in .history für $user_name erfolgreich eingerichtet."
}
# Funktion: Flag im /tmp-Verzeichnis hinzufügen
setup_flag_tmp() {
local tmp_flag_file="/tmp/.a9f8e1b3c_hiddenflag"
local flag_content="FLAG{tmp_directory_is_not_safe}"
status "Richte Flag im /tmp-Verzeichnis ein..."
echo "$flag_content" > "$tmp_flag_file" || error "Konnte $tmp_flag_file nicht erstellen."
chmod 777 "$tmp_flag_file" || error "Konnte Berechtigungen für $tmp_flag_file nicht setzen."
status "Flag im /tmp-Verzeichnis erfolgreich eingerichtet."
}
# Funktion: Flag in einem laufenden Prozess hinzufügen
setup_flag_process() {
local script_path="/usr/local/bin/flag_process.sh"
local flag_content="FLAG{inspect_running_processes}"
status "Richte Flag in laufendem Prozess ein..."
cat <<EOF > "$script_path"
#!/bin/bash
export SECRET_FLAG="$flag_content"
sleep 600
EOF
chmod +x "$script_path" || error "Konnte $script_path nicht ausführbar machen."
nohup "$script_path" &> /dev/null &
if [[ $? -ne 0 ]]; then
error "Konnte Prozess nicht starten."
fi
status "Flag in laufendem Prozess erfolgreich eingerichtet."
}
# Funktion: Flag im root-Home-Verzeichnis hinzufügen
setup_flag_root_home() {
local root_flag_file="/root/root_flag.txt"
local flag_content="FLAG{root_privilege_required}"
status "Richte Flag im Home-Verzeichnis von root ein..."
echo "$flag_content" > "$root_flag_file" || error "Konnte $root_flag_file nicht erstellen."
chmod 400 "$root_flag_file" || error "Konnte Berechtigungen für $root_flag_file nicht setzen."
chown root:root "$root_flag_file" || error "Konnte Besitzer von $root_flag_file nicht ändern."
status "Flag im Home-Verzeichnis von root erfolgreich eingerichtet."
}
# Funktion: Entferne den Benutzer 'ubuntu' aus der Sudo-Gruppe
remove_ubuntu_from_sudo() {
status "Entferne Benutzer 'ubuntu' aus der Sudo-Gruppe..."
if id "ubuntu" &>/dev/null; then
deluser ubuntu sudo || error "Konnte 'ubuntu' nicht aus der Sudo-Gruppe entfernen."
status "Benutzer 'ubuntu' wurde erfolgreich aus der Sudo-Gruppe entfernt."
else
status "Benutzer 'ubuntu' existiert nicht. Keine Aktion erforderlich."
fi
}
# Hauptprogramm
main() {
local setup_done_flag="/opt/ctf_setup_done.flag"
if [[ -f "$setup_done_flag" ]]; then
status "Setup wurde bereits ausgeführt."
else
status "Starte vollständiges CTF-Setup..."
# Prüfen, ob das Skript als root ausgeführt wird
if [[ $EUID -ne 0 ]]; then
error "Dieses Skript muss als root ausgeführt werden."
fi
# Benutzer erstellen
local user1=$(generate_random_username)
local user2=$(generate_random_username)
while [[ "$user1" == "$user2" ]]; do
user2=$(generate_random_username)
done
check_and_create_user "$user1"
check_and_create_user "$user2"
# Flags einrichten
setup_flag_sudo "$user1"
setup_flag_history "$user1"
setup_flag_tmp
setup_flag_process
setup_flag_root_home
# Benutzer 'ubuntu' aus der Sudo-Gruppe entfernen
remove_ubuntu_from_sudo
# Benutzername von user2 speichern
echo "$user2" > /opt/ctf_user2_name
# Setup als abgeschlossen markieren
touch "$setup_done_flag"
status "CTF-Setup abgeschlossen. Viel Erfolg bei der Challenge!"
fi
}
main
status "CTF-Setup wird gestartet!"
sudo -u "$(cat /opt/ctf_user2_name)" python3 /bin/ctf_server.py