[NEWS] Blackboard Password Retrieval (search.pl)

From: support@securiteam.com
Date: 01/22/03

  • Next message: support@securiteam.com: "[NT] WinRAR Buffer Overflow Vulnerability (Long Extension)"
    From: support@securiteam.com
    To: list@securiteam.com
    Date: 22 Jan 2003 23:06:41 +0200
    
    

    The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com
    - - promotion

    Beyond Security would like to welcome Tiscali World Online
    to our service provider team.
    For more info on their service offering IP-Secure,
    please visit http://www.worldonline.co.za/services/work_ip.asp
    - - - - - - - - -

      Blackboard Password Retrieval (search.pl)
    ------------------------------------------------------------------------

    SUMMARY

    The <http://products.blackboard.com/> Blackboard Learning System is a
    Web-based server software platform that offers industry-leading course
    management, an open architecture for customization and interoperability,
    and a scalable design that allows for integration with student information
    systems and authentication protocols. A security vulnerability in the
    product allows a malicious attacker to insert an arbitray SQL statement
    into the ones used by the product, thus modifying it actions.

    DETAILS

    Vulnerable systems:
     * Blackboard Learning System 5.x, level 1 and 2 are affected.

    Immune systems:
     * Blackboard Learning System version 5.5.1

    Through the exploitation of an SQL injection vulnerability it is possible
    for an unauthenticated user to query the Blackboard user directory and:
     - Enumerate users with a given password.
     - Extract the MD5 password of any given user.

    Details:
    Improper filtering in the address book search feature allows an attacker
    to inject SQL statements into a query that is executed with read access to
    the users table. The address book search feature is implemented by
    /bin/common/search.pl and the improperly filtered argument is "by". It is
    a trivial matter for an attacker to construct queries that will return a
    listing of all users with a given password. It is also possible for an
    attacker to execute a scripted attack that can extract the MD5 hashed
    password of a specific user.

    A valid account is not required to exploit the above-described
    vulnerabilities. Most (all?) organizations have a "preview" button on the
    login screen allowing anyone to login to a restricted version of the
    system. Preview users are not given an interface to the address book.
    However, despite the fact that the address book is "hidden" from preview
    users, it is not actually restricted. The scripts required in exploitation
    are indeed accessible to the preview user thereby opening the window of
    exploitation to any remote user.

    Vendor Notification:
    The Blackboard team was concerned, quick to respond, open to suggestions,
    professional, and even took the time to teleconference. Over all Pedram
    was very impressed with their handling of the situation.

    08/07/2002 - Vulnerability discovered.
    08/08/2002 - Pedram's University contacted.
    08/11/2002 - First contact with David Yaskin at Blackboard.
    08/30/2002 - Patch test with my University.
    09/01/2002 - Fix made available and announcement made to Blackboard
    community.
    01/21/2003 - Public release.

    Vendor Response:
    A security hotfix is now available through Blackboard that will address
    recently identified issues related to the Blackboard User Directory.
    Although there have been no reported security breaches, Blackboard would
    like to share this important information with clients. For locally
    installed clients running on release 5.5.1 or later (including Blackboard
    Learning System - ML), the recommended solution is to obtain the hotfix by
    calling Blackboard Product Support at 1-888-788-5264 or by submitting a
    service request ticket through the Blackboard Product Support Web site.
    For locally installed clients running on releases earlier than 5.5.1, the
    recommended solution is to upgrade to 5.5.1 and then apply the hotfix. To
    upgrade to release 5.5.1, system administrators can go to
    <http://behind.blackboard.com> http://behind.blackboard.com and click on
    the "Hotfixes and Updates" icon to obtain the download. Once release 5.5.1
    has been installed, you may obtain the hotfix by calling Blackboard
    Product Support at 1-888-788-5264 (+1-202-715-6019 for international
    clients); or by submitting a service request ticket through the Blackboard
    Product Support Web site.

    For all Learning System and Learning and Community Portal System (formerly
    Blackboard 5 Level Three) clients running on releases earlier than 5.5.1,
    please contact your Account Manager, at 202-463-4860 prior to upgrading.

    UNAFFECTED: Clients who are using our Enterprise product capability of
    completely externalizing external authentication, and have implemented
    Blackboard Learning System, Level 3 using LDAP, Kerberos, Active
    Directory, or Active Directory are unaffected.

    Clients running on Blackboard CourseInfo need not take action at this
    time, as the potential security vulnerability does not affect this
    platform.

    Clients running on the Blackboard Transaction System are unaffected.

    Technical details:
    Using the address book search feature to search for the keyword 'meow'
    will generate the following request:

        /bin/common/search.pl?action=RESULTS
                             &context=ADDRESSBOOK
                             &type=SEARCH
                             &operation=VIEW
                             &keyword=
                             &nav=my_addressbook
                             &course_id=_1_1
                             &keywordraw=meow
                             &by=lastname

    The 'by=lastname' parameter is propagated with one of two possible values
    from an HTML form, either last name or e-mail address. Generating a hand
    made request with the 'by' parameter set as 'ruff' renders the following
    SQL error:

        SELECT U.pk1, U.sos_id_pk2, U.firstname, U.middlename, U.lastname,
    U.title,
               U.email, U.user_id, U.job_title, U.department, U.company,
    U.street_1,
               U.street_2, U.city, U.state, U.zip_code, U.country,
    U.b_phone_1,
               U.b_phone_2, U.h_phone_1, U.h_phone_2, U.m_phone, U.b_fax,
    U.h_fax,
               U.webpage, U.email_ind, U.address_ind, U.work_ind, U.phone_ind
        FROM users U
        WHERE U.row_status = 0
            AND U.available_ind = 'Y'
            AND U.public_ind = 'Y'
            AND U.system_role != 'z'
            AND U.system_role != 'u'
            AND upper(U.ruff) LIKE '%MEOW%'
            ORDER BY U.lastname, U.firstname

    The above error was generated because there is no field named 'ruff' in
    the users table. Further experimentation reveals that that the
    'keywordraw' parameter (MEOW here) is non-alphanumeric stripped and upper
    cased. The 'by' parameter on the other hand is not filtered allowing an
    attacker to control the SQL query from 'upper(U.'. By guessing the name of
    the field that stores user passwords (passwd), an attacker is able to
    enumerate all users with specific characters in their password. With some
    experimentation it becomes quickly apparent that passwords are stored as
    MD5 hashes (very common). It is now a trivial matter for an attacker to
    quickly generate a list of valid username and password combinations by
    searching for users with easily guessable passwords such as
    MD5("blackboard"), MD5("password"), or MD5("organization name").

    It is also possible for an attacker to extract a specific user's password.
    This is accomplished through the following steps:

     - Search for all accounts that have the letter 'a' in their hashed
    password.
     - If the target user does not appear in this list then choose another
    letter, otherwise attempt to narrow down the list by searching for all
    accounts with the sequence 'ab' in their hashed password.
     - If the target use does not appear in this list then choose another
    sequence such as 'ac' or 'ad'.
     - Continue this process until the entire 32-character hash is extracted.

    This process is labor and time intensive when done by hand; however, it is
    easily scripted. Attached is a sample password extractor script that
    requires only some manual labor to start. The following is a brief
    synopsis of its usage:
     - Determine the current session id from the current session-based cookie.
     - Follow the above outlined steps to narrow the list of accounts
    containing the target user to a single page.
     - Modify the attached Perl script to contain the initial sequence (ex:
    'abcd') from the previous step and the session id.
     - Uncomment the "work forward" lines in the script. Run.
     - The script should automatically determine the forward half of the
    target users hashed password. So 'abcd' may become 'abcd12345678...'.
     - Next, comment out the "work forward" lines and uncomment the "work
    backwards" lines in the script. Run.
     - The script should automatically determine the backward half of the
    target users hashed password. So 'abcd' may become '12345678...abcd'.
     - The combination of the two halves is the entire extracted hashed
    password.
     - At this point a dictionary or brute force attack can utilized to
    determine the target users un-hashed password.

    A valid account is not required to exploit the above-described
    vulnerabilities. Most (all?) organizations have a "preview" button on the
    login screen allowing anyone to login to a restricted version of the
    system. Preview users are not given an interface to the address book.
    However, despite the fact that the address book is "hidden" from preview
    users, it is not actually restricted. The scripts required in exploitation
    are indeed accessible to the preview user thereby opening the window of
    exploitation to any remote user.

    On a final note if an attacker could guess the codes that Blackboard uses
    for system roles then it becomes possible to target attacks on important
    users such as instructors and teaching assistants with the following
    query:

        /bin/common/search.pl?action=RESULTS
                             &context=USERDIR
                             &type=SEARCH
                             &operation=VIEW
                             &keyword=meow
                             &keywordraw=
                             &by=passwd) LIKE '%%' AND U.system_role = 't' AND
    upper(U.passwd

    Modifying the U.system_role = 't' is the key here.

    ADDITIONAL INFORMATION

    The information has been provided by <mailto:pedram@redhive.com> Pedram
    Amini.

    ========================================

    This bulletin is sent to members of the SecuriTeam mailing list.
    To unsubscribe from the list, send mail with an empty subject line and body to: list-unsubscribe@securiteam.com
    In order to subscribe to the mailing list, simply forward this email to: list-subscribe@securiteam.com

    ====================
    ====================

    DISCLAIMER:
    The information in this bulletin is provided "AS IS" without warranty of any kind.
    In no event shall we be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages.



    Relevant Pages