mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-24 21:53:54 +00:00
Translated ['network-services-pentesting/pentesting-web/code-review-tool
This commit is contained in:
parent
ab59ef602e
commit
1059138b21
1 changed files with 30 additions and 26 deletions
|
@ -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) 
|
||||
### [**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>
|
||||
|
||||
|
|
Loading…
Reference in a new issue