Wyciekające nagłówki HTTP
Napisał: Patryk Krawaczyński
20/10/2016 w Pen Test Brak komentarzy. (artykuł nr 563, ilość słów: 372)
W
świecie HTTP istnieje wiele nagłówków. Niektóre z nich starają się nas chronić inne – wręcz przeciwnie. Poszczególne urządzenia równoważenia obciążenia, serwery www oraz aplikacje webowe ujawniają informacje odnośnie swoich wersji. Czasami dochodzi również do ujawnienia informacji o wewnętrznych sieciach przed którymi się one znajdują. Poniżej zamieszczam kilka przykładów takich wycieków.
Zacznijmy od serwerów proxy, które w nagłówkach o nazwie X-Cache często informują twórców swoich konfiguracji, czy odpowiedź pochodzi z ich pamięci cache (HIT) lub nie (MISS). Daje to możliwość oszacowania jak bardzo efektywna jest warstwa cache. Niestety bardzo często zdarza się, że oprócz samej informacji o trafieniu lub chybieniu dodawana jest również informacja o serwerze, którzy obsłużył żądanie za proxy:
HTTP/1.1 400 Bad Request Server: squid/3.3.8 Mime-Version: 1.0 Date: Mon, 17 Oct 2016 07:59:23 GMT Content-Type: text/html Content-Length: 3162 X-Squid-Error: ERR_INVALID_URL 0 Vary: Accept-Language Content-Language: en X-Cache: MISS from ip-172-31-37-205 X-Cache-Lookup: NONE from ip-172-31-37-205:8080 Connection: close
Podobnie zachowują się niektóre serwery pośredniczące, które pełnią rolę bram lub proxy pomiędzy klientem, a docelowym, chronionym zasobem. Wykorzystują one do tego nagłówek Via, w którym umieszczają informację o swojej obecności:
HTTP/1.1 403 IPAuthorizedOnly Via: 1.1 172.22.66.75 (McAfee Web Gateway 7.4.2.10.0.19503) Connection: Keep-Alive Content-Type: text/html Cache-Control: no-cache Content-Length: 2403
A co jeśli dany zasób jest gdzieś indziej? Wtedy pojawia się temat przekierowań, czyli kodów 3xx, które zawierają instrukcje gdzie należy się udać, aby osiągnąć ostateczny cel. Do tego celu służy nagłówek Location, który podaje nową ścieżkę dostępu:
HTTP/1.1 200 OK CACHE-CONTROL: max-age=1800 DATE: Mon, 17 Oct 2016 02:40:05 GMT EXT: LOCATION: http://192.168.0.100:80/upnpdevicedesc.xml OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01 01-NLS: 7c1a6d66-1dd2-11b2-887f-97ebdbc58150 SERVER: Linux/3.0.8, UPnP/1.0, Portable SDK for UPnP devices/1.6.18 X-User-Agent: redsonic ST: upnp:rootdevice USN: uuid:48353535-3931-3339-3631-2857BE8C1F45::upnp:rootdevice
Innym wariantem jest Content-Location:
HTTP/1.1 200 OK Content-Length: 1433 Content-Type: text/html Content-Location: http://10.229.5.67/iisstart.htm Last-Modified: Fri, 21 Feb 2003 23:48:30 GMT Accept-Ranges: bytes ETag: "09b60bc3dac21:239" Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET Date: Mon, 17 Oct 2016 07:47:07 GMT
Po dokonaniu konfiguracji wybranego urządzenia, serwera lub webaplikacji pamiętajmy o dokładnym sprawdzeniu informacji, jakie są udostępniane. Nie tylko na początku, ale także w ciągłym cyklu rozwoju, ponieważ bardzo często różne rzeczy zmieniane są w wraz z wydawaniem kolejnych wersji lub manipulowaniu poszczególnymi opcjami.
Więcej informacji: Understanding cache HIT and MISS headers with shielded services, IIS 7.5 Internal IP Disclosure on a 3xx Request, Internet Information Server returns IP address in HTTP header (Content-Location), Beware the Via header and its bandwidth impact on your origin