Erkennen von Cron-Aufgaben, die von einem anderen Benutzer ausgeführt werden


7

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 flag03des Jobs.

Der Hinweis zeigt deutlich an, dass das Skript von cron ausgeführt wird. Darüber hinaus ist es das einzige Skript im /home/flag03Verzeichnis, 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?


1
Kannst du dir irgendetwas darunter ansehen /var/log/? Suchen Sie nach Protokollnachrichten zu Cron-Aufgaben.
slm

Nein, leider keine Berechtigungen oder nicht relevant (grep -ri cron / oder find / -name cron)
Cybergibbons

Antworten:


1

Welche Version von Ubuntu? Wenn es verwendet wird systemd, können Sie sich auf die von cronmir erstellte cgroup verlassen systemd, da alle Prozesse, die von gestartet cronwerden, ein direktes untergeordnetes Element sind .

Eine der Optionen, um diese Informationen abzurufen, besteht darin, den Befehl ps mit folgenden Elementen zu verwenden:

ps -eo user,pid,cmd,unit | grep cron.service | grep flag03

Warum leidet dies nicht unter dem gleichen Problem wie der Vorschlag in der Frage, dh kurzlebige Prozesse werden übersehen.
Cybergibbons

In der Tat, aber Sie könnten das mit der Idee von @piroux mischen und eine inotify Uhr auf die Dateien in/sys/fs/cgroup/systemd/system.slice/cron.service/
Bigon

inotifyDiese Dateien funktionieren nicht, aber eine Besetztschleife, die eine Sekunde vor jeder Minute beginnt /sys/fs/cgroup/systemd/system.slice/cron.service/cgroup.procsund den Inhalt der entsprechenden Befehlszeile überwacht und von dieser abruft, /proc/pid/cmdlinesollte 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.
Stéphane Chazelas

1

Das kannst du nicht. Der nächste, den Sie bekommen können, ist:

inotifywait -m /home/flag03/script

Das zeigt keine Ausführung an, aber es zeigt an, wann scriptgeöffnet oder zugegriffen wird.


0

Wenn Sie inotifywait in den Verzeichnissen / proc / [0-9] + verwenden, erhalten Sie möglicherweise einen besseren Einblick in kurzfristige Prozesse.


0

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 -eafalle 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.


Ist das nicht so ziemlich der Einzeiler, den ich in der Frage gepostet habe?
Cybergibbons

@ Cybergibbons - mehr oder weniger. Ich würde das Skript leicht modifizieren und es gibt andere Möglichkeiten, auf laufende Prozesse zu achten. Wenn dies also nicht erfolgreich wäre, um Cronjobs zu finden, könnte ich mich eingehender mit diesen befassen.
slm

0

In diesem speziellen Fall befindet sich die Datei auf /var/spool/cron/crontabs/flag03und Sie können sie mit dem nebulaKonto lesen .

Hat level03aber nicht genug Berechtigungen, um darauf zuzugreifen.


-1
while true; do ps aux | egrep -v "grep|tail|aux" | tail -n 1; sleep 1; done

3
Geben Sie weitere Informationen an, es handelt sich um eine Q & A-Site und nicht um ein Snippet, das eine teilt.
Peter - Wiedereinstellung Monica
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.