Source code Review / SAST Tools
Last updated
Last updated
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Es gibt ein kostenloses Paket zur Überprüfung von PRs.
Es ist ein Open Source-Tool.
GA
C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX
Beta
Kotlin · Rust
Experimental
Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp ·
Sie können auch die semgrep VSCode-Erweiterung verwenden, um die Ergebnisse in VSCode zu erhalten.
Es gibt eine installierbare kostenlose Version.
Es gibt eine installierbare kostenlose Version, aber laut der Lizenz darfst du die kostenlose CodeQL-Version nur in Open-Source-Projekten verwenden.
Das erste, was Sie tun müssen, ist, die Datenbank vorzubereiten (den Codebaum zu erstellen), damit später die Abfragen darüber ausgeführt werden.
Sie können codeql erlauben, die Sprache des Repos automatisch zu identifizieren und die Datenbank zu erstellen
Dies wird normalerweise einen Fehler auslösen, der besagt, dass mehr als eine Sprache angegeben (oder automatisch erkannt) wurde. Überprüfen Sie die nächsten Optionen, um dies zu beheben!
Sie können dies manuell angeben, indem Sie das Repo und die Sprache angeben (Liste der Sprachen)
Wenn Ihr Repo mehr als 1 Sprache verwendet, können Sie auch 1 DB pro Sprache erstellen, die jede Sprache angibt.
Sie können auch codeql
erlauben, alle Sprachen für Sie zu identifizieren und eine DB pro Sprache zu erstellen. Sie müssen ihm ein GITHUB_TOKEN geben.
Jetzt ist es endlich Zeit, den Code zu analysieren
Denke daran, dass, wenn du mehrere Sprachen verwendet hast, eine DB pro Sprache im angegebenen Pfad erstellt worden wäre.
Sie können die Ergebnisse in https://microsoft.github.io/sarif-web-component/ oder mit der VSCode-Erweiterung SARIF viewer visualisieren.
Sie können auch die VSCode-Erweiterung verwenden, um die Ergebnisse in VSCode zu erhalten. Sie müssen jedoch manuell eine Datenbank erstellen, aber dann können Sie beliebige Dateien auswählen und auf Rechtsklick
-> CodeQL: Abfragen in ausgewählten Dateien ausführen
klicken.
Es gibt eine installierbare kostenlose Version.
Sie können auch die snyk VSCode Extension verwenden, um Ergebnisse innerhalb von VSCode zu erhalten.
Es ist Open Source, sieht aber nicht gewartet aus.
Java (Maven und Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C# und Javascript (Node.js).
Kostenlos für öffentliche Repos.
yarn
pnpm
nodejsscan: Statischer Sicherheitscode-Scanner (SAST) für Node.js-Anwendungen, unterstützt von libsast und semgrep.
RetireJS: Das Ziel von Retire.js ist es, Ihnen zu helfen, die Verwendung von JS-Bibliotheksversionen mit bekannten Sicherheitsanfälligkeiten zu erkennen.
electronegativity: Es ist ein Tool zur Identifizierung von Fehlkonfigurationen und Sicherheits-Anti-Patterns in auf Electron basierenden Anwendungen.
Bandit: Bandit ist ein Tool, das entwickelt wurde, um häufige Sicherheitsprobleme im Python-Code zu finden. Dazu verarbeitet Bandit jede Datei, erstellt einen AST daraus und führt geeignete Plugins gegen die AST-Knoten aus. Sobald Bandit das Scannen aller Dateien abgeschlossen hat, erstellt es einen Bericht.
safety: Safety überprüft Python-Abhängigkeiten auf bekannte Sicherheitsanfälligkeiten und schlägt die entsprechenden Maßnahmen zur Behebung der festgestellten Schwachstellen vor. Safety kann auf Entwicklermaschinen, in CI/CD-Pipelines und auf Produktionssystemen ausgeführt werden.
Pyt: Nicht mehr gewartet.
Jar ausführen
java -jar [jar]
Jar entpacken
unzip -d [output directory] [jar]
Jar erstellen
jar -cmf META-INF/MANIFEST.MF [output jar] *
Base64 SHA256
sha256sum [file] | cut -d' ' -f1 | xxd -r -p | base64
Signatur entfernen
rm META-INF/.SF META-INF/.RSA META-INF/*.DSA
Aus Jar löschen
zip -d [jar] [file to remove]
Klasse dekompilieren
procyon -o . [path to class]
Jar dekompilieren
procyon -jar [jar] -o [output directory]
Klasse kompilieren
javac [path to .java file]
https://www.pluginvulnerabilities.com/plugin-security-checker/
Burp:
Spider und entdecke Inhalte
Sitemap > Filter
Sitemap > Rechtsklick auf die Domain > Engagement-Tools > Skripte finden
waybackurls <domain> |grep -i "\.js" |sort -u
Siehe einige der Werkzeuge, die unten unter 'Deobfuscate/Unpack' erwähnt werden.
Hinweis: Es ist möglicherweise nicht möglich, vollständig zu deobfuscate.
Finde und benutze .map-Dateien:
Wenn die .map-Dateien exponiert sind, können sie verwendet werden, um leicht zu deobfuscate.
Häufig mappt foo.js.map auf foo.js. Suche manuell danach.
Verwende JS Miner, um danach zu suchen.
Stelle sicher, dass ein aktiver Scan durchgeführt wird.
Lies 'Tipps/Notizen'
Wenn gefunden, benutze Maximize, um zu deobfuscate.
Ohne .map-Dateien, versuche JSnice:
Referenzen: http://jsnice.org/ & https://www.npmjs.com/package/jsnice
Tipps:
Wenn du jsnice.org verwendest, klicke auf die Optionsschaltfläche neben der Schaltfläche "Nicify JavaScript" und deaktiviere "Infer types", um das Code mit Kommentaren nicht zu überladen.
Stelle sicher, dass du keine leeren Zeilen vor dem Skript lässt, da dies den Deobfuscation-Prozess beeinträchtigen und ungenaue Ergebnisse liefern kann.
Für einige modernere Alternativen zu JSNice könntest du dir Folgendes ansehen:
Javascript-Dekompilierer, Unpacker und Unminify-Toolkit Wakaru ist der Javascript-Dekompilierer für modernes Frontend. Es stellt den ursprünglichen Code aus einer gebündelten und transpilierten Quelle wieder her.
Deobfuscate obfuscator.io, unminify und unpack gebündeltes Javascript
Un-minify Javascript-Code mit ChatGPT Dieses Tool verwendet große Sprachmodelle (wie ChatGPT & llama2) und andere Werkzeuge, um Javascript-Code zu un-minify. Beachte, dass LLMs keine strukturellen Änderungen vornehmen – sie geben nur Hinweise zur Umbenennung von Variablen und Funktionen. Die schwere Arbeit wird von Babel auf AST-Ebene erledigt, um sicherzustellen, dass der Code 1-1 äquivalent bleibt.
Verwendung von LLMs zur Umkehrung der Minifizierung von JavaScript-Variablen
Verwende console.log()
;
Finde den Rückgabewert am Ende und ändere ihn in console.log(<packerReturnVariable>);
, damit das deobfuscierte js anstelle der Ausführung gedruckt wird.
Füge dann das modifizierte (und immer noch obfuskiertes) js in https://jsconsole.com/ ein, um das deobfuscierte js in der Konsole zu sehen.
Schließlich füge die deobfuscierte Ausgabe in https://prettier.io/playground/ ein, um sie für die Analyse zu beautify.
Hinweis: Wenn du immer noch gepacktes (aber anderes) js siehst, könnte es rekursiv gepackt sein. Wiederhole den Prozess.
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)