system() exploit auf Linux/UNIX



  • maximo schrieb:

    Erst reden alle über system, dass man es nicht benutzen soll und dann kann keiner ein exploit machen? 😕 😉

    Hmmm, für dich mal mein beliebtes Kanonenbeispiel:

    Vergleiche system() mal mit einer Kanone. Und eine systemspezifische Funktion als deine Hand.
    Nun hast du die Aufgabe eine (unverschlossene) Tür zu öffnen. Mit was wirst du es wohl eher machen?



  • DrGreenthumb schrieb:

    system gibt den befehl an /bin/sh (oder cmd.com oder was auch immer) weiter, wo er dann erst von der shell interpretiert wird.

    In der shell gibts jede menge zeichen die eine beliebige bedeutung haben können und darum weiß man nie, was die shell damit eigentlich genau macht.
    Ein Semikolon trennt zum beispiel befehle voneinander.

    Ja, genau.

    @maximo:

    Die Shell muss auch nicht /bin/sh sein, sondern ist von System anhängig. Du kannst auch system benutzen, aber du kannst dich nicht darauf verlassen, dass das, was du mit system ausführen willst, auch ausgeführt wird. Ein Typisches Beispiel willst du: system("clear"); Ich kenne manche UNIX Benutzer, die kein clear haben, und wenn du dort das Programm ausführst, dann kann kein Programm nicht erkennen, dass clear es gar nicht gibt, und du bekommst einen Fehler statt des leeren Bildschirms.
    Du kannst einfach nicht wissen, ob a) system tatsächlich ausgeführt wird b) ob's Fehler gegeben hat, usw.



  • Zu der Pfad-Manipulations-Sache ist mir jetzt doch noch was eingefallen:

    man sollte system oder execlp definitiv nicht in anwendungen benutzen, die mit besonderen rechten laufen.


Anmelden zum Antworten