Challenge3

  • Nein, /bin/sh gibts schon, ich hatte etwas anderes versucht. Wie bindest du die shell denn an den port?


    Was bei mir funktioniert hat war den output von /bin/grade in ein 2tes Kommando zu pipen.

  • ein recht praktisches programm hierbei ist netcat...(siehe auch der tip auf der challenge3-website)

    Quote


    Also ich versuche /bin/sh auszuführen und an einen Port zu binden.


    und konntest du dich in deinem lokalem testszenario mit dieser shell verbinden?

    [chaas4747]: What the hell is a defence?
    [dermalin3k]:
    It's that wall in deyard between dehouses.

  • In der Angabe steht was von einer Reverse Shell um z.B. Firewalls zu umgehen...evtl. ist auf gangsta eine Firewall eingerichtet, die das Shell binding verhindert (nachdem ich mich damit aber nicht näher beschäftigt habe, ist das nur eine Vermutung). Bei mir hat Reverse Shell funktioniert.

    [chaas4747]: What the hell is a defence?
    [dermalin3k]:
    It's that wall in deyard between dehouses.

  • Reicht es eigentlich normal mittels Shellcode netcat aufzurufen, oder muss man sich zusätzlich Shellcode für setuid (drop priviledge verhindern) kümmern?

    Kann man dem netcat Befehl die Argumente direkt mitgeben? (dort wo bei Aleph0 /bin/sh steht)

  • Quote

    You will have successfuly exploited the vulnerability in the server when you are able to call /bin/grade on gangsta with the effective group-id of the group that owns the server.


    nachdem du den server exploitest, arbeitet dein shellcode schon mit der richtigen gid. wenn du im shellcode den execve-syscall ausführst, führst du das angegebene programm ebenfalls mit dieser gid aus (zumindest war bei mir kein wie auch immer gearteter set[r][e][g][u]id call erforderlich ;))

    [chaas4747]: What the hell is a defence?
    [dermalin3k]:
    It's that wall in deyard between dehouses.

  • Kann mir eigentlich auch nicht vorstellen, dass man setgid braucht.

    ist die Adresse eigentlich schwierig zu erraten? Ich hab mal versucht eine Schleife zu schreiben, die meinen Client öfters aufgerufen und jeweils die Adresse verändert wird (in den letzten 2 Bytes). Komischerweise ruft diese Schleife nur einen einzigen Verbindungsversuch auf.

    EDIT: Fehler war, dass die Schleife nicht bei 0 beginnen darf--> Adresse null-byte.

    Es geht leider trotzdem nicht, obwohl es lokal klappt. Sind sogar mehr als die letzten 2 Bytes in der Adresse zu variieren?

  • schwierig zu erraten...eigentlich nicht. sagen wir, 3 bis 4 "educated guesses". ich nehme mal an, du arbeitest mit einer nop-sledge...
    bei mir war die richtige adresse (soweit ich mich erinnern kann) größenordnungsmäßig etwa 0x100 bytes entfernt. ich würde sagen, wenn du so einen großen bereich (mit entsprechender schrittweite) ohne erfolg durchläufst, passt was anderes nicht. hast du die login-daten für gangsta mitgeschickt? ich war so begeistert von meinem lokal funktionierendem overflow, dass ich auf den login völlig vergessen hab und dann wie ein irrer ohne erfolg tausende von adressen versucht hab...:rolleyes:

    [chaas4747]: What the hell is a defence?
    [dermalin3k]:
    It's that wall in deyard between dehouses.

  • Ich lasse einfach eine Schleife (1..255) laufen und weise das "i" dem jeweiligen Byte der Adresse zu. Das scheint aber aus irgendeinen Grund nicht zu gehen.

    Den Anmeldecode übertrage ich glaub ich schon richtig. Die ersten 10 Bytes im eingegebenen String lauten: "uid PASSW ".

    Kann sich am Server im Vergleich zur lokalen Version auch das Allignement der 4 Adressbytes verschieben?

  • Also ich verwende einfach ein Shellscript für die Adresse.

    Das läuft die Adressen schön durch und stoppt dann (in der Nähe der Adresse, die auch lokal funktioniert hat) aber plötzlich, weil es offenbar bei dieser einen Adresse keinen Connection close vom Server bekommt. Ich nehme mal an, dass damit die richtige Adresse gefunden wurde. Dennoch verbindet er sich nicht per nc, so wie es aber lokal gegangen ist.

    Die Anmeldedaten übermittle ich ebenfalls so. zuerst 3stellige Account Nummer dann ein Leerzeichen und dann das Passwort.

  • Quote

    Kann sich am Server im Vergleich zur lokalen Version auch das Allignement der 4 Adressbytes verschieben?


    Du meinst, sodass er nicht an 0x00112233 springt, sondern zB an 0x22330011? Nein, das kann nicht passieren, wenn auf gangsta die gleiche Methode respond() verwendet wird, da ja der Frame auf gangsta genau gleich aufgebaut ist wie bei dir lokal. Außer du hast in deiner lokalen Version in dieser Methode noch irgend welche Variablen eingebaut, dann verschiebt sich das ganze natürlich.

    [chaas4747]: What the hell is a defence?
    [dermalin3k]:
    It's that wall in deyard between dehouses.

  • Würde ich auch so sehen, da sollte sich nichts verschieben, aber für den Fall kannst das ja ganz leicht im Script berücksichtigen.

    Wird wohl an etwas anderem liegen. Bei mir gehts nämlich auch nicht (trotz durchprobieren sämtlicher Adressen), obwohl ich die Anmeldedaten schicke und es lokal funktioniert hat. Der Server-Thread scheint sich bei manchen Adresse zwar "aufzuhängen", im Gegensatz zum lokalen Exploit öffnet er aber keine Reverseshell. Kämpfe auch schon eine Zeit damit.

    Vielleicht kann ja jemand der netten Tipp-Geber einen Hint geben, woran es liegen könnte.

  • mir geht das nicht ganz ein wieso es nicht funktioniet...



    also:
    ich schicke an gangsta 2000 folgenden String:


    UUU PPPP SSSSSSS(...)


    auf Bandit kann ich mich dann mittels telnet bandit 4000 auf meine shell verbinden. (sowohl mit als auch ohne FORK)


    Probiere mit einem Sript einfach +-100 von dem gefunden Offset alles durch (immer +30).


    Wenn ich das ganze nun auf gangsta versuche geht gar nichts... es steht ewig da "Trying 193.168.0.3...", dann brichts ab.


    jemand eine idee?



  • Ist das Password nicht fünfstellig?

  • Nein, /bin/sh gibts schon, ich hatte etwas anderes versucht. Wie bindest du die shell denn an den port?

    Was bei mir funktioniert hat war den output von /bin/grade in ein 2tes Kommando zu pipen.




    Welches executable gibts leicht nicht am gangsta? Meinst du vielleicht nc? Das wär schon gemeint, weil es extra in der Angabe angeführt wird.

  • /bin/nc duerfte es meiner Erfahrung nach nicht geben, ich hab das nach einigen erfolglosen Versuchen jedenfalls dann anders geloest.