Source code Review / SAST Tools
Last updated
Last updated
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
C'è un pacchetto gratuito per rivedere le PR.
È uno strumento Open Source.
Categoria | Lingue |
---|---|
GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
Beta | Kotlin · Rust |
Sperimentale | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
Puoi anche utilizzare l'estensione semgrep per VSCode per ottenere i risultati all'interno di VSCode.
Esiste una versione gratuita installabile.
Esiste una versione gratuita installabile ma secondo la licenza puoi utilizzare solo la versione gratuita di codeQL in progetti Open Source.
La prima cosa che devi fare è preparare il database (creare l'albero del codice) in modo che in seguito le query vengano eseguite su di esso.
Puoi consentire a codeql di identificare automaticamente il linguaggio del repo e creare il database
Questo di solito attiverà un errore che dice che è stata specificata (o rilevata automaticamente) più di una lingua. Controlla le opzioni successive per risolvere questo problema!
Puoi farlo indicando manualmente il repo e la lingua (elenco delle lingue)
Se il tuo repo utilizza più di 1 lingua, puoi anche creare 1 DB per lingua indicando ciascuna lingua.
Puoi anche consentire a codeql
di identificare tutti i linguaggi per te e creare un DB per linguaggio. Devi fornirgli un GITHUB_TOKEN.
Ora è finalmente il momento di analizzare il codice
Ricorda che se hai utilizzato più linguaggi, un DB per linguaggio sarebbe stato creato nel percorso che hai specificato.
Puoi visualizzare i risultati in https://microsoft.github.io/sarif-web-component/ o utilizzando l'estensione di VSCode SARIF viewer.
Puoi anche utilizzare l'estensione di VSCode per ottenere i risultati all'interno di VSCode. Dovrai comunque creare un database manualmente, ma poi puoi selezionare qualsiasi file e cliccare su Right Click
-> CodeQL: Run Queries in Selected Files
C'è una versione gratuita installabile.
Puoi anche utilizzare l'estensione snyk per VSCode per ottenere risultati all'interno di VSCode.
È Open Source, ma sembra non mantenuto.
Java (Maven e Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C# e Javascript (Node.js).
Gratuito per repo pubblici.
yarn
pnpm
nodejsscan: Scanner di sicurezza del codice statico (SAST) per applicazioni Node.js alimentato da libsast e semgrep.
RetireJS: L'obiettivo di Retire.js è aiutarti a rilevare l'uso di versioni di librerie JS con vulnerabilità note.
electronegativity: È uno strumento per identificare misconfigurazioni e anti-pattern di sicurezza nelle applicazioni basate su Electron.
Bandit: Bandit è uno strumento progettato per trovare problemi di sicurezza comuni nel codice Python. Per fare ciò, Bandit elabora ogni file, costruisce un AST da esso e esegue plugin appropriati contro i nodi dell'AST. Una volta che Bandit ha terminato di esaminare tutti i file, genera un rapporto.
safety: Safety controlla le dipendenze Python per vulnerabilità di sicurezza note e suggerisce le opportune soluzioni per le vulnerabilità rilevate. Safety può essere eseguito su macchine di sviluppo, in pipeline CI/CD e su sistemi di produzione.
Pyt: Non mantenuto.
Task | Command |
---|---|
Esegui Jar | java -jar [jar] |
Decomprimi Jar | unzip -d [output directory] [jar] |
Crea Jar | jar -cmf META-INF/MANIFEST.MF [output jar] * |
Base64 SHA256 | sha256sum [file] | cut -d' ' -f1 | xxd -r -p | base64 |
Rimuovi Firma | rm META-INF/.SF META-INF/.RSA META-INF/*.DSA |
Elimina da Jar | zip -d [jar] [file to remove] |
Decompila classe | procyon -o . [path to class] |
Decompila Jar | procyon -jar [jar] -o [output directory] |
Compila classe | javac [path to .java file] |
https://www.pluginvulnerabilities.com/plugin-security-checker/
Burp:
Spider e scopri contenuti
Sitemap > filtro
Sitemap > clic destro sul dominio > Strumenti di coinvolgimento > Trova script
waybackurls <domain> |grep -i "\.js" |sort -u
Vedi alcuni degli strumenti menzionati in 'Deobfuscate/Unpack' qui sotto.
Nota: Potrebbe non essere possibile deobfuscate completamente.
Trova e usa i file .map:
Se i file .map sono esposti, possono essere utilizzati per deobfuscate facilmente.
Comunemente, foo.js.map mappa a foo.js. Cerca manualmente.
Usa JS Miner per cercarli.
Assicurati che venga condotta una scansione attiva.
Leggi 'Tips/Notes'
Se trovati, usa Maximize per deobfuscate.
Senza file .map, prova JSnice:
Riferimenti: http://jsnice.org/ & https://www.npmjs.com/package/jsnice
Suggerimenti:
Se usi jsnice.org, clicca sul pulsante delle opzioni accanto al pulsante "Nicify JavaScript" e deseleziona "Infer types" per ridurre il disordine nel codice con commenti.
Assicurati di non lasciare righe vuote prima dello script, poiché potrebbe influenzare il processo di deobfuscation e dare risultati imprecisi.
Per alcune alternative più moderne a JSNice, potresti voler guardare i seguenti:
Wakaru è il decompilatore Javascript per il frontend moderno. Riporta il codice originale da una sorgente impacchettata e transpiled.
Deobfuscate obfuscator.io, unminify e unpack javascript impacchettato
Un-minify il codice Javascript usando ChatGPT Questo strumento utilizza modelli di linguaggio di grandi dimensioni (come ChatGPT & llama2) e altri strumenti per un-minify il codice Javascript. Nota che i LLM non eseguono alcuna modifica strutturale – forniscono solo suggerimenti per rinominare variabili e funzioni. Il lavoro pesante è svolto da Babel a livello di AST per garantire che il codice rimanga equivalente 1-1.
Utilizzando i LLM per invertire la minificazione dei nomi delle variabili JavaScript
Usa console.log()
;
Trova il valore di ritorno alla fine e cambialo in console.log(<packerReturnVariable>);
in modo che il js deobfuscato venga stampato invece di essere eseguito.
Poi, incolla il js modificato (e ancora obfuscato) in https://jsconsole.com/ per vedere il js deobfuscato registrato nella console.
Infine, incolla l'output deobfuscato in https://prettier.io/playground/ per abbellirlo per l'analisi.
Nota: Se vedi ancora js impacchettato (ma diverso), potrebbe essere impacchettato ricorsivamente. Ripeti il processo.
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)