eRIZ's weblog

PHP, webdesign, Linux, Windows i inne, bo nie samym chlebem człowiek żyje

Nasza-klasa owned!

Włamałem się do systemu NK? Nie. ;) Ale ofiara pewnego triku, na który wpadłem przyglądając się fanatykom fotkowania na naszej-klasie może tak pomyśleć.

Ile to osób może zacząć gotować się ze złości, gdy pilnie potrzebuje jakiejś WARTOŚCIOWEJ informacji z Sieci, a nie może, gdyż osobnik(i) o zazwyczaj ilorazie inteligencji zmierzającym ku zeru okupuje kompa, trwoniąc czas na oglądanie „komci i foci” na lepszym klonie fotka.pl? Najczęściej takiego osobnika nie da się łatwym sposobem wykurzyć sprzed komputera, więc czemu by nie sprawić, aby taka osoba wykipiała ze złości zwalniając komputer? ;)

Można by było po prostu wyciąć cały ruch na photos.nasza-klasa.pl. Ale po co? Prawdziwy BOFH nigdy nie przegapi okazji, aby się trochę zabawić. ;)

Inspiracją był dla mnie tekst napisany przez pewnego BOFH-a, któremu wbijano się do sieci bezprzewodowej. Mógłby zaszyfrować cały ruch, ale czemu by się nie zabawić? Postanowił on przepuszczać wszystkie obrazki osób spoza sieci przez diabelski skrypt, który czynił z nimi różne psikusy. Można je np. obrócić je o 180°… Oczywiście, można puścić wodze fantazji i np. przekierowywać na zdjęcia śmiesznych fotek. ;)

studium przypadku – czysty PC

Stoi komp z Windows na pokładzie. Nie ma na nim zainstalowanego żadnego serwera www, ogólnie czysty system przygotowany do serfowania po Sieci.

Aby trik się udał, potrzebujemy zainstalować i uruchomić serwer WWW, który będzie obsługiwał żądania wysyłane przez przeglądarkę do photos.nasza-klasa.pl. Pewnie niektórzy się domyślą, o co może chodzić, ale zapraszam do dalszej lektury. ;)

Nie ma sensu katować systemu Apachem, wystarczy nam dowolny serwer obsługujący PHP i przepisywanie adresów (rewrite). Po krótkich poszukiwaniach znalazłem Abyss Web Server. Nie robiłem testów przeciążeniowych, ale jest to bardzo lekki serwer oferujący całkiem przyzwoitą funkcjonalność, w dodatku umożliwia w standardzie komunikację z PHP przez interfejs FastCGI oraz – z czym się spotkałem tylko w przypadku MS SQL Servera – „nazwanych rurek” (named pipes). Bardzo miła niespodzianka. ;) O nim napiszę innym razem.

składniki instalacji

Instalacja do szczególnie skomplikowanych nie należy, jedynie przy ostatnim kroku ukazuje się okienko, które pyta, w jakim trybie startować serwer. Jeśli ma startować przy każdym uruchomieniu systemu, to polecam odpalanie w trybie usługi.

tryb startu

Po instalacji zgadzamy się na wystartowanie serwera i odpalenie konsoli. Otworzy się przeglądarka z panelem służącym zarządzaniem serwerem. Wybieramy język, podajemy nazwę użyszko… administratora serwera i hasło. Po zatwierdzeniu zmian, logujemy się z wykorzystaniem ustalonych danych.

autoryzacja

Teraz ukaże się lista z jednym dostępnym serwerem. Jeśli w kolumnie port widnieje inna liczba niż 80, to znaczy, że należy się upewnić, czy jakaś inna usługa nie pełni roli serwera. Może to być również Skype, który w opcjach ma włączoną opcję Użyj portów 80 i 443 jako alternatywnych dla połączeń przychodzących (zaawansowane/połączenie).

serwer

Jeśli port nie był ustawiony na 80 i uporaliśmy się z aplikacją zajmującą port, to klikamy na General i zmieniamy opcję HTTP Port na Default HTTP Port (80) i zatwierdzamy zmiany przyciskiem OK.

port

Teraz przyszła pora na instalację PHP. Ściągamy paczkę dla Windows i rozpakowujemy w jakimś katalogu (może być nawet w katalogu serwera; najważniejsze, aby wiedzieć, gdzie ;)). Zmieniamy nazwę pliku php.ini-recommended na php.ini i otwieramy w notatniku. Upewnij się, że odpowiednie opcje są ustawione:

  • extension_dir = „./ext”
  • allow_url_fopen = On
  • ;extension=php_gd2.dll – usuwamy średnik z początku linii

Pozostaje tylko zapisać plik i wracamy do konfiguracji w panelu.

Klik na Scripting Parameters i w grupie Interpreters klikamy Add. W Interface zmieniamy wartość na FastCGI (Local Pipes). Następnie, wskazujemy lokalizację do pliku php-cgi.exe. Można wpisać ręcznie, można „wyklikać” (przycisk browse). Teraz zmień Type na PHP Style. W grupie Associated Extensions kliknij Add i wpisz php. Zatwierdź wszystkie zmiany powracając do indeksu konsoli zarządzania serwerem.

konfiguracja PHP

I przyszła kolej na ostatni etap konfiguracji serwera, czyli przepisywanie adresów. URL Rewriting, Add. W polu Virtual Path Regular Expression wpisujemy .*, Redirect to/index.php.

rewrite

Zatwierdzamy wszystkie zmiany, po czym klikamy na Restart. Koniec konfiguracji serwera. ;)

Aby sprawdzić, czy wszystko działa prawidłowo, wpisz 127.0.0.1 w pasku adresu przeglądarki. Jeśli wyświetla się strona testowa serwera, to znaczy, że działa OK. Jeśli nie, przeanalizuj konfigurację jeszcze raz; sprawdź, czy nic nie blokuje portu serwera, itp.

developer z Apache

Pewnie masz zainstalowany Apache, więc problem z serwerem masz z głowy. Jeśli jednak go masz – zapraszam do lektury.

Jedyne, co jest dodatkowo wymagane w przypadku Mohikanina, to zdefiniowanie wirtualnego serwera:

  1. NameVirtualHost *:80
  2.  
  3. <VirtualHost photos.nasza-klasa.pl:80>
  4.     DocumentRoot "D:/tmp/nk"
  5.     ServerName photos.nasza-klasa.pl
  6. </VirtualHost>

No i oczywiście, .htaccess w katalogu docelowym:

  1. RewriteEngine On
  2. RewriteRule .* index.php

Magia ;)

Zasada działania skryptu jest bardzo prosta. Ze względu na to, iż w ostatnim kroku posłużymy się pewnym oszustwem w stosunku do systemu operacyjnego, żądanie musimy wysłać bezpośrednio wg adresu IP. Pobrany obrazek obrabiamy przy użyciu funkcji biblioteki GD, a te stwarzają dość duże pole do manewru, ja użyłem prostego do góry „nogami”. ;) Nic nie stoi na przeszkodzie, aby zaadaptować skrypt do współpracy z ImageMagick.

Pobieramy skrypt i zapisujemy go jako index.php w katalogu htdocs serwera. Można skasować wszystkie pozostałe pliki, nie przydadzą się. ;)

Mała uwaga: w przypadku Apache, trzeba zamienić $_SERVER[‚URL’] na $_SERVER[‚REQUEST_URI’]. To wszystko.

…i małe oszustwo

Teraz trzeba wmówić systemowi, że wszystkie żądania wysyłane do photos.nasza-klasa.pl mają być wysyłane do siebie. W tym celu, otwieramy w notatniku plik \Windows\System32\Drivers\etc\hosts i dopisujemy na końcu linijkę:

  1. 127.0.0.1    photos.nasza-klasa.pl

i zapisujemy zmiany. Na wszelki wypadek, przyda się wykonanie komendy ipconfig /flushdns.

działa?

Jeśli zmiany nie będą wprowadzone od razu, to wystarczy zrestartować system. A efekt zmian? Hmm, wystarczy popatrzeć. ;)

Nasza-klasa owned! ;)

Oczywiście, nic nie stoi na przeszkodzie, aby z tego tricku skorzystać pod Linuskiem („cha-cha”). Wystarczy zastosować inny demon serwera. ;)

PS. Aby wrócić do poprzedniego stanu, wystarczy wykasować dodaną linijkę z pliku hosts i ew. zrestartować system.

11 komentarzy

dopisz swój :: trackback :: RSS z komentarzami

RSS z komentarzami :: trackback

Skomentuj

Możesz używać znaczników XHTML. Dozwolone są następujące tagi: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Wszystkie komentarze przechodzą przez moderację oraz filtry antyspamowe. Nie zostanie opublikowany komentarz, jeśli:

  • Jego treść obraża kogokolwiek.
  • W treści znajdują się wulgaryzmy i słownictwo ogólnie uznane za nieprzyzwoite.
  • Mam wątpliwości co do autora wpisu (Wszelkie anonimy są kasowane - niezależnie od zawartości - wpisz prawdziwy e-mail. Jeśli usunąłem, Twoim zdaniem, komentarz niesłusznie - daj znać). Zdarza się, iż sprawdzam kim jest komentujący.
  • Zawiera jakąkolwiek formę reklamy.

Szufladka