Translated ['network-services-pentesting/pentesting-web/code-review-tool

This commit is contained in:
Translator 2024-09-27 11:28:13 +00:00
parent ab59ef602e
commit 1059138b21

View file

@ -1,8 +1,8 @@
# Ανασκόπηση Πηγαίου Κώδικα / Εργαλεία SAST
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -15,7 +15,7 @@
</details>
{% endhint %}
## Κατευθύνσεις και Λίστες εργαλείων
## Κατευθύνσεις και Λίστες Εργαλείων
* [**https://owasp.org/www-community/Source\_Code\_Analysis\_Tools**](https://owasp.org/www-community/Source\_Code\_Analysis\_Tools)
* [**https://github.com/analysis-tools-dev/static-analysis**](https://github.com/analysis-tools-dev/static-analysis)
@ -81,7 +81,7 @@ sonar-scanner \
### CodeQL
Υπάρχει μια **εγκαταστάσιμη δωρεάν έκδοση** αλλά σύμφωνα με την άδεια μπορείτε να **χρησιμοποιείτε μόνο τη δωρεάν έκδοση του codeQL σε έργα Ανοιχτού Κώδικα**.
Υπάρχει μια **εγκαταστάσιμη δωρεάν έκδοση** αλλά σύμφωνα με την άδεια μπορείτε να **χρησιμοποιείτε μόνο την δωρεάν έκδοση codeQL σε έργα Ανοιχτού Κώδικα**.
#### Εγκατάσταση
@ -109,10 +109,10 @@ codeql resolve qlpacks #Get paths to QL packs
```
{% endcode %}
#### Quick Start - Ετοιμάστε τη βάση δεδομένων
#### Γρήγορη Εκκίνηση - Προετοιμάστε τη βάση δεδομένων
{% hint style="success" %}
Το πρώτο πράγμα που πρέπει να κάνετε είναι να **ετοιμάσετε τη βάση δεδομένων** (δημιουργήστε το δέντρο κώδικα) ώστε αργότερα οι ερωτήσεις να εκτελούνται πάνω σε αυτήν.
Το πρώτο πράγμα που πρέπει να κάνετε είναι να **προετοιμάσετε τη βάση δεδομένων** (δημιουργήστε το δέντρο κώδικα) ώστε αργότερα οι ερωτήσεις να εκτελούνται πάνω σε αυτήν.
{% endhint %}
* Μπορείτε να επιτρέψετε στο codeql να αναγνωρίσει αυτόματα τη γλώσσα του repo και να δημιουργήσει τη βάση δεδομένων
@ -128,7 +128,7 @@ codeql database create /path/repo/codeql_db --source-root /path/repo
{% endcode %}
{% hint style="danger" %}
Αυτό **συνήθως θα προκαλέσει ένα σφάλμα** λέγοντας ότι έχει καθοριστεί περισσότερη από μία γλώσσα (ή ανιχνεύθηκε αυτόματα). **Ελέγξτε τις επόμενες επιλογές** για να το διορθώσετε!
Αυτό **συνήθως θα προκαλέσει ένα σφάλμα** που λέει ότι έχει καθοριστεί περισσότερη από μία γλώσσα (ή ανιχνεύθηκε αυτόματα). **Ελέγξτε τις επόμενες επιλογές** για να το διορθώσετε!
{% endhint %}
* Μπορείτε να το κάνετε αυτό **χειροκίνητα υποδεικνύοντας** το **repo** και τη **γλώσσα** ([λίστα γλωσσών](https://docs.github.com/en/code-security/codeql-cli/getting-started-with-the-codeql-cli/preparing-your-code-for-codeql-analysis#running-codeql-database-create))
@ -157,7 +157,7 @@ codeql database create /path/repo/codeql_db --source-root /path/to/repo --db-clu
```
{% endcode %}
* Μπορείτε επίσης να επιτρέψετε στο `codeql` να **αναγνωρίσει όλες τις γλώσσες** για εσάς και να δημιουργήσει μια βάση δεδομένων ανά γλώσσα. Πρέπει να του δώσετε ένα **GITHUB\_TOKEN**.
* Μπορείτε επίσης να επιτρέψετε στο `codeql` να **εντοπίσει όλες τις γλώσσες** για εσάς και να δημιουργήσει μια βάση δεδομένων ανά γλώσσα. Πρέπει να του δώσετε ένα **GITHUB\_TOKEN**.
{% code overflow="wrap" %}
```bash
@ -199,7 +199,7 @@ javascript-security-extended --sarif-category=javascript \
```
{% endcode %}
#### Γρήγορη Εκκίνηση - Σκριπταρισμένη
#### Γρήγορη Εκκίνηση - Σενάριο
{% code overflow="wrap" %}
```bash
@ -261,7 +261,7 @@ snyk iac test
Java (Maven και Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C#, και Javascript (Node.js).
#### Γρήγορη Εκκίνηση
#### Γρήγορη Έναρξη
```bash
# 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
@ -269,7 +269,7 @@ $ tar -xf insider_2.1.0_linux_x86_64.tar.gz
$ chmod +x insider
$ ./insider --tech javascript --target <projectfolder>
```
### [**DeepSource**](https://deepsource.com/pricing)&#x20;
### [**DeepSource**](https://deepsource.com/pricing)
Δωρεάν για **δημόσια αποθετήρια**.
@ -281,7 +281,10 @@ $ ./insider --tech javascript --target <projectfolder>
brew install yarn
# Run
cd /path/to/repo
yarn audit
yarn install
yarn audit # In lower versions
yarn npm audit # In 2+ versions
npm audit
```
* **`pnpm`**
@ -290,6 +293,7 @@ npm audit
npm install -g pnpm
# Run
cd /path/to/repo
pnpm install
pnpm audit
```
* [**nodejsscan**](https://github.com/ajinabraham/nodejsscan)**:** Στατικός σαρωτής ασφαλείας κώδικα (SAST) για εφαρμογές Node.js που υποστηρίζεται από [libsast](https://github.com/ajinabraham/libsast) και [semgrep](https://github.com/returntocorp/semgrep).
@ -413,7 +417,7 @@ https://github.com/securego/gosec
1. Βρείτε και χρησιμοποιήστε αρχεία .map:
* Αν τα αρχεία .map είναι εκτεθειμένα, μπορούν να χρησιμοποιηθούν για εύκολη αποσυμπίεση.
* Συνήθως, το foo.js.map αντιστοιχεί στο foo.js. Αναζητήστε τα χειροκίνητα.
* Συνήθως, foo.js.map αντιστοιχεί σε foo.js. Αναζητήστε τα χειροκίνητα.
* Χρησιμοποιήστε [JS Miner](https://github.com/PortSwigger/js-miner) για να τα αναζητήσετε.
* Βεβαιωθείτε ότι διεξάγεται ενεργή σάρωση.
* Διαβάστε '[Tips/Notes](https://github.com/minamo7sen/burp-JS-Miner/wiki#tips--notes)'
@ -421,31 +425,31 @@ https://github.com/securego/gosec
2. Χωρίς αρχεία .map, δοκιμάστε το JSnice:
* Αναφορές: [http://jsnice.org/](http://jsnice.org/) & [https://www.npmjs.com/package/jsnice](https://www.npmjs.com/package/jsnice)
* Συμβουλές:
* Αν χρησιμοποιείτε jsnice.org, κάντε κλικ στο κουμπί επιλογών δίπλα στο κουμπί "Nicify JavaScript" και αποεπιλέξτε "Infer types" για να μειώσετε την ακαταστασία στον κώδικα με σχόλια.
* Αν χρησιμοποιείτε το jsnice.org, κάντε κλικ στο κουμπί επιλογών δίπλα στο κουμπί "Nicify JavaScript" και αποεπιλέξτε "Infer types" για να μειώσετε την ακαταστασία στον κώδικα με σχόλια.
* Βεβαιωθείτε ότι δεν αφήνετε κενές γραμμές πριν από το script, καθώς μπορεί να επηρεάσει τη διαδικασία αποσυμπίεσης και να δώσει ανακριβή αποτελέσματα.
4. Για μερικές πιο σύγχρονες εναλλακτικές στο JSNice, μπορείτε να δείτε τα εξής:
3. Για μερικές πιο σύγχρονες εναλλακτικές στο JSNice, μπορείτε να δείτε τα εξής:
* [https://github.com/pionxzh/wakaru](https://github.com/pionxzh/wakaru)
* > Javascript decompiler, unpacker και unminify toolkit
> Το Wakaru είναι ο Javascript decompiler για σύγχρονα frontend. Επαναφέρει τον αρχικό κώδικα από μια συσκευασμένη και μεταγλωττισμένη πηγή.
* > Javascript decompiler, unpacker και unminify toolkit Wakaru είναι ο Javascript decompiler για σύγχρονα frontend. Επαναφέρει τον αρχικό κώδικα από μια συσκευασμένη και μεταγλωττισμένη πηγή.
* [https://github.com/j4k0xb/webcrack](https://github.com/j4k0xb/webcrack)
* > Deobfuscate obfuscator.io, unminify και unpack bundled javascript
* [https://github.com/jehna/humanify](https://github.com/jehna/humanify)
* > Un-minify Javascript code χρησιμοποιώντας ChatGPT
> Αυτό το εργαλείο χρησιμοποιεί μεγάλα γλωσσικά μοντέλα (όπως ChatGPT & llama2) και άλλα εργαλεία για να αποσυμπιέσει τον κώδικα Javascript. Σημειώστε ότι τα LLMs δεν εκτελούν καμία δομική αλλαγή παρέχουν μόνο υποδείξεις για την μετονομασία μεταβλητών και συναρτήσεων. Η βαριά εργασία γίνεται από το Babel σε επίπεδο AST για να διασφαλιστεί ότι ο κώδικας παραμένει 1-1 ισοδύναμος.
* > Un-minify Javascript code χρησιμοποιώντας ChatGPT Αυτό το εργαλείο χρησιμοποιεί μεγάλα γλωσσικά μοντέλα (όπως ChatGPT & llama2) και άλλα εργαλεία για να αποσυμπιέσει τον κώδικα Javascript. Σημειώστε ότι τα LLMs δεν εκτελούν καμία δομική αλλαγή παρέχουν μόνο υποδείξεις για την μετονομασία μεταβλητών και συναρτήσεων. Η βαριά εργασία γίνεται από το Babel σε επίπεδο AST για να διασφαλιστεί ότι ο κώδικας παραμένει 1-1 ισοδύναμος.
* [https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification.html](https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification.html)
* > Χρησιμοποιώντας LLMs για να αντιστρέψετε την ελαχιστοποίηση ονομάτων μεταβλητών Javascript
* > Χρησιμοποιώντας LLMs για να αντιστρέψετε την ελαχιστοποίηση ονομάτων μεταβλητών JavaScript
3. Χρησιμοποιήστε `console.log()`;
* Βρείτε την τιμή επιστροφής στο τέλος και αλλάξτε την σε `console.log(<packerReturnVariable>);` ώστε ο αποσυμπιεσμένος js να εκτυπώνεται αντί να εκτελείται.
* Στη συνέχεια, επικολλήστε τον τροποποιημένο (και ακόμα αποσυμπιεσμένο) js στο [https://jsconsole.com/](https://jsconsole.com/) για να δείτε τον αποσυμπιεσμένο js να καταγράφεται στην κονσόλα.
* Στη συνέχεια, επικολλήστε τον τροποποιημένο (και ακόμα obfuscated) js στο [https://jsconsole.com/](https://jsconsole.com/) για να δείτε τον αποσυμπιεσμένο js να καταγράφεται στην κονσόλα.
* Τέλος, επικολλήστε την αποσυμπιεσμένη έξοδο στο [https://prettier.io/playground/](https://prettier.io/playground/) για να την ομορφύνετε για ανάλυση.
* **Σημείωση**: Αν εξακολουθείτε να βλέπετε συσκευασμένο (αλλά διαφορετικό) js, μπορεί να είναι αναδρομικά συσκευασμένο. Επαναλάβετε τη διαδικασία.
* **Σημείωση**: Αν εξακολουθείτε να βλέπετε packed (αλλά διαφορετικό) js, μπορεί να είναι αναδρομικά packed. Επαναλάβετε τη διαδικασία.
#### References
* [YouTube: DAST - Javascript Dynamic Analysis](https://www.youtube.com/watch?v=_v8r_t4v6hQ)
* [YouTube: DAST - Javascript Dynamic Analysis](https://www.youtube.com/watch?v=\_v8r\_t4v6hQ)
* [https://blog.nvisium.com/angular-for-pentesters-part-1](https://web.archive.org/web/20221226054137/https://blog.nvisium.com/angular-for-pentesters-part-1)
* [https://blog.nvisium.com/angular-for-pentesters-part-2](https://web.archive.org/web/20230204012439/https://blog.nvisium.com/angular-for-pentesters-part-2)
* [devalias](https://twitter.com/_devalias)'s [GitHub Gists](https://gist.github.com/0xdevalias):
* [devalias](https://twitter.com/\_devalias)'s [GitHub Gists](https://gist.github.com/0xdevalias):
* [Deobfuscating / Unminifying Obfuscated Web App Code](https://gist.github.com/0xdevalias/d8b743efb82c0e9406fc69da0d6c6581#deobfuscating--unminifying-obfuscated-web-app-code)
* [Reverse Engineering Webpack Apps](https://gist.github.com/0xdevalias/8c621c5d09d780b1d321bfdb86d67cdd#reverse-engineering-webpack-apps)
* [etc](https://gist.github.com/search?q=user:0xdevalias+javascript)
@ -462,8 +466,8 @@ https://github.com/securego/gosec
* [https://github.com/jshint/jshint/](https://github.com/jshint/jshint/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>