21 KiB
Ukaguzi wa Msimbo wa Chanzo / Zana za SAST
Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako inayotangazwa kwenye HackTricks au kupakua HackTricks kwa muundo wa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi wa PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs ya kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Mwongozo na Orodha ya Zana
- https://owasp.org/www-community/Source_Code_Analysis_Tools
- https://github.com/analysis-tools-dev/static-analysis
Zana za Lugha Mbalimbali
Naxus - AI-Gents
Kuna pakiti ya bure ya kukagua PRs.
Semgrep
Ni zana ya chanzo wazi.
Lugha Zinazoungwa Mkono
Jamii | Lugha |
---|---|
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 · |
Mwanzo wa Haraka
{% code overflow="wrap" %}
# Install https://github.com/returntocorp/semgrep#option-1-getting-started-from-the-cli
brew install semgrep
# Go to your repo code and scan
cd repo
semgrep scan --config auto
{% endcode %}
Unaweza pia kutumia Kifaa cha Upanuzi cha semgrep VSCode ili kupata matokeo ndani ya VSCode.
SonarQube
Kuna toleo la bure linaloweza kusakinishwa.
Mwanzo wa Haraka
{% code overflow="wrap" %}
# Run the paltform in docker
docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:latest
# Install cli tool
brew install sonar-scanner
# Go to localhost:9000 and login with admin:admin or admin:sonar
# Generate a local project and then a TOKEN for it
# Using the token and from the folder with the repo, scan it
cd path/to/repo
sonar-scanner \
-Dsonar.projectKey=<project-name> \
-Dsonar.sources=. \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.token=<sonar_project_token>
{% endcode %}
CodeQL
Kuna toleo la bure linaloweza kusakinishwa lakini kulingana na leseni unaweza kutumia toleo la bure la codeQL katika miradi ya chanzo wazi tu.
Sakinisha
{% code overflow="wrap" %}
# Download your release from https://github.com/github/codeql-action/releases
## Example
wget https://github.com/github/codeql-action/releases/download/codeql-bundle-v2.14.3/codeql-bundle-osx64.tar.gz
# Move it to the destination folder
mkdir ~/codeql
mv codeql-bundle* ~/codeql
# Decompress it
cd ~/codeql
tar -xzvf codeql-bundle-*.tar.gz
rm codeql-bundle-*.tar.gz
# Add to path
echo 'export PATH="$PATH:/Users/username/codeql/codeql"' >> ~/.zshrc
# Check it's correctly installed
## Open a new terminal
codeql resolve qlpacks #Get paths to QL packs
{% endcode %}
Mwanzo wa Haraka - Andaa database
{% hint style="success" %} Jambo la kwanza unalohitaji kufanya ni kuandaa database (umba mti wa nambari) ili baadaye maswali yaweze kutekelezwa juu yake. {% endhint %}
- Unaweza kuruhusu codeql kutambua lugha ya repo kiotomatiki na kuunda database
{% code overflow="wrap" %}
codeql database create <database> --language <language>
# Example
codeql database create /path/repo/codeql_db --source-root /path/repo
## DB will be created in /path/repo/codeql_db
{% endcode %}
{% hint style="danger" %} Hii kawaida itasababisha kosa linalosema kwamba lugha zaidi ya moja zilitajwa (au ziligunduliwa kiotomatiki). Angalia chaguo zifuatazo ili kurekebisha hili! {% endhint %}
- Unaweza kufanya hivi kwa kuelezea kwa mkono repo na lugha (orodha ya lugha)
{% code overflow="wrap" %}
codeql database create <database> --language <language> --source-root </path/to/repo>
# Example
codeql database create /path/repo/codeql_db --language javascript --source-root /path/repo
## DB will be created in /path/repo/codeql_db
{% endcode %}
- Ikiwa repo yako inatumia zaidi ya lugha 1, unaweza pia kuunda 1 DB kwa kila lugha ikionyesha kila lugha.
{% code overflow="wrap" %}
export GITHUB_TOKEN=ghp_32849y23hij4...
codeql database create <database> --source-root /path/to/repo --db-cluster --language "javascript,python"
# Example
export GITHUB_TOKEN=ghp_32849y23hij4...
codeql database create /path/repo/codeql_db --source-root /path/to/repo --db-cluster --language "javascript,python"
## DBs will be created in /path/repo/codeql_db/*
{% endcode %}
- Unaweza pia kuruhusu
codeql
kutambua lugha zote kwa ajili yako na kuunda DB kwa kila lugha. Unahitaji kumpa GITHUB_TOKEN.
export GITHUB_TOKEN=ghp_32849y23hij4...
codeql database create <database> --db-cluster --source-root </path/to/repo>
# Example
export GITHUB_TOKEN=ghp_32849y23hij4...
codeql database create /tmp/codeql_db --db-cluster --source-root /path/repo
## DBs will be created in /path/repo/codeql_db/*
{% endcode %}
Mwanzo wa Haraka - Tathmini Kanuni
{% hint style="success" %} Sasa ni wakati wa mwisho wa kuchambua kanuni {% endhint %}
Kumbuka kwamba ikiwa ulitumia lugha kadhaa, DB kwa kila lugha itakuwa imeundwa katika njia uliyotaja.
{% code overflow="wrap" %}
# Default analysis
codeql database analyze <database> --format=<format> --output=</out/file/path>
# Example
codeql database analyze /tmp/codeql_db/javascript --format=sarif-latest --output=/tmp/graphql_results.sarif
# Specify QL pack to use in the analysis
codeql database analyze <database> \
<qls pack> --sarif-category=<language> \
--sarif-add-baseline-file-info \ --format=<format> \
--output=/out/file/path>
# Example
codeql database analyze /tmp/codeql_db \
javascript-security-extended --sarif-category=javascript \
--sarif-add-baseline-file-info --format=sarif-latest \
--output=/tmp/sec-extended.sarif
Mwanzo wa Haraka - Kwa Kutumia Script
{% code overflow="wrap" %}
export GITHUB_TOKEN=ghp_32849y23hij4...
export REPO_PATH=/path/to/repo
export OUTPUT_DIR_PATH="$REPO_PATH/codeql_results"
mkdir -p "$OUTPUT_DIR_PATH"
export FINAL_MSG="Results available in: "
echo "Creating DB"
codeql database create "$REPO_PATH/codeql_db" --db-cluster --source-root "$REPO_PATH"
for db in `ls "$REPO_PATH/codeql_db"`; do
echo "Analyzing $db"
codeql database analyze "$REPO_PATH/codeql_db/$db" --format=sarif-latest --output="${OUTPUT_DIR_PATH}/$db).sarif"
FINAL_MSG="$FINAL_MSG ${OUTPUT_DIR_PATH}/$db.sarif ,"
echo ""
done
echo $FINAL_MSG
{% endcode %}
Unaweza kuona matokeo katika https://microsoft.github.io/sarif-web-component/ au kwa kutumia kifaa cha VSCode SARIF viewer.
Unaweza pia kutumia kifaa cha VSCode ili kupata matokeo ndani ya VSCode. Bado utahitaji kuunda database kwa mkono, lakini kisha unaweza kuchagua faili yoyote na bonyeza Right Click
-> CodeQL: Run Queries in Selected Files
Snyk
Kuna toleo la bure linaloweza kusakinishwa.
Mwanzo wa Haraka
# Install
sudo npm install -g snyk
# Authenticate (you can use a free account)
snyk auth
# Test for open source vulns & license issues
snyk test [--all-projects]
# Test for code vulnerabilities
## This will upload your code and you need to enable this option in: Settings > Snyk Code
snyk test code
# Test for vulns in images
snyk container test [image]
# Test for IaC vulns
snyk iac test
Unaweza pia kutumia snyk VSCode Extension kupata matokeo ndani ya VSCode.
Insider
Ni Open Source, lakini inaonekana haijasasishwa.
Lugha Zinazoungwa Mkono
Java (Maven na Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C#, na Javascript (Node.js).
Mwanzo wa Haraka
# Check the correct release for your environment
$ wget https://github.com/insidersec/insider/releases/download/2.1.0/insider_2.1.0_linux_x86_64.tar.gz
$ tar -xf insider_2.1.0_linux_x86_64.tar.gz
$ chmod +x insider
$ ./insider --tech javascript --target <projectfolder>
DeepSource
Bure kwa repos za umma.
NodeJS
yarn
# Install
brew install yarn
# Run
cd /path/to/repo
yarn audit
npm audit
pnpm
# Install
npm install -g pnpm
# Run
cd /path/to/repo
pnpm audit
- nodejsscan: Skeneri wa nambari za usalama za kodi (SAST) kwa programu za Node.js zinazotumia libsast na semgrep.
# Install & run
docker run -it -p 9090:9090 opensecurity/nodejsscan:latest
# Got to localhost:9090
# Upload a zip file with the code
- RetireJS: Lengo la Retire.js ni kukusaidia kugundua matumizi ya toleo la maktaba ya JS lenye mashimo ya usalama yanayojulikana.
# Install
npm install -g retire
# Run
cd /path/to/repo
retire --colors
Electron
- electronegativity: Ni chombo cha kutambua mipangilio isiyofaa na mifano ya usalama katika programu zinazotumia Electron.
Python
- Bandit: Bandit ni chombo kilichoundwa ili kutambua matatizo ya kawaida ya usalama katika nambari za Python. Bandit hufanya hivi kwa kusindika kila faili, kujenga AST kutoka kwake, na kukimbia programu husika dhidi ya nodi za AST. Mara Bandit imekamilisha uchunguzi wa faili zote, inazalisha ripoti.
# Install
pip3 install bandit
# Run
bandit -r <path to folder>
- usalama: Usalama hufanya ukaguzi wa utegemezi wa Python kwa ajili ya kasoro za usalama zinazojulikana na kupendekeza marekebisho sahihi kwa kasoro zilizogunduliwa. Usalama unaweza kukimbia kwenye mashine za watengenezaji, kwenye mifumo ya CI/CD na kwenye mifumo ya uzalishaji.
# Install
pip install safety
# Run
safety check
Pyt: Haijasasishwa.
.NET
# dnSpy
https://github.com/0xd4d/dnSpy
# .NET compilation
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe test.cs
RUST
RUST ni lugha ya programu inayojulikana kwa usalama wake na utendaji wake wa juu. Inatumika sana katika maendeleo ya programu za mfumo na zana za usalama. Hapa kuna zana kadhaa za ukaguzi wa nambari ambazo zinaweza kutumiwa kwa ukaguzi wa nambari ya RUST:
Clippy
Clippy ni zana ya ukaguzi wa nambari ya RUST ambayo inasaidia kugundua na kurekebisha kasoro za kawaida za programu. Inatoa vidokezo vya kuboresha ubora wa nambari na kuzuia makosa ya kawaida.
Rustfmt
Rustfmt ni zana ya muundo wa nambari ya RUST ambayo inasaidia kubadilisha muundo wa nambari ili iweze kufuata viwango vya muundo vilivyowekwa. Inasaidia kudumisha muundo wa nambari wa kawaida na kufanya iwe rahisi kusoma na kuelewa.
Cargo-audit
Cargo-audit ni zana ya ukaguzi wa usalama ya RUST ambayo inasaidia kugundua na kurekebisha kasoro za usalama katika dependencies za mradi wa RUST. Inasaidia kuzuia matumizi ya dependencies ambazo zina kasoro za usalama.
Rust-analyzer
Rust-analyzer ni zana ya uchambuzi wa nambari ya RUST ambayo inasaidia kutoa vidokezo vya kuboresha ubora wa nambari. Inatoa huduma za kiotomatiki kama vile autocompletion, refactoring, na uchambuzi wa nambari ili kusaidia watumiaji kuandika nambari bora na yenye ufanisi.
RustSec
RustSec ni zana ya ukaguzi wa usalama ya RUST ambayo inasaidia kugundua na kurekebisha kasoro za usalama katika dependencies za mradi wa RUST. Inatoa habari muhimu kuhusu kasoro za usalama na inasaidia kuchukua hatua za haraka za kurekebisha kasoro hizo.
Rust Language Server (RLS)
Rust Language Server (RLS) ni zana ya kusaidia maendeleo ya programu ya RUST ambayo inasaidia kutoa huduma za kiotomatiki kama vile autocompletion, refactoring, na uchambuzi wa nambari. Inasaidia watumiaji kuandika nambari bora na yenye ufanisi kwa kutumia lugha ya RUST.
# Install
cargo install cargo-audit
# Run
cargo audit
#Update the Advisory Database
cargo audit fetch
Java
Java ni lugha ya programu inayotumika sana kwa maendeleo ya programu za kompyuta. Inajulikana kwa usalama wake na uwezo wake wa kufanya kazi kwenye majukwaa tofauti. Hapa chini ni zana kadhaa za ukaguzi wa nambari za Java ambazo zinaweza kutumika katika mchakato wa ukaguzi wa nambari:
-
FindBugs: Zana hii inachunguza nambari ya Java kwa makosa ya kawaida na kasoro. Inaweza kugundua matumizi mabaya ya API, matumizi ya kumbukumbu, na mifumo ya kudhibiti ubora wa nambari.
-
PMD: Zana hii inachunguza nambari ya Java kwa makosa ya kawaida, mazoea bora, na kasoro. Inaweza kugundua matumizi mabaya ya API, matumizi ya kumbukumbu, na mifumo ya kudhibiti ubora wa nambari.
-
Checkstyle: Zana hii inachunguza nambari ya Java kwa kufuata viwango vya kubuni na miongozo. Inaweza kugundua kasoro za kubuni, kama vile matumizi yasiyofaa ya nafasi na alama za uandishi.
-
SonarQube: Zana hii inachunguza nambari ya Java kwa kasoro, makosa, na mazoea mabaya. Inaweza kugundua matumizi mabaya ya API, matumizi ya kumbukumbu, na mifumo ya kudhibiti ubora wa nambari.
-
FindSecBugs: Zana hii inachunguza nambari ya Java kwa kasoro za usalama. Inaweza kugundua matumizi mabaya ya API, matumizi ya kumbukumbu, na mifumo ya kudhibiti ubora wa nambari.
-
SpotBugs: Zana hii inachunguza nambari ya Java kwa makosa ya kawaida na kasoro. Inaweza kugundua matumizi mabaya ya API, matumizi ya kumbukumbu, na mifumo ya kudhibiti ubora wa nambari.
-
FindBugs-Security-Extras: Zana hii inachunguza nambari ya Java kwa kasoro za usalama. Inaweza kugundua matumizi mabaya ya API, matumizi ya kumbukumbu, na mifumo ya kudhibiti ubora wa nambari.
-
Error Prone: Zana hii inachunguza nambari ya Java kwa makosa ya kawaida na kasoro. Inaweza kugundua matumizi mabaya ya API, matumizi ya kumbukumbu, na mifumo ya kudhibiti ubora wa nambari.
-
Infer: Zana hii inachunguza nambari ya Java kwa kasoro na makosa. Inaweza kugundua matumizi mabaya ya API, matumizi ya kumbukumbu, na mifumo ya kudhibiti ubora wa nambari.
-
Find-Security-Bugs: Zana hii inachunguza nambari ya Java kwa kasoro za usalama. Inaweza kugundua matumizi mabaya ya API, matumizi ya kumbukumbu, na mifumo ya kudhibiti ubora wa nambari.
# JD-Gui
https://github.com/java-decompiler/jd-gui
# Java compilation step-by-step
javac -source 1.8 -target 1.8 test.java
mkdir META-INF
echo "Main-Class: test" > META-INF/MANIFEST.MF
jar cmvf META-INF/MANIFEST.MF test.jar test.class
Kazi | Amri |
---|---|
Tekeleza Jar | java -jar [jar] |
Fungua Jar | unzip -d [directory ya matokeo] [jar] |
Unda Jar | jar -cmf META-INF/MANIFEST.MF [jar ya matokeo] * |
Base64 SHA256 | sha256sum [faili] | cut -d' ' -f1 | xxd -r -p | base64 |
Ondoa Saini | rm META-INF/.SF META-INF/.RSA META-INF/*.DSA |
Futa kutoka Jar | zip -d [jar] [faili ya kuondoa] |
Fungua darasa | procyon -o . [njia ya darasa] |
Fungua Jar | procyon -jar [jar] -o [directory ya matokeo] |
Kompaili darasa | javac [njia ya faili ya .java] |
Endelea
https://github.com/securego/gosec
PHP
Wordpress Plugins
https://www.pluginvulnerabilities.com/plugin-security-checker/
Solidity
JavaScript
Ugunduzi
- Burp:
- Spider na ugundue maudhui
- Sitemap > chuja
- Sitemap > bofya kulia kwenye kikoa > Zana za Ushiriki > Tafuta hati
waybackurls <kikoa> |grep -i "\.js" |sort -u
Uchambuzi Statisa
Unminimize/Beautify/Prettify
Deobfuscate/Unpack
Note: Huenda isingewezekana kufanya deobfuscate kikamilifu.
- Tafuta na tumia faili za .map:
- Ikiwa faili za .map zimefunuliwa, zinaweza kutumika kufanya deobfuscate kwa urahisi.
- Kawaida, foo.js.map inaonyesha foo.js. Tafuta kwa mkono.
- Tumia JS Miner kuzitafuta.
- Hakikisha uchunguzi wa moja kwa moja unafanywa.
- Soma 'Machapisho/Maelezo'
- Ikiwa zimepatikana, tumia Maximize kufanya deobfuscate.
- Bila faili za .map, jaribu JSnice:
- Marejeo: http://jsnice.org/ & https://www.npmjs.com/package/jsnice
- Vidokezo:
- Ikiwa unatumia jsnice.org, bofya kitufe cha chaguo karibu na kitufe cha "Nicify JavaScript", na usichague "Infer types" ili kupunguza uchafuzi wa kificho na maoni.
- Hakikisha hauachi mistari tupu kabla ya hati, kwani inaweza kuathiri mchakato wa deobfuscation na kutoa matokeo yasiyo sahihi.
- Tumia console.log();
- Tafuta thamani ya kurudi mwishoni na ibadilishe kuwa
console.log(<packerReturnVariable>);
ili kificho kilichofanyiwa deobfuscate kiweze kuchapishwa badala ya kutekelezwa. - Kisha, nakili kificho kilichobadilishwa (na bado kimefichwa) kwenye https://jsconsole.com/ ili uone kificho kilichofanyiwa deobfuscate kikichapishwa kwenye konsoli.
- Hatimaye, nakili matokeo ya deobfuscate kwenye https://prettier.io/playground/ ili kufanya kificho kuwa safi kwa ajili ya uchambuzi.
- Note: Ikiwa bado unaona kificho kilichofungwa (lakini tofauti), huenda kimefungwa kwa njia ya kurudia. Rudia mchakato.
Marejeo
- https://www.youtube.com/watch?v=_v8r_t4v6hQ
- https://blog.nvisium.com/angular-for-pentesters-part-1
- https://blog.nvisium.com/angular-for-pentesters-part-2
Zana
Marejeo Yasiyotumiwa Sana
- https://cyberchef.org/
- https://olajs.com/javascript-prettifier
- https://jshint.com/
- https://github.com/jshint/jshint/
Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako inatangazwa kwenye HackTricks au kupakua HackTricks kwa muundo wa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi wa PEASS & HackTricks
- Gundua The PEASS Family, mkusanyiko wetu wa NFTs za kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram](https://t.me/peass) au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa HackTricks na HackTricks Cloud github repos.