Vulnerability in "Proxy Everything" (Wiki article Pitfalls)
Lukas0907
nginx-forum at nginx.us
Tue Mar 8 17:33:47 MSK 2011
Hi,
I discovered a vulnerability in your best practice wiki article:
http://wiki.nginx.org/Pitfalls#Proxy_Everything
The configuration which is promoted as "good" doesn't work as intended:
<<<>>>
server {
server_name _;
root /var/www/site;
location / {
try_files $uri $uri/ @proxy;
}
location @proxy {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
fastcgi_pass unix:/tmp/phpcgi.socket;
}
}
<<<>>>
try_files checks if a file exists and if it does, it is simply returned
to the browser. This is a good thing for static files, but with this
configuration PHP files are not parsed.
<<<>>>
$ curl -i http://foo.lan/info.php
HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Tue, 08 Mar 2011 14:08:07 GMT
Content-Type: application/octet-stream
Content-Length: 20
Last-Modified: Tue, 08 Mar 2011 13:05:32 GMT
Connection: keep-alive
Accept-Ranges: bytes
<?php phpinfo(); ?>
<<<>>>
The configuration works, i.e. the PHP files are parsed, only in one
case: If nginx believes the files does not exist (although it does) and
handles the request to the FastCGI instance.
<<<>>>
C:\Users\Lukas>curl -i http://foo.lan/info.php/asdf
HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Tue, 08 Mar 2011 14:21:17 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.3.5-1 <-------- This file was parsed by PHP as
intended.
[...]
<<<>>>
Posted at Nginx Forum: http://forum.nginx.org/read.php?2,181274,181274#msg-181274
More information about the nginx
mailing list