Likes Likes:  0
Resultaten 1 tot 2 van de 2
Geen
  1. #1
    GreyMagic Software
    Script Injection to Custom HTTP Errors in Local Zone (GM#014-IE)
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Script Injection to Custom HTTP Errors in Local Zone (GM#014-IE)

    GreyMagic Security Advisory GM#014-IE
    =====================================

    By GreyMagic Software, Israel.
    17 Jun 2003.

    Available in HTML format at http://security.greymagic.com/adv/gm014-ie/.

    Topic: Script Injection to Custom HTTP Errors in Local Zone.

    Discovery date: 18 Feb 2003.

    Affected applications:
    ======================

    Microsoft Internet Explorer 5.01, 5.5 and 6.0.

    Note that any other application that uses Internet Explorer's engine
    (WebBrowser control) is affected as well (AOL Browser, MSN Explorer, etc.).


    Introduction:
    =============

    Internet Explorer ships with various internal HTML resource files. The
    majority of these files are meant to handle custom HTTP errors in web sites
    (also called "Friendly HTTP error messages"). They all use the same basic
    pieces of code, with minor changes to the actual content of each resource.

    One of the main functions included in the resources is a method to extract
    the real URL from the resource URL hash. For example, if "site.com"
    generated a 404 HTTP error, the following URL will be internally requested
    by IE: res://shdoclc.dll/404_HTTP.htm#http://site.com/file.html.

    The function takes the part after the # sign and attempts to extract the
    domain of the site, in order to embed it in the content of the custom
    message.


    Discussion:
    ===========

    We found that the above-mentioned parsing procedure has a flaw in it that
    may cause arbitrary script commands to be executed in the Local Zone.
    Leading to potential arbitrary commands execution, local file reading and
    other severe consequences.

    However, Exploiting this procedure requires user-interaction. The user must
    click the URL presented to it by the resource for the malicious code to
    execute.

    Here is the vulnerable function, precisely as it appears in the resources:

    function Homepage(){
    // in real bits, urls get returned to our script like this:
    // res://shdocvw.dll/http_404.htm#http://www.DocURL.com/bar.htm

    //For testing use DocURL =
    "res://shdocvw.dll/http_404.htm#https://www.microsoft.com/bar.htm"
    DocURL = document.location.href;

    //this is where the http or https will be, as found by searching for ://
    but skipping the res://
    protocolIndex=DocURL.indexOf("://",4);

    //this finds the ending slash for the domain server
    serverIndex=DocURL.indexOf("/",protocolIndex + 3);

    //for the href, we need a valid URL to the domain. We search for the #
    symbol to find the begining
    //of the true URL, and add 1 to skip it - this is the BeginURL value. We
    use serverIndex as the end marker.
    //urlresult=DocURL.substring(protocolIndex - 4,serverIndex);
    BeginURL=DocURL.indexOf("#",1) + 1;
    if (protocolIndex - BeginURL > 7)
    urlresult=""

    urlresult=DocURL.substring(BeginURL,serverIndex);

    //for display, we need to skip after http://, and go to the next slash
    displayresult=DocURL.substring(protocolIndex + 3 ,serverIndex);

    // Security precaution: must filter out "urlResult" and "displayresult"
    forbiddenChars = new RegExp("[<>\'\"]", "g"); // Global search/replace
    urlresult = urlresult.replace(forbiddenChars, "");
    displayresult = displayresult.replace(forbiddenChars, "");

    document.write('<A target=_top HREF="' + urlresult + '">' +
    displayresult + "</a>");

    }

    The comments in this function teach us that Microsoft had indeed attempted
    to protect this resource from being exploited in this way, but unfortunately
    failed to do so. A specially crafted value appended after the # sign can
    fool this function to write a "javascript:" URL in the displayed link.


    Exploit and Demonstration:
    ==========================

    This URL will cause the resource to output a "javascript:" link to the
    document, which will execute when the user clicks on it:

    res://shdoclc.dll/HTTP_501.htm#javascript:%2f*://*%2falert(location.href)/

    Copy and paste the above URL in your browser, then click the red link in
    order to test it.


    Solution:
    =========

    Microsoft was notified on 20-Feb-2003. They were able to reproduce this on
    IE6 Gold and all versions below it. We managed to reproduce it on all
    versions, including IE6 SP1, with no exceptions.

    They plan to fix this flaw in a future service pack.


    Tested on:
    ==========

    IE5.5 Win98.
    IE5.5 NT4.
    IE5.5 Win2000.
    IE6 Win98.
    IE6 NT4.
    IE6 Win2000.
    IE6 WinXP.


    Disclaimer:
    ===========

    The information in this advisory and any of its demonstrations is provided
    "as is" without warranty of any kind.

    GreyMagic Software is not liable for any direct or indirect damages caused
    as a result of using the information or demonstrations provided in any part
    of this advisory.


    Feedback:
    =========

    Please mail any questions or comments to security@greymagic.com.

    - Copyright © 2003 GreyMagic Software.


  2. #2
    Marek Blahus
    Script Injection to Custom HTTP Errors in Local Zone (GM#014-IE)
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Script Injection to Custom HTTP Errors in Local Zone (GM#014-IE)

    Here are some comments on the MSIE custom HTTP errors script injection
    vulnerability posted by GreyMagic back on June 17th:

    I had been playing with the custom HTTP errors as well, it's some two years
    ago, but it still works pretty much the same. Here is my version of the URL
    I figured out that time. It is similar to that of GreyMagic, but mine does
    not show the JavaScript source in the text of the page and allows you insert
    any innocent looking arbitrary text instead. It makes use of the //-style
    comments instead of /**/ comments to protect that text from being
    interpreted:

    res://shdoclc.dll/http_404.htm#javascript:alert(location.href);//://clickme/

    Because of the "security precaution" that Microsoft implemented you are not
    allowed to use the often essential apostrophe as a part of the injected
    code. Fortunately, there is this nice work around:

    res://shdoclc.dll/http_404.htm#javascript:alert(String.fromCharCode( 72,101,1
    08,108,111));//://clickme/

    And if you must use some of the other forbidden characters or character
    combinations that would break the consistence of the specially crafted URL,
    feel free to enclose all the commands in one big eval(String.fromCharCode())
    and get rid of the problems.

    You can force the user click on the link by selecting a proper text for it
    and displaying the error message in an IFRAME of proper dimensions,
    clipping, etc., which should make the link look unrecognizable from the
    other links on the page.

    Regards,
    Marek Blahus <security@blahus.cz>


Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics