Bug #15187 Updated: PHP parses untrusted documents (or something like that ;P)
| From: | rasmus@php.net | Date: | Wed, 23 Jan 2002 20:49:51 +0000 |
| Subject: | Bug #15187 Updated: PHP parses untrusted documents (or something like that ;P) | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-77928@lists.php.net to get a copy of this message | ||
ID: 15187
Updated by: rasmus
Reported By: tozz@kijkt.tv
Status: Bogus
Bug Type: Scripting Engine problem
Operating System: Linux 2.4
PHP Version: 4.1.1
New Comment:
We can't stop developers from shooting themselves in the foot. If you
want to include a remote file without parsing it locally, you would
use:
readfile("http://domain.com/filename");
You could of course also just use the allow_url_fopen directive in your
php.ini file if you really want to turn this off.
If you removed all the functions that developers could use to shoot
themselves in the foot with there wouldn't be much left to do
interesting things.
Previous Comments:
------------------------------------------------------------------------
[2002-01-23 15:42:16] tozz@kijkt.tv
It's true dat this is a 'user error', however there are scripts (e.g.
phpnuke has this problem) that allows a user to enter the URL that will
be included.
So, your right if a script is secure you wont deal with this bug.. but
I still see it as a security issue
------------------------------------------------------------------------
[2002-01-23 15:37:30] sander@php.net
This is bad programming. If you want to avoid this, you should NOT use
include() for stuff on other servers, but fopen() or similar instead
(which doesn't parse the data).
BTW: the 'bug' in issue.php can be avoided by proper use of
register_globals, safe-mode and/or normal (unix) file permissions.
------------------------------------------------------------------------
[2002-01-23 15:36:30] sesser@php.net
RTFM!
Include is for including PHP scripts into your PHP script.
If you only want to include parsed output then do not use
include.
------------------------------------------------------------------------
[2002-01-23 15:36:28] jan@php.net
I call it a user error. no external sources are to be trusted with no
error/security/integrity check.
------------------------------------------------------------------------
[2002-01-23 15:30:20] tozz@kijkt.tv
Hello,
I think there is a pretty large security issue in PHP. E.g. we have 2
servers, we call server 1 'embrace', and name server 2 'kossy'.
on embrace we create a file index.php:
<? include("http://kossy/issue.php"); ?>
on kossy we create a file issue.php:
<? system($cmd); ?>
well, if we now type: http://embrace/index.php?cmd=ls
we see the 'ls'
output from kossy. This is the way it should be.. BUT, when we disable
PHP op kossy we get a rather nasty bug (imho).
If we type http://embrace/index.php?cmd=ls again
(where kossy has no
PHP support) embrace includes the PHP source code from kossy and then
parses the file, which will give us the 'ls' result on embrace.
This can be used for numerous attacks. And I PHP should only include
parsed PHP or non-PHP files from external (http://) links.
Bye,
Tozz
------------------------------------------------------------------------
Edit this bug report at http://bugs.php.net/?id=15187&edit=1