Ich arbeite derzeit an den Nebula-Herausforderungen auf Exploit-exercises.com , und eine der Herausforderungen beruht auf einem Skript, das von Cron ausgeführt wird.
Dies wird von einem anderen Benutzer (flag03) ausgeführt, und der Benutzer, als den ich angemeldet bin (level03), hat keine Berechtigungen zum Ausführen crontab -u flag03
des Jobs.
Der Hinweis zeigt deutlich an, dass das Skript von cron ausgeführt wird. Darüber hinaus ist es das einzige Skript im /home/flag03
Verzeichnis, sodass wir wahrscheinlich weitere Untersuchungen durchführen würden.
Wenn dies jedoch die reale Welt wäre, würde ich nicht wissen, dass dieses Skript von cron ausgeführt wird.
Daher stellt sich die Frage, wie ich feststellen kann, dass die Aufgabe aus der Sicht eines nicht privilegierten Benutzers ausgeführt wurde.
Ich habe folgendes versucht:
while true; do ps au | grep <scriptname> | grep -v grep; done;
Auf diese Weise kann ich Prozesse sehen, die über einen längeren Zeitraum ausgeführt werden, jedoch keine, die fast sofort beendet werden. Es setzt auch voraus, dass ich den Namen des Skripts kenne.
Die spezifische Umgebung ist Ubuntu. Ich kann apt-get nicht verwenden, aber ich habe Zugriff auf gcc.
Irgendwelche Ideen?
quelle
/var/log/
? Suchen Sie nach Protokollnachrichten zu Cron-Aufgaben.Antworten:
Welche Version von Ubuntu? Wenn es verwendet wird
systemd
, können Sie sich auf die voncron
mir erstellte cgroup verlassensystemd
, da alle Prozesse, die von gestartetcron
werden, ein direktes untergeordnetes Element sind .Eine der Optionen, um diese Informationen abzurufen, besteht darin, den Befehl ps mit folgenden Elementen zu verwenden:
quelle
/sys/fs/cgroup/systemd/system.slice/cron.service/
inotify
Diese Dateien funktionieren nicht, aber eine Besetztschleife, die eine Sekunde vor jeder Minute beginnt/sys/fs/cgroup/systemd/system.slice/cron.service/cgroup.procs
und den Inhalt der entsprechenden Befehlszeile überwacht und von dieser abruft,/proc/pid/cmdline
sollte in der Lage sein, die Befehle zu erfassen, insbesondere wenn Sie alles verlangsamen, indem Sie viel RAM zuweisen die meisten Dinge aus dem Cache zu entfernen.Das kannst du nicht. Der nächste, den Sie bekommen können, ist:
Das zeigt keine Ausführung an, aber es zeigt an, wann
script
geöffnet oder zugegriffen wird.quelle
Wenn Sie inotifywait in den Verzeichnissen / proc / [0-9] + verwenden, erhalten Sie möglicherweise einen besseren Einblick in kurzfristige Prozesse.
quelle
Wenn man sich die Herausforderung anschaut, würde diese Angriffsmethode davon ausgehen, dass man ein Skript ausführen und beobachten kann, was auf der Box ausgeführt wird. Ich würde also ein Skript schreiben, das einfach
ps -eaf
alle paar Sekunden einen Dump ausführt. Dies würde schließlich einen Cron fangen Cron laufen einmal pro Minute.Für diesen Angriffsvektor müssen Sie darauf achten, dass dieses Skript ausgeführt wird, den Speicherort des Skripts notieren und tiefer eintauchen.
quelle
In diesem speziellen Fall befindet sich die Datei auf
/var/spool/cron/crontabs/flag03
und Sie können sie mit demnebula
Konto lesen .Hat
level03
aber nicht genug Berechtigungen, um darauf zuzugreifen.quelle
quelle