Archiwum kategorii ‘Hacking’

Uwierzytelnianie NTLM i Single Sign On: czyli jak w PHP zalogować się do ActiveDirectory bez znajomości loginu i hasła

czwartek, 14 Kwiecień 2011

Przeglądając gotowe biblioteki PHP do uwierzytelniania w domenie ActiveDirectory zauważyłem, że żadne z tych rozwiązań nie pozwala na zalogowanie użytkownika domenowego bez konieczności podania przez niego loginu i hasła.

Funkcjonalność automatycznego logowania do domeny wbudowana jest oczywiście tylko w w przeglądarce Internet Explorer, ale powiedzmy sobie szczerze: w dużych firmach i korporacjach jest to nadal jedyna słuszna aplikacja do surfowania po Int(ra|er)necie.

Co ciekawe, w innych językach programowania (Java, C#) nie ma najmniejszego problemu, by użytkownik domenowy mógł wejść poprzez Internet Explorer do chronionego serwisu, istnieje tam wiele gotowych rozwiązań operujących na uwierzytelnianiu NTLM.

Po dwóch dniach spędzonych na czytaniu dokumentacji Microsoftu, Samby, oraz po sniffingu sieciowym, udało mi się zaimplementować działające rozwiązanie.

W niniejszym artykule postaram się przybliżyć schemat automatycznego logowania skryptów PHP do domeny ActiveDirectory za pomocą… ataku Man-in-the-middle. (więcej…)

Code injection czyli prosty wirus PHP zapisany w obrazku JPEG

poniedziałek, 11 Kwiecień 2011

Pracując jako programista i administrator usług w firmie hostingowej spotkałem się wielokrotnie z różnymi skryptami PHP obsługującymi galerie zdjęć lub download plików. O ile zazwyczaj mechanizm był podobny (polecenia typu file_get_contents(), fopen(), readfile()), to czasami zdarzały się mniej tradycyjne implementacje.

Do napisania tego artykułu natchnął mnie jeden użytkownik serwera, który zgłosił się do mnie z problemem wysyłania plików poprzez skrypt PHP. Niektóre pliki na jego stronie udawało się wysłać w całości, niektóre nie. Nie potrafił jednak dotrzeć do sedna sprawy.

Po krótkich oględzinach okazało się, że napisany przez niego skrypt oprócz pożądanej funkcjonalności posiadał także dodatkową: dzięki użyciu polecenia include() do odczytu obrazków, był podatny na code injection w języku PHP. (więcej…)

Ciasteczka HttpOnly oraz Secure, czyli zabezpieczenia których nie ma

czwartek, 7 Kwiecień 2011

Zgodnie z dokumentacją Microsoftu flaga HttpOnly przesłana w nagłówku HTTP Set-Cookie sprawia, że w przeglądarkach WWW obsługujących ten mechanizm skrypty JavaScript nie są w stanie odczytywać, ani modyfikować zawartości ciasteczka którego ten parametr dotyczył.

Podobnie działa mechanizm Secure, z tym że nie ukrywa on danych przed skryptami JS, lecz dotyczy rodzaju połączenia, przez które przesyłane jest ciasteczko. Jeśli zostało ono ustawione jako bezpieczne, przeglądarka WWW wyśle je do serwera jedynie wtedy, gdy połączenie jest szyfrowane (HTTPS).

Poniżej prezentuję prosty przykład w języku JavaScript łamiący częściowo te zabezpieczenia. (więcej…)

Shared hosting: wykradanie ciasteczek HTTP

czwartek, 7 Kwiecień 2011

  click here to see different articles in english

Serwery typu shared web hosting posiadają jedną wielką zaletę, w przeciwieństwie do serwerów dedykowanych założenie konta jest na nich bardzo tanie. Pozwala to na szybkie i bezproblemowe założenie niewielkiej strony internetowej, małego sklepu, czy też własnego portfolio bez większych nakładów finansowych.

Wiadomo jednak, że serwery te posiadają też i swoje mroczne strony, związane szczególnie z bezpieczeństwem.

W tym artykule skupię się na jednym z mniej znanych luk bezpieczeństwa – na wykradaniu ciasteczek HTTP pomiędzy różnymi kontami na tym samym serwerze. (więcej…)

Pilnuj kodu swego…

piątek, 1 Kwiecień 2011

Black hatWpis ten dotyczy programistów, którzy w nazewnictwie własnych plików wyznają zasadę, że biblioteki PHP powinny nosić rozszerzenie *.php.inc, oraz osób, które z sobie tylko znanych powodów stosują inne warianty rozszerzeń (np. *.inc, *.asp lub *.phtml).

Choć moda na takie nazewnictwo przeminęła wiele lat temu wraz z niektórymi książkami uczącymi języka PHP, okazuje się jednak, że jest to nadal często spotykany proceder w Internecie.

Niestety jest to także jeden z podstawowych i najgroźniejszych błędów bezpieczeństwa. (więcej…)

Jak obejść limit przestrzeni dyskowej na koncie WWW

czwartek, 24 Marzec 2011

Przy wyborze serwera hostingowego pod nową stronę WWW jednym z głównych czynników decydujących „za” lub „przeciw” jest limit dostępnej przestrzeni dyskowej.

Chociaż w dzisiejszych czasach większość firm na rynku prześciga się między sobą w ilości oferowanych gigabajtów (tak dostępnego transferu, jak i powierzchni), zademonstruję, jak te limity obejść całkowicie (lecz krótkoterminowo). (więcej…)

Oszukać przeznaczenie, czyli łamanie SAFE_MODE oraz max_execution_time

środa, 23 Marzec 2011

Większość programistów PHP choć raz w swoim życiu spotkało się z takimi terminami jak SAFE_MODE oraz limitem czasowym wykonywania programu w PHP (domyślnie 30 sekund).

O ile obie te rzeczy można łatwo wyłączyć, gdy pracuje się na serwerze dedykowanym lub w środowisku wewnętrznym firmy, to na hostingach współdzielonych obie te rzeczy potrafią przyprawić o ból głowy, wyłączając skrypt (np. migrujący dużą ilość danych) w trakcie jego wykonywania.

W tym artykule przedstawię prostą metodę na obejście tego zabezpieczenia. (więcej…)