lighttpd 1.4.x https://www.lighttpd.net/
Go to file
Glenn Strauss 2105dae0f9 [mod_alias] security: potential path traversal with specific configs
Security: potential path traversal of a single directory above the alias
target with a specific mod_alias config where the alias which is matched
does not end in '/', but alias target filesystem path does end in '/'.

e.g. server.docroot = "/srv/www/host/HOSTNAME/docroot"
     alias.url = ( "/img" => "/srv/www/hosts/HOSTNAME/images/" )

If a malicious URL "/img../" were passed, the request would be
for directory "/srv/www/hosts/HOSTNAME/images/../" which would resolve
to "/srv/www/hosts/HOSTNAME/".  If mod_dirlisting were enabled, which
is not the default, this would result in listing the contents of the
directory above the alias.  An attacker might also try to directly
access files anywhere under that path, which is one level above the
intended aliased path.

credit: Orange Tsai(@orange_8361) from DEVCORE
2018-08-12 14:43:22 -04:00
doc [doc] minor update to *outdated* doc 2018-01-19 22:20:16 -05:00
scripts [build] move some build scripts to scripts/ 2016-10-30 16:47:53 -04:00
src [mod_alias] security: potential path traversal with specific configs 2018-08-12 14:43:22 -04:00
tests [tests] move src/test_*.c to src/t/ 2018-08-05 03:44:15 -04:00
.gitattributes update .gitignore, add .gitattributes 2017-02-28 12:01:53 -05:00
.gitignore [core] server.http-parseopts URL normalization opt (fixes #1720) 2018-08-12 14:43:22 -04:00
AUTHORS [doc] add self to AUTHORS (discussed w/ stbuehler) 2016-07-15 20:00:59 -04:00
CMakeLists.txt - next is 1.4.50 2018-03-11 21:54:44 -04:00
COPYING - white space cleanup part 2 this time 1.4 ;) 2006-10-04 13:26:23 +00:00
INSTALL [doc] use https:// URLs to .lighttpd.net resources 2017-10-22 15:01:48 -04:00
Makefile.am [meson] new build system 2017-10-28 22:54:45 -04:00
NEWS - next is 1.4.50 2018-03-11 21:54:44 -04:00
README [doc] use https:// URLs to .lighttpd.net resources 2017-10-22 15:01:48 -04:00
README.FreeBSD build with libressl 2016-05-07 12:50:41 -04:00
SConstruct - next is 1.4.50 2018-03-11 21:54:44 -04:00
autogen.sh [autobuild] put ax_prog_cc_for_build.m4 in top directory 2016-10-29 18:02:12 +02:00
configure.ac [tests] move src/test_*.c to src/t/ 2018-08-05 03:44:15 -04:00
distribute.sh.in [doc] use https:// URLs to .lighttpd.net resources 2017-10-22 15:01:48 -04:00
meson.build - next is 1.4.50 2018-03-11 21:54:44 -04:00
meson_options.txt [mod_authn_sasl] SASL auth (new) (fixes #2275) 2017-11-05 20:11:07 -05:00
packdist.sh [doc] use https:// URLs to .lighttpd.net resources 2017-10-22 15:01:48 -04:00

README

========
lighttpd
========

-------------
a light httpd
-------------

:abstract:
  lighttpd a secure, fast, compliant and very flexible web-server
  which has been optimized for high-performance environments. It has a very
  low memory footprint compared to other webservers and takes care of cpu-load.
  Its advanced feature-set (FastCGI, CGI, Auth, Output-Compression,
  URL-Rewriting and many more) make lighttpd the perfect webserver-software
  for every server that is suffering load problems.

:documentation:
  https://redmine.lighttpd.net/projects/lighttpd/wiki/

the naming
----------

lighttpd is a __httpd__ which is

- fast as __light__ning and
- __light__ when it comes to memory consumption and system requirements

Features
--------

Network
```````

- IPv4, IPv6

Protocols
`````````

- HTTP/1.0 (http://www.ietf.org/rfc/rfc1945.txt)
- HTTP/1.1 (http://www.ietf.org/rfc/rfc2616.txt)
- HTTPS (provided by openssl)
- CGI/1.1 (http://CGI-Spec.Golux.Com/)
- FastCGI (http://www.fastcgi.com/devkit/doc/fcgi-spec.html)

Advanced Features
`````````````````

- load-balanced FastCGI
  (one webserver distributes requests to multiple PHP-servers via FastCGI)
- custom error pages (for Response-Code 400-599)
- virtual hosts
- directory listings
- streaming CGI and FastCGI
- URL-Rewriting
- HTTP-Redirection
- output-compression with transparent caching

FastCGI-Support
```````````````

- parses the Response-header and completes the HTTP-header accordingly
- Keep-Alive handling based on Content-Length header

PHP-Support
```````````

- same speed as or faster than apache + mod_php4
- handles various PHP bugs in the FastCGI SAPI
- includes a utility to spawn FastCGI processes (necessary for PHP 4.3.x)

Security features
`````````````````

- chroot(), set UID, set GID
- protecting docroot

HTTP/1.1 features
`````````````````

- Ranges (start-end, start-, -end, multiple ranges)
- HTTP/1.0 Keep-Alive + HTTP/1.1 persistent Connections
- methods: GET, HEAD, POST
- Last-Modified + If-Modified handling
- sends Content-Length if possible
- sends Transfer-Encoding: chunk, if Content-Length is not possible
- sends Content-Type
- on-the-fly output compression (deflate, gzip)
- authentication: basic and digest
  (http://www.ietf.org/rfc/rfc2617.txt)

HTTP/1.1 compliance
```````````````````

- Sends 206 for Range Requests
- Sends 304 for If-Modified Requests
- Sends 400 for missing Host on HTTP/1.1 requests
- Sends 400 for broken Request-Line
- Sends 411 for missing Content-Length on POST requests
- Sends 416 for "out-of-range" on Range: Header
- Sends 501 for request-method != (GET|POST|HEAD)
- Sends 505 for protocol != HTTP/1.0 or HTTP/1.1
- Sends Date: on every requests

Intended Audience
-----------------

- Ad-Server Front-Ends ("Banner-Schleuder")
  - delivering small files rapidly
- php-servers under high load
  (load-balancing the php-request over multiple PHP-servers)

Works with
----------

It has been tested to work with

- IE 6.0
- Mozilla 1.x
- Konqueror 3.1
  (for Keep-Alive/Persistent Connections, Accept-Encoding for PHP + gzip)
- wget
  (for Resuming)
- acrobat plugin
  (for multiple ranges)


Works on
--------

lighttpd has been verified to compile and work on

- Linux
- FreeBSD
- NetBSD
- OpenBSD
- Solaris 8 + 9
- SGI IRIX 6.5
- Windows (when compiled under cygwin)
(and will likely compile and run on most unix-like systems with C99 compiler)

-----------------
Starting lighttpd
-----------------

As daemon in the background: ::

  $ lighttpd -f <configfile>

or without detaching from the console: ::

  $ lighttpd -D -f <configfile>