Mombu the Php Forum

Go Back   Mombu the Php Forum > Php > problem with url_fopen on free hosting environment
User Name
Password
REGISTER NOW! Mark Forums Read




Reply
1 30th October 20:34
samy-delux
External User
 
Posts: 1
Default problem with url_fopen on free hosting environment



Hey guys,

I am running an free hosting environment and do have some trouble with
allow_url_fopen. Right now we prohibit this, but it's requested by many
of our users.
The problem is something like to following script, which calls itself
over and over again, being run on our server:
<?php
while(true)
file_get_contents("http://domain.com/crash.php");
?>

From the outside our anti-dos measures would take effect, but not when
the requests are comming from our own server.
We have max_execution_time set to 5, but this does not take effect on
this script. It just calls itself until the server queue is full. We run
mod_security on our servers, which seems to ease the situation somewhat.
But some time sooner or later apache crashes and is restarted by monit.

We would like to enable allow_url_fopen, but under those circumstances
this is not possible.
Could anybody please give me a hint on how to resolve this situation?

Regards,
Samy
  Reply With Quote


 


2 30th October 20:34
agrobinet
External User
 
Posts: 1
Default problem with url_fopen on free hosting environment



I might be wrong but I think your problem goes beyond allowing URLs in
fopen. A user could just as well use cURL to build a self-calling script.
You might need to put a filter on apache on the number of requests (what's
the version of apache?).

The usual problem with allowing URLs in fopen and in "include" or "require"
is that users do some stupid stuff like include($_GET['script'].'.php') and
get a myriad of remote code executed on your server (usually used by
spammers to send email using your server).

However, to secure a php installation on a per-domain basis you can try
http://www.hardened-php.net/suhosin. I can't remember if it covers the URL
stuff, but you can enable/disable PHP functions on a per-domain basis
(apache virtual host configuration) which you will likely need if you are
the manager for a shared hosting enviroment.

Rob


Andrés Robinet | Lead Developer | BESTPLACE CORPORATION
5100 Bayview Drive 206, Royal Lauderdale Landings, Fort Lauderdale, FL 33308
| TEL 954-607-4207 | FAX 954-337-2695
Email: info@bestplace.net | MSN Chat: best@bestplace.net | SKYPE:
bestplace | Web: http://www.bestplace.biz | Web: http://www.seo-diy.com
  Reply With Quote
3 31st October 01:54
samy-delux
External User
 
Posts: 1
Default problem with url_fopen on free hosting environment


I know that the same is possible using curl, but with url_fopen on it's
just way easier.
We also allready use the suhosin patch & extension, but there is no
directive to limit fopen, you can just limit include directives.

We also have a limited number of requests, but that's not the point. The
point is, that the requests are comming in and are makeing Apache
unresponsive.

Any other suggestions?

Regards,
Samy

Andrés Robinet schrieb:
  Reply With Quote
4 31st October 01:55
samy-delux
External User
 
Posts: 1
Default problem with url_fopen on free hosting environment


Thanks for the infos.
I read through the very interesting post, but I did not find it to be a
solution for my problem.
I tried to limit connections with iptables, but it did not work out. I'm
not an expert at this, I tried like it is described here:
http://www.linux-noob.com/forums/ind...showtopic=1829

I know it just limits new connections, and I thought this would work
out, but it didn't. Should I try to limit all connections?

Also it makes me wonder why mod_evasive for apache does not block this.
I will probably try to come up with a solution by using mod_security.
But it would be much nicer if it would work on the iptables level.

Regards,
Samy

Andrés Robinet schrieb:
  Reply With Quote
5 31st October 01:57
samy-delux
External User
 
Posts: 1
Default problem with url_fopen on free hosting environment


Ok, I did find a solution by accident.
I just blocked all tcp requests on port 80 and 443 comming from my own
outside IP. Since I have a couple of servers, I just dropped the
following into rc.local on all of them:

# Blocking url_fopen requests
ownip=`curl -s http://checkip.dyndns.org | awk '{print $6}' | awk '
BEGIN { FS = "<" } { print $1 } '`
iptables -A INPUT -s $ownip -p tcp --dport 80 -j DROP
iptables -A INPUT -s $ownip -p tcp --dport 443 -j DROP

Maybe this helps somebody

Regards,
Samy

Samuel Vogel schrieb:
  Reply With Quote
Reply


Thread Tools
Display Modes




666