RE: [Owasp-dotnet] Re: (Asp.Net Full Trust Vulnerabilities) RE: Apache VS IIS Security model question

From: Dinis Cruz (dinis_at_ddplus.net)
Date: 09/22/04

  • Next message: Alexandre Skyrme: "RE: snmp"
    To: "'Ken Schaefer'" <ken@adOpenStatic.com>, <webappsec@securityfocus.com>, <pen-test@securityfocus.com>, "'Full-disclosure'" <full-disclosure@lists.netsys.com>
    Date: Tue, 21 Sep 2004 23:24:29 +0100
    
    

    Hello Ken,

    Sorry for the delay in responding to your email, but I am currently very
    busy.

    I originally wanted to respond to your questions via an article (since that
    would allow me to present my arguments in a better format), but since I
    don't have time to do it now, I will (for now) just answer directly to your
    questions.

    > However I am still unsure how an ASP.NET application, running in Full
    > Trust,
    > can circumvent NTFS permissions. Given the following situation, how would
    > this be accomplished?
    >
    > a) Windows 2003 / IIS 6.0 running in Worker Process Isolation Mode
    > b) Each client of the server (say, each department of a company, or each
    > customer of a hosting company) has their own website
    > c) Each website is placed into its own custom application pool
    > d) Each application pool has it's own custom identity, placed into IIS_WPG
    > e) Each website uses its own custom "anonymous user" account - ACLs are
    > secured in the metabase for each website, ACLs are set for each website's
    > folders/files

    This configuration that you have here is most secure way to configure IIS
    6.0 websites (anything less, and you will be introducing massive
    vulnerabilities).

    But even with this configuration (which has serious scalability problems),
    there are several powerful attack vectors. For example:

     I) With Full Trust Asp.Net (after a call to 'RevertToSelf()') it is
    possible to upload and execute malicious applications (i.e. malware) which
    could allow the:

            - Elevation of Privilege into Administrator or System: possible if
    the server (or any local server) is not fully patched (or if the malicious
    user knows a 0-day exploit)

            - Execution of cmd.exe (uploaded to the server if the original
    version is ACLed) in order to (initially) execute commands such as 'Net
    User', 'Net View', 'Ipconfig', etc... (note that even if an Anti-Virus is
    present in the server that considers cmd.exe to be a malicious file, all
    cmd.exe commands can be created using direct Win32 API calls). This
    information would allow (for example) the execution of a brute force
    password attack to all accounts (including the administrators). In such BF
    scenario, the 'better-case' scenario is a DoS attack (where all accounts are
    locked) and the 'worse-case' scenario is the discovery of ALL user's
    passwords (including the administrator's ones)

             - Create a remote shell and access the system remotely: possible if
    the server allows outbound connections

     II) If on your step e) you didn't explicitly remove the IIS_WPG ACL from
    ALL website's Metabase entries, then the malicious script could (after
    "RevertToSelf()"):

            1) read from the Metabase the "Anonymous User" account details (i.e.
    the username and password) from all websites that are ACLed (in the
    Metabase, not in NTFS) to IIS_WPG (which is the default setting). Note that
    the current tool to change the Metabase ACLs is not (or wasn't until a
    couple of months ago) supported by Microsoft.

         2) Impersonate those accounts (the "Anonymous User") and access their
    resources (which now will be accessible using normal IO classes)

     III) Read the other website's source code in the "Temporary Asp.Net Folder"
    which contains the source-code of all Asp.Net pages that required real-time
    compilation (ok, this is not accessing the files directly but the end result
    is the same). Note that by default all websites share the same "Temporary
    Asp.Net Folder", but Asp.Net allows the definition of a unique folder per
    Asp.Net Application (which must be ACLed to the "Application Pool User" and
    not to IIS_WPG)

    > The points below:
    > 1) presupposes that administrators setting up the server have left stuff
    > lying around, and un-ACLed

    Which is more common than you think! (if I told you the names of the
    real-live examples that I know, you would probably fall off your chair)

    > 2) can't be done as far as I can tell

    Yes, "...read (from the Metabase) other website'sAnonymous and Application
    Pool Account details (Username and Password)...", unfortunately can be done

    After you call 'RevertToSelf()' you are acting under an account belonging to
    the IIS_WPG which by default has FULL access to the "/LM/W3SVC" section of
    the Metabase (and the ABO, ADSI IIS and WMI classes know how to decrypt the
    encrypted Metabase passwords)

    Go to the OWASP (http://www.owasp.org/software/dotnet.html) website and
    download the ANBS (Asp.Net Baseline Security) Open Source tool (that I
    developed) which contains:

            a) an "Online Metabase Explorer" tool which allow you (from an
    normal account) to navigate the "/LM/W3SVC" section of the Metabase

               b) a SAM'SHE (Security Analyser for Microsoft's Shared Hosting
    Environments) test for this vulnerability (look in the source code to
    understand how it works)

    Alternatively, you can download the other tool I also developed for OWASP,
    ANSA (Asp.Net Security Analyser) which contains a PoC (Proof of Concept) for
    this vulnerability

    > 3) can't be done as far as I can tell

    Yes, "... If other websites share the same application pool, you can search
    the current w3wp process for their security tokens, use those tokens to
    impersonate those users (no need to know their password) and access
    website's data...", unfortunately can be done

    Email me directly, and I will send you a PoC which clearly shows this.

    The latest version of SAM'SHE already tests for this vulnerability

    > 4) depends on the privileges of the process account

    Which belongs to the IIS_WPG and has access to most of the Win32 API.

    > - you probably can't do much unless you attempt to run something that
    > exploits Windows, or SQL Server or other product

    Which is exactly what a malicious would do :)

    This point is reinforced by some of the "10 Immutable Laws of Security"
    (http://www.microsoft.com/technet/archive/community/columns/security/essays/
    10imlaws.mspx):

            * "...Law #1: If a bad guy can persuade you to run his program on
    your computer, it's not your computer anymore..."

            * "...Law #4: If you allow a bad guy to upload programs to your
    website, it's not your website any more..."

    Think about it, do you allow your clients to upload and install COM objects
    on your server? I'm sure you won't for obvious security reasons.

    But, for all practical reasons: "Unmanaged code in Full Trust Asp.Net = COM
    objects (i.e. DLLs)"

    > 5) etc etc etc doesn't count as an exploitable vector in my book.

    Fair enough

    What about:

     - Reflection
     - WMI - Windows Management Instrumentation
     - ADSI WinNT provider
     - ADSI LDAP provider
     - ADSI IIS provider
     - Authentication and Impersonation features (exploitation of)
     - Internal Network (for example Internal Port Scan)
     - Denial of Service attacks
     - FPSE2002
     - WSH (Windows Script Host)
     - SNMP or NetBIOS queries
     - Use the server to attack other servers (internal and external)
     - Use the server to attack the clients accessing the hosted websites
     - AD Corruption

    >
    > Thanks

    No problems,

    I'm looking forward to your comments, and am especially interested to know
    if you now agree with me that the only REAL solution for these
    vulnerabilities is to:

    "run ALL web applications hosted in one server under Partially Trusted
    environments".

    Best regards

    Dinis Cruz
    .Net Security Consultant
    DDPlus

    >
    >
    > Cheers
    > Ken
    >
    > ----- Original Message -----
    > From: "Dinis Cruz" <dinis@ddplus.net>
    > Subject: (Asp.Net Full Trust Vulnerabilities) RE: Apache VS IIS Security
    > model question
    >
    >
    > : If the code is running with full trust it can call RevertToSelf() and
    > change
    > : the current Asp.Net (Thread) Identity into the Process' Identity (which
    > : belongs to the IIS_WPG).
    > :
    > : Once this is done:
    > :
    > : 1) You can probably already bypass several NTFS restrictions and see
    > other
    > : website's data (and other sensitive information usually left on the
    > server)
    > :
    > : 2) You can read (from the Metabase) other website's Anonymous and
    > : Application Pool Account details (Username and Password), use that
    > : information to impersonate those users (which you can with Full Trust)
    > and
    > : access other website's data
    > :
    > : 3) If other websites share the same application pool, you can search
    > the
    > : current w3wp process for their security tokens, use those tokens to
    > : impersonate those users (no need to know their password) and access
    > : website's data
    > :
    > : 4) You can upload to the server an exploit and execute it. With full
    > trust
    > : it is almost impossible to stop the upload and execution of a malicious
    > : .EXE. The only defence could be if the Anti-Virus installed on the
    > server
    > is
    > : able to detect the Malware (although this limitation could be easily
    > : bypassed by any half-decent malicious attacker with access to the
    > exploit's
    > : source code)
    > :
    > : 5) etc, etc, etc..... There any many more attack vectors, but these
    > should
    > : be enough to make my point
    > :
    > : Note that even if the attacker is only able to gain read access to
    > another
    > : website's data, most likely he/she will be able to retrieve the Database
    > : Connection String and gain FULL access to that website's database.
    > :
    > : If this is news for you (i.e. how dangerous Full Trust Asp.Net can be),
    > then
    > : I would recommend that you take a good look at the work I have done over
    > the
    > : last year at OWASP (Open Web Application Security Project), namely Open
    > : Source tools: ANSA (Asp.Net Security Analyser) and SAM'SHE (Security
    > : Analyser for Microsoft's Shared Hosting Environment).
    > :
    > : Some links:
    > :
    > : - OWASP .NET section: http://www.owasp.org/software/dotnet.html
    > :
    > : - Post with Links to some of my online posts (Security issues with
    > Asp.Net
    > : in Shared Hosting Environments, OWASP .Net tools and OWASP AppSec
    > : Presentation):
    > :
    > http://sourceforge.net/mailarchive/forum.php?thread_id=5203278&forum_id=24
    > 75
    > : 4
    > : - presentation that I did last June at the OWASP AppSec NYC 2004
    > conference
    > : entitled "Full Trust Asp.Net (in)Security / Secure Asp.Net Web
    > Application
    > : Development":
    > :
    > : -
    > :
    > http://prdownloads.sourceforge.net/owasp/AppSec2004-Dinis_Cruz-
    > Full_Trust_As
    > : p.Net_Security_Issues.ppt?download (main PPT)
    > :
    > : -
    > :
    > http://prdownloads.sourceforge.net/owasp/AppSec2004-Dinis_Cruz-
    > Full_Trust_Vi
    > : deos.zip?download (the support videos: "ANBS - SamShe.avi", "ANBS - XML
    > : database and Metabase explorer.avi", "IIS Security Token
    > Vulnerability.avi",
    > : "ANSA - Run tests individually.avi", "ANSA - Security Analyser.avi")
    > :
    > : Best Regards
    > :
    > : Dinis Cruz
    > : .Net Security Consultant
    > : DDPlus
    > : > -----Original Message-----
    > : > From: Ken Schaefer [mailto:ken@adopenstatic.com]
    > : > Sent: 14 September 2004 03:10
    > : > To: webappsec@securityfocus.com; pen-test@securityfocus.com
    > : > Subject: RE: Apache VS IIS Securiyt model question
    > : >
    > : > I'm pretty sure that Mike is talking about NTFS permissions (and
    > Windows
    > : > users and groups). Can you point us to how ASP.NET code running as
    > fully
    > : > trusted gets around that?
    > : >
    > : > Cheers
    > : > Ken
    > : >
    > : > -------- Original Message --------
    > : > > From: "Dinis Cruz" <dinis@ddplus.net>
    > : > > Subject: RE: Apache VS IIS Securiyt model question
    > : > >
    > : > > Please note that these security settings will only be relevant (in
    > IIS)
    > : > in a
    > : > > Partially Trusted Website (i.e. the Asp.Net code is NOT running with
    > : > Full
    > : > > Trust).
    > : > >
    > : > > If the code is running with Full Trust, then most likely those
    > security
    > : > > permissions will be easily bypassed.
    > : > >
    > : > > Dinis Cruz
    > : > > .Net Security Consultant
    > : > > DDPlus
    > : > >
    > : > > > -----Original Message-----
    > : > > > From: mthompson [mailto:mthompson@brinkster.com]
    > : > > > Sent: 11 September 2004 01:56
    > : > > > To: webappsec@securityfocus.com; pen-test@securityfocus.com
    > : > > > Subject: Apache VS IIS Securiyt model question
    > : > > >
    > : > > > Hello,
    > : > > >
    > : > > > I am doing research and I am stuck.
    > : > > >
    > : > > > Pitch: In IIS there is the ability to set permissions on a per
    > website
    > : > > > basis. In other words the ability to limit access to files and
    > : > > > directories based on the users credentials that the website is
    > running
    > : > > > under. Additionally, you would in turn add this user to a group
    > and
    > : > > > apply group permissions to an object that needed to be accessed by
    > : > more
    > : > > > than one site.
    > : > > >
    > : > > > Question: Is there a similar security model for apache that would
    > : > allow
    > : > > > credentials from a user to run a virtual website and access files
    > only
    > : > > > for a specific virtual site.
    > : > > >
    > : > > > Also, does any one have a diagram of the apache process?
    >
    >
    >
    > -------------------------------------------------------
    > This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
    > Project Admins to receive an Apple iPod Mini FREE for your judgement on
    > who ports your project to Linux PPC the best. Sponsored by IBM.
    > Deadline: Sept. 24. Go here: http://sf.net/ppc_contest.php
    > _______________________________________________
    > Owasp-dotnet mailing list
    > Owasp-dotnet@lists.sourceforge.net
    > https://lists.sourceforge.net/lists/listinfo/owasp-dotnet

    ------------------------------------------------------------------------------
    Ethical Hacking at the InfoSec Institute. All of our class sizes are
    guaranteed to be 12 students or less to facilitate one-on-one interaction
    with one of our expert instructors. Check out our Advanced Hacking course,
    learn to write exploits and attack security infrastructure. Attend a course
    taught by an expert instructor with years of in-the-field pen testing
    experience in our state of the art hacking lab. Master the skills of an
    Ethical Hacker to better assess the security of your organization.

    http://www.infosecinstitute.com/courses/ethical_hacking_training.html
    -------------------------------------------------------------------------------


  • Next message: Alexandre Skyrme: "RE: snmp"

    Relevant Pages

    • [UNIX] DoS Attack Against FreeRADIUS (Other RADIUS Servers Affected)
      ... The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com ... to create a high-performance and highly configurable GPL'd RADIUS server. ... program with failed requests causing a denial of service attack. ... Access-Request to the RADIUS server, ...
      (Securiteam)
    • Re: Cant open websites from Front Page
      ... For the files found which are in your website folder structure, ... Restart the server if possible to ensure files are unlocked. ... But they gave me no option to 'delete' the lock file. ... how FP security and NTFS security combine to give the effective rights. ...
      (microsoft.public.frontpage.extensions.windowsnt)
    • Re: Limit some users?
      ... Then the simple way would be to find a Web Hoster and have them host your ... can still visit the website, and you have control of its content. ... Reality is, as soon as you put a server up, the entire world will visit it, ... When you talk about Computers and Security, it is like talking about Cars ...
      (microsoft.public.inetserver.iis.security)
    • [Full-Disclosure] RE: [Owasp-dotnet] Re: (Asp.Net Full Trust Vulnerabilities) RE: Apache VS IIS Secu
      ... > b) Each client of the server (say, each department of a company, or each ... > c) Each website is placed into its own custom application pool ... ALL website's Metabase entries, then the malicious script could (after ... download the ANBS (Asp.Net Baseline Security) Open Source tool (that I ...
      (Full-Disclosure)
    • Re: ping Purl Gurl? Beginner Level Perl
      ... This is an excellent _free_ secondary DNS server, ... Both countries are technology Neandertals. ... Only worthy DoS attack we enjoyed is this one of which I recently ... For security, I run a commercial service remote hacker test against ...
      (alt.usage.english)