Source code Review / SAST Tools
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Jest darmowy pakiet do przeglądania PR-ów.
To narzędzie Open Source.
Kategoria | Języki |
---|---|
GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
Beta | Kotlin · Rust |
Eksperymentalny | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
Możesz również użyć rozszerzenia semgrep VSCode, aby uzyskać wyniki wewnątrz VSCode.
Istnieje instalowalna darmowa wersja.
Istnieje darmowa wersja do zainstalowania, ale zgodnie z licencją możesz używać darmowej wersji codeQL tylko w projektach Open Source.
Pierwszą rzeczą, którą musisz zrobić, to przygotować bazę danych (utworzyć drzewo kodu), aby później zapytania mogły być na niej uruchamiane.
Możesz pozwolić codeql na automatyczne zidentyfikowanie języka repozytorium i utworzenie bazy danych
To zwykle spowoduje błąd mówiący, że określono więcej niż jeden język (lub automatycznie wykryto). Sprawdź następne opcje, aby to naprawić!
Możesz to zrobić ręcznie wskazując repo i język (lista języków)
Jeśli twoje repozytorium używa więcej niż 1 języka, możesz również stworzyć 1 bazę danych na język, wskazując każdy język.
Możesz również pozwolić codeql
na identyfikację wszystkich języków za Ciebie i utworzenie bazy danych dla każdego języka. Musisz podać GITHUB_TOKEN.
Teraz w końcu nadszedł czas na analizę kodu
Pamiętaj, że jeśli użyłeś kilku języków, baza danych na każdy język zostanie utworzona w ścieżce, którą określiłeś.
Możesz wizualizować wyniki w https://microsoft.github.io/sarif-web-component/ lub używając rozszerzenia VSCode SARIF viewer.
Możesz również użyć rozszerzenia VSCode, aby uzyskać wyniki wewnątrz VSCode. Nadal będziesz musiał ręcznie utworzyć bazę danych, ale potem możesz wybrać dowolne pliki i kliknąć Prawy przycisk myszy
-> CodeQL: Uruchom zapytania w wybranych plikach
Istnieje darmowa wersja do zainstalowania.
Możesz również użyć rozszerzenia snyk VSCode, aby uzyskać wyniki wewnątrz VSCode.
Jest Open Source, ale wygląda na nieutrzymywane.
Java (Maven i Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C# i Javascript (Node.js).
Darmowe dla publicznych repozytoriów.
yarn
pnpm
nodejsscan: Statyczny skaner bezpieczeństwa kodu (SAST) dla aplikacji Node.js zasilany przez libsast i semgrep.
RetireJS: Celem Retire.js jest pomoc w wykrywaniu użycia wersji bibliotek JS z znanymi lukami.
electronegativity: To narzędzie do identyfikacji błędnych konfiguracji i wzorców antybezpieczeństwa w aplikacjach opartych na Electronie.
Bandit: Bandit to narzędzie zaprojektowane do znajdowania powszechnych problemów z bezpieczeństwem w kodzie Pythona. Aby to zrobić, Bandit przetwarza każdy plik, buduje z niego AST i uruchamia odpowiednie wtyczki na węzłach AST. Gdy Bandit zakończy skanowanie wszystkich plików, generuje raport.
safety: Safety sprawdza zależności Pythona pod kątem znanych luk w zabezpieczeniach i sugeruje odpowiednie rozwiązania dla wykrytych luk. Safety można uruchomić na maszynach deweloperów, w pipeline'ach CI/CD oraz na systemach produkcyjnych.
Pyt: Nieutrzymywane.
Zadanie | Komenda |
---|---|
Wykonaj Jar | java -jar [jar] |
Rozpakuj Jar | unzip -d [output directory] [jar] |
Utwórz Jar | jar -cmf META-INF/MANIFEST.MF [output jar] * |
Base64 SHA256 | sha256sum [file] | cut -d' ' -f1 | xxd -r -p | base64 |
Usuń podpis | rm META-INF/.SF META-INF/.RSA META-INF/*.DSA |
Usuń z Jara | zip -d [jar] [file to remove] |
Dekompiluj klasę | procyon -o . [path to class] |
Dekompiluj Jar | procyon -jar [jar] -o [output directory] |
Skompiluj klasę | javac [path to .java file] |
https://www.pluginvulnerabilities.com/plugin-security-checker/
Burp:
Spider i odkrywanie treści
Sitemap > filtr
Sitemap > kliknij prawym przyciskiem na domenę > Narzędzia zaangażowania > Znajdź skrypty
waybackurls <domain> |grep -i "\.js" |sort -u
Zobacz niektóre z narzędzi wymienionych w 'Deobfuscate/Unpack' poniżej.
Uwaga: Może nie być możliwe pełne deobfuskowanie.
Znajdź i użyj plików .map:
Jeśli pliki .map są dostępne, można je wykorzystać do łatwego deobfuskowania.
Zwykle foo.js.map mapuje do foo.js. Ręcznie ich szukaj.
Użyj JS Miner, aby ich poszukać.
Upewnij się, że przeprowadzono aktywne skanowanie.
Przeczytaj 'Tips/Notes'
Jeśli znajdziesz, użyj Maximize, aby deobfuskować.
Bez plików .map, spróbuj JSnice:
Odnośniki: http://jsnice.org/ & https://www.npmjs.com/package/jsnice
Wskazówki:
Jeśli używasz jsnice.org, kliknij przycisk opcji obok przycisku "Nicify JavaScript" i odznacz "Infer types", aby zredukować zaśmiecanie kodu komentarzami.
Upewnij się, że nie zostawiasz pustych linii przed skryptem, ponieważ może to wpłynąć na proces deobfuskacji i dać niedokładne wyniki.
Dla niektórych nowocześniejszych alternatyw dla JSNice, możesz spojrzeć na następujące:
Javascript decompiler, unpacker i unminify toolkit Wakaru to dekompilator Javascript dla nowoczesnego frontend. Przywraca oryginalny kod z zbundlowanego i transpilego źródła.
Deobfuscate obfuscator.io, unminify i unpack zbundlowany javascript
Un-minify Javascript code using ChatGPT To narzędzie wykorzystuje duże modele językowe (jak ChatGPT i llama2) oraz inne narzędzia do un-minify Javascript code. Zauważ, że LLM nie dokonują żadnych zmian strukturalnych – tylko dostarczają wskazówki do zmiany nazw zmiennych i funkcji. Ciężka praca wykonywana jest przez Babel na poziomie AST, aby zapewnić, że kod pozostaje równoważny 1-1.
Używanie LLM do odwracania minifikacji nazw zmiennych JavaScript
Użyj console.log()
;
Znajdź wartość zwracaną na końcu i zmień ją na console.log(<packerReturnVariable>);
, aby deobfuskowany js był drukowany zamiast wykonywany.
Następnie wklej zmodyfikowany (i nadal obfuskowany) js do https://jsconsole.com/, aby zobaczyć deobfuskowany js zalogowany w konsoli.
Na koniec wklej deobfuskowany wynik do https://prettier.io/playground/, aby go upiększyć do analizy.
Uwaga: Jeśli nadal widzisz spakowany (ale inny) js, może być on rekurencyjnie spakowany. Powtórz proces.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)