HackFest Series: Apache & httpd DoS Toolz

Lisa Kachold lisakachold at obnosis.com
Thu Jun 18 14:32:41 MST 2009


Yesterday RSnake released an interesting HTTP DoS tool that performs a
Denial of Service attack on Apache servers by exhausting available
connections by holding the connection open while sending incomplete
HTTP requests to the server.

The initial part of the HTTP request is standard:

GET / HTTP/1.1\r\n
Host: host\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;
Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR
3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n
Content-Length: 42\r\n

Notice that it is missing one CRLF to finish the header which is
otherwise completely legitimate. The bogus header line the tools sends
is currently:

X-a: b\r\n

So the server keeps waiting for the rest of the header.

RSnake explains:

"In considering the ramifcations of a slow denial of service attack
against particular services, rather than flooding networks, a concept
emerged that would allow a single machine to take down another
machine's web server with minimal bandwidth and side effects on
unrelated services and ports. The ideal situation for many denial of
service attacks is where all other services remain intact but the
webserver itself is completely inaccessible. Slowloris was born from
this concept, and is therefore relatively very stealthy compared to
most flooding tools.

Slowloris holds connections open by sending partial HTTP requests. It
continues to send subsequent headers at regular intervals to keep the
sockets from closing. In this way webservers can be quickly tied up.
In particular, servers that have threading will tend to be vulnerable,
by virtue of the fact that they attempt to limit the amount of
threading they'll allow. Slowloris must wait for all the sockets to
become available before it's successful at consuming them, so if it's
a high traffic website, it may take a while for the site to free up
it's sockets. So while you may be unable to see the website from your
vantage point, others may still be able to see it until all sockets
are freed by them and consumed by Slowloris. This is because other
users of the system must finish their requests before the sockets
become available for Slowloris to consume. If others re-initiate their
connections in that brief time-period they'll still be able to see the
site. So it's a bit of a race condition, but one that Slowloris will
eventually always win - and sooner than later."

Apache 1.x and 2.x are affected as well as Squid, so the number of
servers that are effected will be quite high.

The traffic to exhaust available connections on a server is slight.
Microsoft IIS 6.0 or 7.0 are not affected.

At the moment Apache's has not responded to state configuration change
that might  prevent this attack – increasing MaxClients will just
increase requirements for the attack.

Tomasz Miklas said that he was able to prevent the attack by using a
reverse proxy called Perlbal in front of an Apache server.  Of course
load balancers will, like IIS, probably not be effected (with this
exploit - check your headers and URI rewrites for other known
exploits).

Reference:

http://www.hackinthebox.org/index.php?name=News&file=article&sid=31831

-- 
(503)754-4452
http://en.wikipedia.org/wiki/User:LisaKachold
http://www.theregister.co.uk/2009/05/29/wikipedia_bans_scientology/


More information about the PLUG-discuss mailing list