Source code Review / SAST Tools
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
PR'leri incelemek için ücretsiz bir paket bulunmaktadır.
Bu bir Açık Kaynak araçtır.
Kategori | Diller |
---|---|
GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
Beta | Kotlin · Rust |
Deneysel | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
Ayrıca, bulguları VSCode içinde almak için semgrep VSCode Extension kullanabilirsiniz.
Yüklenebilir ücretsiz bir sürüm vardır.
Kurulabilir ücretsiz bir versiyonu vardır, ancak lisansa göre ücretsiz codeQL versiyonunu yalnızca Açık Kaynak projelerinde kullanabilirsiniz.
Yapmanız gereken ilk şey veritabanını hazırlamak (kod ağacını oluşturmak) ve böylece daha sonra sorgular bunun üzerinde çalıştırılabilir.
Codeql'nin repo dilini otomatik olarak tanımlamasına ve veritabanını oluşturmasına izin verebilirsiniz.
Bu genellikle bir hata tetikleyecektir ve birden fazla dilin belirtildiğini (veya otomatik olarak tespit edildiğini) söyleyecektir. Bunu düzeltmek için sonraki seçenekleri kontrol edin!
Bunu elle belirterek repo ve dili yapabilirsiniz (diller listesi)
Eğer reposunuz 1'den fazla dil kullanıyorsa, her dili belirterek her dil için 1 DB de oluşturabilirsiniz.
codeql
'in sizin için tüm dilleri tanımlamasına ve her dil için bir DB oluşturmasına da izin verebilirsiniz. Buna bir GITHUB_TOKEN vermeniz gerekiyor.
Artık kodu analiz etme zamanı geldi
Birden fazla dil kullandıysanız, her dil için bir DB belirtilen yolda oluşturulmuş olacaktır.
Bulguları https://microsoft.github.io/sarif-web-component/ adresinde veya VSCode uzantısı SARIF viewer kullanarak görselleştirebilirsiniz.
Ayrıca bulguları VSCode içinde almak için VSCode uzantısını kullanabilirsiniz. Yine de manuel olarak bir veritabanı oluşturmanız gerekecek, ancak ardından herhangi bir dosyayı seçip Sağ Tık
-> CodeQL: Seçilen Dosyalarda Sorguları Çalıştır
seçeneğine tıklayabilirsiniz.
Yüklenebilir ücretsiz bir sürüm mevcuttur.
You can also use the snyk VSCode Extension to get findings inside VSCode.
Açık Kaynak, ama bakımsız görünüyor.
Java (Maven ve Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C#, ve Javascript (Node.js).
Açık repos için ücretsizdir.
yarn
pnpm
nodejsscan: Node.js uygulamaları için libsast ve semgrep tarafından desteklenen statik güvenlik kod tarayıcısı (SAST).
RetireJS: Retire.js'in amacı, bilinen güvenlik açıklarına sahip JS-kütüphane sürümlerinin kullanımını tespit etmenize yardımcı olmaktır.
electronegativity: Electron tabanlı uygulamalardaki yanlış yapılandırmaları ve güvenlik anti-paternlerini tanımlamak için bir araçtır.
Bandit: Bandit, Python kodundaki yaygın güvenlik sorunlarını bulmak için tasarlanmış bir araçtır. Bunu yapmak için Bandit her dosyayı işler, ondan bir AST oluşturur ve AST düğümleri üzerinde uygun eklentileri çalıştırır. Bandit tüm dosyaları taradıktan sonra bir rapor oluşturur.
safety: Safety, bilinen güvenlik açıkları için Python bağımlılıklarını kontrol eder ve tespit edilen açıklar için uygun düzeltmeleri önerir. Safety, geliştirici makinelerinde, CI/CD boru hatlarında ve üretim sistemlerinde çalıştırılabilir.
Pyt: Bakımı yapılmıyor.
Görev | Komut |
---|---|
Jar Çalıştır | java -jar [jar] |
Jar Aç | unzip -d [çıkış dizini] [jar] |
Jar Oluştur | jar -cmf META-INF/MANIFEST.MF [çıkış jar] * |
Base64 SHA256 | sha256sum [dosya] | cut -d' ' -f1 | xxd -r -p | base64 |
İmzayı Kaldır | rm META-INF/.SF META-INF/.RSA META-INF/*.DSA |
Jar'dan Sil | zip -d [jar] [silinecek dosya] |
Sınıfı Decompile | procyon -o . [sınıfın yolu] |
Jar'ı Decompile | procyon -jar [jar] -o [çıkış dizini] |
Sınıfı Derle | javac [java dosyasının yolu] |
https://www.pluginvulnerabilities.com/plugin-security-checker/
Burp:
İçeriği tarayın ve keşfedin
Sitemap > filtre
Sitemap > alan adına sağ tıklayın > Etkileşim araçları > Scriptleri bul
waybackurls <domain> |grep -i "\.js" |sort -u
Aşağıdaki 'Deobfuscate/Unpack' bölümünde bahsedilen bazı araçlara da bakın.
Not: Tamamen deobfuscate etmek mümkün olmayabilir.
.map dosyalarını bulun ve kullanın:
Eğer .map dosyaları açığa çıkmışsa, bunlar kolayca deobfuscate etmek için kullanılabilir.
Genellikle, foo.js.map foo.js ile eşleşir. Manuel olarak arayın.
Onları bulmak için JS Miner kullanın.
Aktif taramanın yapıldığından emin olun.
'İpuçları/Notlar'ı okuyun.
Bulunduğunda, deobfuscate etmek için Maximize kullanın.
.map dosyaları olmadan, JSnice'ı deneyin:
Referanslar: http://jsnice.org/ & https://www.npmjs.com/package/jsnice
İpuçları:
jsnice.org kullanıyorsanız, "Nicify JavaScript" butonunun yanındaki seçenekler butonuna tıklayın ve "Infer types" seçeneğini kaldırarak kodu yorumlarla karıştırmamaya dikkat edin.
Scriptten önce boş satır bırakmadığınızdan emin olun, çünkü bu deobfuscate sürecini etkileyebilir ve yanlış sonuçlar verebilir.
JSNice için daha modern alternatifler arıyorsanız, aşağıdakilere göz atabilirsiniz:
Javascript decompiler, unpacker ve unminify aracı Wakaru, modern frontend için Javascript decompiler'dır. Paketlenmiş ve dönüştürülmüş kaynaktan orijinal kodu geri getirir.
obfuscator.io'yu deobfuscate et, unminify et ve paketlenmiş javascript'i unpack et
ChatGPT kullanarak Javascript kodunu un-minify et Bu araç, Javascript kodunu un-minify etmek için büyük dil modelleri (ChatGPT & llama2 gibi) ve diğer araçları kullanır. LLM'lerin yapısal değişiklikler yapmadığını unutmayın - yalnızca değişkenleri ve fonksiyonları yeniden adlandırmak için ipuçları sağlar. Ağır iş, kodun 1-1 eşdeğer kalmasını sağlamak için AST seviyesinde Babel tarafından yapılır.
JavaScript değişken adı minifikasyonunu tersine çevirmek için LLM'leri kullanma
console.log()
kullanın;
Sonunda dönen değeri bulun ve console.log(<packerReturnVariable>);
olarak değiştirin, böylece deobfuscated js çalıştırılmak yerine yazdırılır.
Ardından, değiştirilmiş (ve hala obfuscated) js'i https://jsconsole.com/ sayfasına yapıştırarak deobfuscated js'in konsola yazdırıldığını görün.