Source code Review / SAST Tools
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
यहाँ PRs की समीक्षा करने के लिए एक मुफ्त पैकेज है।
यह एक ओपन सोर्स टूल है।
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 ·
आप semgrep VSCode Extension का उपयोग करके VSCode के अंदर निष्कर्ष प्राप्त कर सकते हैं।
एक इंस्टॉल करने योग्य मुफ्त संस्करण है।
एक स्थापित करने योग्य मुफ्त संस्करण है लेकिन लाइसेंस के अनुसार आप केवल ओपन सोर्स परियोजनाओं में मुफ्त codeQL संस्करण का उपयोग कर सकते हैं।
आपको जो पहली चीज़ करने की ज़रूरत है वह है डेटाबेस तैयार करना (कोड ट्री बनाना) ताकि बाद में उस पर क्वेरी चलाई जा सके।
आप codeql को अनुमति दे सकते हैं कि वह स्वचालित रूप से रेपो की भाषा की पहचान करे और डेटाबेस बनाए
यह आमतौर पर एक त्रुटि को ट्रिगर करेगा जो कहता है कि एक से अधिक भाषाएँ निर्दिष्ट की गई थीं (या स्वचालित रूप से पहचान ली गई थीं)। इससे ठीक करने के लिए अगले विकल्पों की जाँच करें!
आप इसे हाथ से निर्दिष्ट करके repo और भाषा कर सकते हैं (भाषाओं की सूची)
यदि आपका रिपॉजिटरी 1 से अधिक भाषाओं का उपयोग कर रहा है, तो आप प्रत्येक भाषा को इंगित करते हुए प्रत्येक भाषा के लिए 1 DB भी बना सकते हैं।
आप codeql
को सभी भाषाओं की पहचान करने और प्रत्येक भाषा के लिए एक DB बनाने की अनुमति भी दे सकते हैं। आपको इसे एक GITHUB_TOKEN देना होगा।
अब अंततः कोड का विश्लेषण करने का समय है
याद रखें कि यदि आपने कई भाषाओं का उपयोग किया है, तो प्रत्येक भाषा के लिए एक DB उस पथ में बनाया गया होगा जिसे आपने निर्दिष्ट किया था।
आप निष्कर्षों को https://microsoft.github.io/sarif-web-component/ में या VSCode एक्सटेंशन SARIF viewer का उपयोग करके देख सकते हैं।
आप निष्कर्षों को VSCode के अंदर प्राप्त करने के लिए VSCode एक्सटेंशन का भी उपयोग कर सकते हैं। आपको अभी भी मैन्युअल रूप से एक डेटाबेस बनाना होगा, लेकिन फिर आप किसी भी फ़ाइल का चयन कर सकते हैं और Right Click
-> CodeQL: Run Queries in Selected Files
पर क्लिक कर सकते हैं।
एक स्थापनीय मुफ्त संस्करण है।
आप snyk VSCode Extension का उपयोग करके VSCode के अंदर निष्कर्ष प्राप्त कर सकते हैं।
यह ओपन सोर्स है, लेकिन अनरक्षित लगता है।
Java (Maven और Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C#, और Javascript (Node.js)।
सार्वजनिक रिपोजिटरी के लिए मुफ्त।
yarn
pnpm
nodejsscan: Node.js अनुप्रयोगों के लिए स्थैतिक सुरक्षा कोड स्कैनर (SAST) जो libsast और semgrep द्वारा संचालित है।
RetireJS: Retire.js का लक्ष्य आपको ज्ञात कमजोरियों वाले JS-लाइब्रेरी संस्करणों के उपयोग का पता लगाने में मदद करना है।
electronegativity: यह Electron-आधारित अनुप्रयोगों में गलत कॉन्फ़िगरेशन और सुरक्षा एंटी-पैटर्न की पहचान करने के लिए एक उपकरण है।
Bandit: Bandit एक उपकरण है जिसे Python कोड में सामान्य सुरक्षा मुद्दों को खोजने के लिए डिज़ाइन किया गया है। ऐसा करने के लिए Bandit प्रत्येक फ़ाइल को संसाधित करता है, इससे एक AST बनाता है, और AST नोड्स के खिलाफ उपयुक्त प्लगइन्स चलाता है। एक बार जब Bandit सभी फ़ाइलों को स्कैन कर लेता है, तो यह एक रिपोर्ट उत्पन्न करता है।
safety: Safety पायथन निर्भरताओं के लिए ज्ञात सुरक्षा कमजोरियों की जांच करता है और पता की गई कमजोरियों के लिए उचित सुधारों का सुझाव देता है। Safety को डेवलपर मशीनों, CI/CD पाइपलाइनों और उत्पादन प्रणालियों पर चलाया जा सकता है।
Pyt: अप्रबंधित।
जार निष्पादित करें
java -jar [jar]
जार अनज़िप करें
unzip -d [output directory] [jar]
जार बनाएं
jar -cmf META-INF/MANIFEST.MF [output jar] *
Base64 SHA256
sha256sum [file] | cut -d' ' -f1 | xxd -r -p | base64
साइनिंग हटाएं
rm META-INF/.SF META-INF/.RSA META-INF/*.DSA
जार से हटाएं
zip -d [jar] [file to remove]
क्लास को डिकंपाइल करें
procyon -o . [path to class]
जार को डिकंपाइल करें
procyon -jar [jar] -o [output directory]
क्लास को संकलित करें
javac [path to .java file]
https://www.pluginvulnerabilities.com/plugin-security-checker/
Burp:
Spider और सामग्री खोजें
Sitemap > फ़िल्टर
Sitemap > डोमेन पर राइट-क्लिक > Engagement tools > स्क्रिप्ट खोजें
waybackurls <domain> |grep -i "\.js" |sort -u
'Deobfuscate/Unpack' में नीचे उल्लेखित कुछ उपकरणों को भी देखें।
Note: इसे पूरी तरह से deobfuscate करना संभव नहीं हो सकता।
.map फ़ाइलें खोजें और उपयोग करें:
यदि .map फ़ाइलें उजागर हैं, तो उन्हें आसानी से deobfuscate करने के लिए उपयोग किया जा सकता है।
सामान्यतः, foo.js.map foo.js के लिए मैप करता है। उन्हें मैन्युअल रूप से खोजें।
JS Miner का उपयोग करके उन्हें खोजें।
सुनिश्चित करें कि सक्रिय स्कैन किया गया है।
'Tips/Notes' पढ़ें।
यदि मिल जाए, तो deobfuscate करने के लिए Maximize का उपयोग करें।
बिना .map फ़ाइलों के, JSnice का प्रयास करें:
टिप्स:
यदि jsnice.org का उपयोग कर रहे हैं, तो "Nicify JavaScript" बटन के बगल में विकल्प बटन पर क्लिक करें, और "Infer types" को अनचेक करें ताकि कोड में टिप्पणियों के साथ अव्यवस्था न हो।
सुनिश्चित करें कि आप स्क्रिप्ट से पहले कोई खाली पंक्तियाँ नहीं छोड़ते, क्योंकि यह deobfuscation प्रक्रिया को प्रभावित कर सकता है और गलत परिणाम दे सकता है।
JSNice के कुछ और आधुनिक विकल्पों के लिए, आप निम्नलिखित पर विचार कर सकते हैं:
Javascript decompiler, unpacker और unminify toolkit Wakaru आधुनिक फ्रंटेंड के लिए Javascript decompiler है। यह एक बंडल और ट्रांसपाइल किए गए स्रोत से मूल कोड वापस लाता है।
obfuscator.io को deobfuscate करें, unminify करें और बंडल किए गए जावास्क्रिप्ट को अनपैक करें
ChatGPT का उपयोग करके Javascript कोड को un-minify करें यह उपकरण बड़े भाषा मॉडल (जैसे ChatGPT & llama2) और अन्य उपकरणों का उपयोग करता है ताकि Javascript कोड को un-minify किया जा सके। ध्यान दें कि LLMs कोई संरचनात्मक परिवर्तन नहीं करते - वे केवल वेरिएबल और फ़ंक्शंस के नाम बदलने के लिए संकेत प्रदान करते हैं। भारी उठाने का काम Babel द्वारा AST स्तर पर किया जाता है ताकि कोड 1-1 समकक्ष बना रहे।
Javascript वेरिएबल नाम minification को उलटने के लिए LLMs का उपयोग करना
console.log()
का उपयोग करें;
अंत में लौटने वाले मान को खोजें और इसे console.log(<packerReturnVariable>);
में बदलें ताकि deobfuscated js को निष्पादित करने के बजाय प्रिंट किया जाए।
फिर, संशोधित (और अभी भी obfuscated) js को https://jsconsole.com/ में पेस्ट करें ताकि deobfuscated js को कंसोल में लॉग किया जा सके।
अंत में, विश्लेषण के लिए इसे सुंदर बनाने के लिए deobfuscated आउटपुट को https://prettier.io/playground/ में पेस्ट करें।
Note: यदि आप अभी भी पैक (लेकिन अलग) js देख रहे हैं, तो यह पुनरावृत्त रूप से पैक किया जा सकता है। प्रक्रिया को दोहराएं।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)