Mam wiele prób na moim (małym, osobistym i absolutnie nieistotnym) serwerze sieciowym, a apache i fail2ban zwykle wykonują swoją pracę poprawnie. Ale martwi mnie wpis w dzienniku:
xx.yy.www.zzz - - [9/Jul/2011:12:42:15 +0100] "GET http://allrequestsallowed.com/?PHPSESSID=5gh6ncjh00043YVMWTW_B%5CFAP HTTP/1.1" 200 432 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12"
Problem polega na tym, że odpowiedzią nie był kod 404, lecz 200. Czy to jest ok? Wydaje mi się to dziwne, ale moja wiedza w tej dziedzinie (i wielu innych) jest, delikatnie mówiąc, ograniczona.
curl -v http://allrequestsallowed.com/?PHPSESSID=5gh6ncjh00043YVMWTW_B%5CFAP -x www.example.com:80
. Domyślna konfiguracja wydaje się zwracać stronę „Witamy w nginx” bez znaczącej zawartości w naszym systemie Ubuntu. Jest to więc odpowiedź 200, ale jest to prosta strona typu catch-all - właściwie nie zastępujemy żądania w innym miejscu ani nic takiego.Odpowiedzi:
Po pierwsze, nie wiem, co rzekomo atakujący stara się osiągnąć. Może istnieje skrypt PHP lub wersja PHP podatna na dziwny atak identyfikacyjny sesji, nie wiem. Prawdopodobnie nie masz się czym martwić.
Twój serwer zachowywał się dokładnie tak, jak oczekiwano. 200 jest oczekiwanym kodem w tej konkretnej sytuacji ze względu na to, jak Apache interpretuje przekazywany do niego adres URL.
Po pierwsze,
http://allrequestsallowed.com
jest traktowany jak zwykły nagłówek „Host:” (zauważ, że nie sądzę, że jest to określone w RFC, a inne serwery mogą nie interpretować tego w ten sposób,że się myliłem, jest to określone w RFC 2616 w sekcji 5.1. 2, chociaż klienci rzadko używają tej formy. Przepraszam, muszę naprawić implementację serwera HTTP, o której pisałem jakiś czas temu ...).Teraz prawdopodobnie nie masz witryny o nazwie „allrequestsallowed.com”. Co się stanie, gdy Apache otrzyma
Host:
nagłówek (lub odpowiednik) dla nazwy hosta, której nie rozpoznaje? Domyślnie wybiera pierwszego wirtualnego hosta. Jest to dobrze zdefiniowane i udokumentowane zachowanie Apache. Niezależnie od tego, jaki jest Twój pierwszy wirtualny host (lub tylko główna konfiguracja serwera, jeśli nie ma żadnych vhostów), niezależnie od tego, jak się nazywa.Teraz reszta podanego adresu URL składa się z dwóch części - ścieżki
/
i parametru GET (?PHPSESSID...
bit).Teraz ścieżka
/
powinna być obecna na prawie każdym serwerze WWW. W większości przypadków, mapuje do czegoś podobnegoindex.html
, a może windex.php
skrypcie, choć można przesłonić tego oczywiście.Jeśli jest mapowany na statyczny plik HTML, absolutnie nic się nie dzieje - zawartość pliku jest zwracana, i to po prostu parametr jest ignorowany. (Zakładając, że nie masz określonych zaawansowanych dyrektyw konfiguracji i prawie na pewno nie masz.)
Z drugiej strony, jeśli jest to jakiś skrypt,
PHPSESSID
zmienna zostanie przekazana do skryptu. Jeśli skrypt faktycznie używa tej zmiennej (w tym konkretnym przypadku prawdopodobnie tylko skrypty PHP korzystające z wbudowanej obsługi sesji PHP), jego zachowanie będzie zależeć od zawartości.Jednak najprawdopodobniej nawet jeśli
/
zdarzy się, że mapujesz skrypt PHP za pomocą sesji, nic niezwykłego się nie wydarzy. Identyfikator sesji prawdopodobnie i tak nie będzie istniał i albo zostanie zignorowany, albo skrypt wyświetli błąd.W mało prawdopodobnym przypadku, gdy istnieje identyfikator sesji, osoba atakująca może przypuszczalnie przejąć sesję innej osoby. To byłoby złe, ale tak naprawdę nie jest to luka w zabezpieczeniach sama w sobie - dziura byłaby wszędzie tam, gdzie atakujący uzyskał informacje o identyfikatorze sesji (wąchanie sieci bezprzewodowej jest dobrym kandydatem, jeśli nie używasz HTTPS). Nie byliby w stanie nic zrobić, czego nie mógł zrobić użytkownik, którego sesja pierwotnie była.
Edycja: Dodatkowo „% 5C” wewnątrz SESSIONID odwzorowuje znak odwrotnego ukośnika. To wydaje się być testem na ataki na katalogi na hosty Windows.
źródło
nginx
lublighttpd
, a po wysłaniu adresów IP / hostów źródłowych do firmy zajmującej się analizą cybernetyczną potwierdzono, że między innymi próbowano wykorzystać dziury w serwerze . Podobne żądania, jak to określone przez PO, różne hosty. Czy mówisz, że należy je całkowicie zignorować? Ponieważ jeśli są naprawdę zaniepokojeni, mogą zablokować hosta (hosty)iptables
.Mam wszystko, o co prosiłem, zalogowałem się na ip, który jest używany jako rekord dla wszystkich naszych domen parkingowych.
Moje podejście polega na tym, że ta nazwa hosta jest używana w połączeniu z lokalnym plikiem hosta „atakującego” wskazującym na host docelowy.
Rzeczywisty serwer na 31.44.184.250 służy tylko do obsługi zewnętrznych żądań.
Moja opinia: całkowicie nieszkodliwa. Nie widzę w tym żadnej wartości dodanej, z wyjątkiem rzeczy, które można zrobić z dowolną inną fałszywą nazwą domeny w pliku hosta.
źródło