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

This commit is contained in:
Translator 2024-04-18 02:46:33 +00:00
parent 0651a6ff47
commit 1c9957e9c1
2 changed files with 97 additions and 90 deletions

View file

@ -801,6 +801,7 @@
* [FISSURE - The RF Framework](todo/radio-hacking/fissure-the-rf-framework.md)
* [Low-Power Wide Area Network](todo/radio-hacking/low-power-wide-area-network.md)
* [Pentesting BLE - Bluetooth Low Energy](todo/radio-hacking/pentesting-ble-bluetooth-low-energy.md)
* [Industrial Control Systems Hacking](todo/industrial-control-systems-hacking/README.md)
* [Burp Suite](todo/burp-suite.md)
* [Other Web Tricks](todo/other-web-tricks.md)
* [Interesting HTTP](todo/interesting-http.md)

View file

@ -1,41 +1,41 @@
# Αναθεώρηση Πηγαίου Κώδικα / Εργαλεία SAST
# Εργαλεία Αναθεώρησης Πηγαίου Κώδικα / SAST
<details>
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου HackTricks AWS)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
Άλλοι τρόποι υποστήριξης των HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στα HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα κόλπα σας στο hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details>
## Οδηγίες και Λίστες εργαλείων
## Καθοδήγηση και Λίστες εργαλείων
* [**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)
## Εργαλεία πολλαπλών γλωσσών
## Εργαλεία Πολλαπλών Γλωσσών
### [Naxus - AI-Gents](https://www.naxusai.com/)
Υπάρχει ένα **δωρεάν πακέτο για την αναθεώρηση των PRs**.
Υπάρχει ένα **δωρεάν πακέτο για αναθεώρηση PRs**.
### [**Semgrep**](https://github.com/returntocorp/semgrep)
Είναι ένα **εργαλείο ανοιχτού κώδικα**.
Είναι ένα **εργαλείο Ανοικτού Κώδικα**.
#### Υποστηριζόμενες Γλώσσες
| Κατηγορία | Γλώσσες |
| Κατηγορία | Γλώσσες |
| ------------ | ----------------------------------------------------------------------------------------------------- |
| 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 · |
| Πειραματικό | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
#### Γρήγορη Έναρξη
@ -50,13 +50,13 @@ semgrep scan --config auto
```
{% endcode %}
Μπορείτε επίσης να χρησιμοποιήσετε την [**επέκταση semgrep για το VSCode**](https://marketplace.visualstudio.com/items?itemName=Semgrep.semgrep) για να λάβετε τα ευρήματα μέσα στο VSCode.
Μπορείτε επίσης να χρησιμοποιήσετε το [**επέκταση VSCode του semgrep**](https://marketplace.visualstudio.com/items?itemName=Semgrep.semgrep) για να λάβετε τα ευρήματα μέσα στο VSCode.
### [**SonarQube**](https://www.sonarsource.com/products/sonarqube/downloads/)
Υπάρχει μια εγκαταστάσιμη **δωρεάν έκδοση**.
Υπάρχει μια εγκατάσταση **δωρεάν έκδοση**.
#### Γρήγορη Εκκίνηση
#### Γρήγορη Έναρξη
{% code overflow="wrap" %}
```bash
@ -80,7 +80,7 @@ sonar-scanner \
### CodeQL
Υπάρχει μια **εγκαταστάσιμη δωρεάν έκδοση** αλλά σύμφωνα με την άδεια χρήσης μπορείτε να **χρησιμοποιήσετε μόνο τη δωρεάν έκδοση του codeQL σε έργα ανοικτού κώδικα**.
Υπάρχει μια **εγκατεστημένη δωρεάν έκδοση** αλλά σύμφωνα με την άδεια χρήσης μπορείτε **να χρησιμοποιήσετε τη δωρεάν έκδοση του CodeQL μόνο σε έργα Ανοικτού Κώδικα**.
#### Εγκατάσταση
@ -108,10 +108,10 @@ codeql resolve qlpacks #Get paths to QL packs
```
{% endcode %}
#### Γρήγορη Έναρξη - Προετοιμασία της βάσης δεδομένων
#### Γρήγορη εκκίνηση - Προετοιμασία της βάσης δεδομένων
{% hint style="success" %}
Το πρώτο πράγμα που πρέπει να κάνετε είναι να **προετοιμάσετε τη βάση δεδομένων** (δημιουργία του δέντρου κώδικα), έτσι ώστε αργότερα να εκτελούνται οι ερωτήσεις πάνω σε αυτήν.
Το πρώτο πράγμα που πρέπει να κάνετε είναι να **προετοιμάσετε τη βάση δεδομένων** (δημιουργία του δέντρου κώδικα) ώστε αργότερα να εκτελούνται οι ερωτήσεις πάνω σε αυτήν.
{% endhint %}
* Μπορείτε να επιτρέψετε στο codeql να αναγνωρίσει αυτόματα τη γλώσσα του αποθετηρίου και να δημιουργήσει τη βάση δεδομένων
@ -127,10 +127,10 @@ codeql database create /path/repo/codeql_db --source-root /path/repo
{% endcode %}
{% hint style="danger" %}
Αυτό **συνήθως θα προκαλέσει ένα σφάλμα** που λέει ότι καθορίστηκαν περισσότερες από μία γλώσσες (ή ανιχνεύθηκαν αυτόματα). **Ελέγξτε τις επόμενες επιλογές** για να διορθώσετε αυτό!
Αυτό **συνήθως θα προκαλέσει ένα σφάλμα** λέγοντας ότι καθορίστηκαν περισσότερες από μία γλώσσες (ή ανιχνεύθηκαν αυτόματα). **Ελέγξτε τις επόμενες επιλογές** για να διορθώσετε αυτό!
{% endhint %}
* Μπορείτε να το κάνετε **χειροκίνητα δηλώνοντας** το **αποθετήριο** και τη **γλώσσα** ([λίστα γλωσσών](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))
* Μπορείτε να το κάνετε **χειροκίνητα δείχνοντας** το **αποθετήριο** και τη **γλώσσα** ([λίστα γλωσσών](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))
{% code overflow="wrap" %}
```bash
@ -142,7 +142,7 @@ codeql database create /path/repo/codeql_db --language javascript --source-root
```
{% endcode %}
* Εάν το αποθετήριό σας χρησιμοποιεί **περισσότερες από 1 γλώσσες**, μπορείτε επίσης να δημιουργήσετε **1 βάση δεδομένων ανά γλώσσα** που υποδεικνύει κάθε γλώσσα.
* Εάν το αποθετήριό σας χρησιμοποιεί **περισσότερες από 1 γλώσσες**, μπορείτε επίσης να δημιουργήσετε **1 βάση δεδομένων ανά γλώσσα** προσδιορίζοντας κάθε γλώσσα.
{% code overflow="wrap" %}
```bash
@ -156,7 +156,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
@ -176,7 +176,7 @@ codeql database create /tmp/codeql_db --db-cluster --source-root /path/repo
Τώρα είναι τελικά η ώρα να αναλύσετε τον κώδικα
{% endhint %}
Θυμηθείτε ότι αν χρησιμοποιήσατε πολλές γλώσσες, **θα έχει δημιουργηθεί μια βάση δεδομένων ανά γλώσσα** στη διαδρομή που καθορίσατε.
Θυμηθείτε ότι αν χρησιμοποιήσατε πολλές γλώσσες, **ένας βάση δεδομένων ανά γλώσσα** θα έχει δημιουργηθεί στη διαδρομή που καθορίσατε.
{% code overflow="wrap" %}
```bash
@ -198,7 +198,7 @@ javascript-security-extended --sarif-category=javascript \
```
{% endcode %}
#### Γρήγορη Έναρξη - Σεναριοποιημένη
#### Γρήγορη Έναρξη - Σεναριοποιημένο
{% code overflow="wrap" %}
```bash
@ -221,15 +221,15 @@ echo $FINAL_MSG
```
{% endcode %}
Μπορείτε να οπτικοποιήσετε τα ευρήματα στη διεύθυνση [**https://microsoft.github.io/sarif-web-component/**](https://microsoft.github.io/sarif-web-component/) ή χρησιμοποιώντας την επέκταση του VSCode [**SARIF viewer**](https://marketplace.visualstudio.com/items?itemName=MS-SarifVSCode.sarif-viewer).
Μπορείτε να οπτικοποιήσετε τα ευρήματα στο [**https://microsoft.github.io/sarif-web-component/**](https://microsoft.github.io/sarif-web-component/) ή χρησιμοποιώντας την επέκταση του VSCode [**SARIF viewer**](https://marketplace.visualstudio.com/items?itemName=MS-SarifVSCode.sarif-viewer).
Μπορείτε επίσης να χρησιμοποιήσετε την [**επέκταση του VSCode**](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-codeql) για να λάβετε τα ευρήματα μέσα στο VSCode. Θα πρέπει ακόμα να δημιουργήσετε μια βάση δεδομένων με το χέρι, αλλά στη συνέχεια μπορείτε να επιλέξετε οποιαδήποτε αρχεία και να κάνετε κλικ στο `Right Click` -> `CodeQL: Run Queries in Selected Files`
Μπορείτε επίσης να χρησιμοποιήσετε την [**επέκταση του VSCode**](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-codeql) για να λάβετε τα ευρήματα μέσα στο VSCode. Θα πρέπει ακόμα να δημιουργήσετε μια βάση δεδομένων χειροκίνητα, αλλά στη συνέχεια μπορείτε να επιλέξετε οποιαδήποτε αρχεία και να κάνετε κλικ στο `Right Click` -> `CodeQL: Run Queries in Selected Files`
### [**Snyk**](https://snyk.io/product/snyk-code/)
Υπάρχει μια **δωρεάν εγκατεστημένη έκδοση**.
Υπάρχει μια **εγκατεστημένη δωρεάν έκδοση**.
#### Γρήγορη έναρξη
#### Γρήγορη Έναρξη
```bash
# Install
sudo npm install -g snyk
@ -250,11 +250,11 @@ snyk container test [image]
# Test for IaC vulns
snyk iac test
```
Μπορείτε επίσης να χρησιμοποιήσετε την [**επέκταση του snyk για το VSCode**](https://marketplace.visualstudio.com/items?itemName=snyk-security.snyk-vulnerability-scanner) για να λάβετε ευρήματα μέσα στο VSCode.
Μπορείτε επίσης να χρησιμοποιήσετε το [**επέκταση του snyk για το VSCode**](https://marketplace.visualstudio.com/items?itemName=snyk-security.snyk-vulnerability-scanner) για να λάβετε ευρήματα μέσα στο VSCode.
### [Insider](https://github.com/insidersec/insider)
Είναι **Ανοιχτού Κώδικα**, αλλά φαίνεται **μη συντηρούμενο**.
Είναι **Ανοιχτού Κώδικα**, αλλά φαίνεται **ανενημέρωτο**.
#### Υποστηριζόμενες Γλώσσες
@ -291,14 +291,14 @@ npm install -g pnpm
cd /path/to/repo
pnpm audit
```
* [**nodejsscan**](https://github.com/ajinabraham/nodejsscan)**:** Σαρωτής στατικού κώδικα ασφάλειας (SAST) για εφαρμογές Node.js με την υποστήριξη των [libsast](https://github.com/ajinabraham/libsast) και [semgrep](https://github.com/returntocorp/semgrep).
* [**nodejsscan**](https://github.com/ajinabraham/nodejsscan)**:** Στατικός σαρωτής κώδικα ασφάλειας (SAST) για εφαρμογές Node.js με την υποστήριξη των [libsast](https://github.com/ajinabraham/libsast) και [semgrep](https://github.com/returntocorp/semgrep).
```bash
# Install & run
docker run -it -p 9090:9090 opensecurity/nodejsscan:latest
# Got to localhost:9090
# Upload a zip file with the code
```
* [**RetireJS**](https://github.com/RetireJS/retire.js)**:** Ο στόχος του Retire.js είναι να σας βοηθήσει να ανιχνεύσετε τη χρήση εκδόσεων βιβλιοθηκών JS με γνωστές ευπάθειες.
* [**RetireJS**](https://github.com/RetireJS/retire.js)**:** Ο στόχος του Retire.js είναι να σας βοηθήσει να ανιχνεύσετε τη χρήση εκδόσεων βιβλιοθηκών JS με γνωστές ευπαθείες.
```bash
# Install
npm install -g retire
@ -308,11 +308,11 @@ retire --colors
```
## Electron
* [**electronegativity**](https://github.com/doyensec/electronegativity)**:** Είναι ένα εργαλείο για την αναγνώριση μη σωστών ρυθμίσεων και αντι-προτύπων ασφαλείας σε εφαρμογές που βασίζονται στο Electron.
* [**electronegativity**](https://github.com/doyensec/electronegativity)**:** Είναι ένα εργαλείο για την αναγνώριση μη ρυθμισμένων παραμέτρων και αντι-προτύπων ασφάλειας σε εφαρμογές που βασίζονται σε Electron.
## Python
* [**Bandit**](https://github.com/PyCQA/bandit)**:** Το Bandit είναι ένα εργαλείο που σχεδιάστηκε για την εντοπισμό κοινών προβλημάτων ασφαλείας στον κώδικα Python. Για να το κάνει αυτό, το Bandit επεξεργάζεται κάθε αρχείο, δημιουργεί ένα AST από αυτό και εκτελεί τα κατάλληλα πρόσθετα εναντίον των κόμβων του AST. Αφού το Bandit ολοκληρώσει τη σάρωση όλων των αρχείων, δημιουργεί ένα αναφορά.
* [**Bandit**](https://github.com/PyCQA/bandit)**:** Το Bandit είναι ένα εργαλείο σχεδιασμένο για την εντοπισμό κοινών θεμάτων ασφάλειας στον κώδικα Python. Για να το επιτύχει αυτό, το Bandit επεξεργάζεται κάθε αρχείο, δημιουργεί ένα AST από αυτό και εκτελεί τα κατάλληλα πρόσθετα εναντίον των κόμβων του AST. Μόλις το Bandit ολοκληρώσει τη σάρωση όλων των αρχείων, δημιουργεί έναν αναφορά.
```bash
# Install
pip3 install bandit
@ -320,7 +320,7 @@ pip3 install bandit
# Run
bandit -r <path to folder>
```
* [**ασφάλεια**](https://github.com/pyupio/safety): Το Safety ελέγχει τις εξαρτήσεις της Python για γνωστές ευπάθειες ασφάλειας και προτείνει τις κατάλληλες διορθώσεις για τις ευπάθειες που ανιχνεύονται. Το Safety μπορεί να εκτελεστεί σε μηχανές προγραμματιστών, σε αγωγούς CI/CD και σε συστήματα παραγωγής.
* [**safety**](https://github.com/pyupio/safety): Το safety ελέγχει τις εξαρτήσεις Python για γνωστές ευπάθειες ασφάλειας και προτείνει τις κατάλληλες διορθώσεις για τις ευπάθειες που εντοπίζονται. Το safety μπορεί να τρέχει σε μηχανές ανάπτυξης, σε αγωγούς CI/CD και σε συστήματα παραγωγής.
```bash
# Install
pip install safety
@ -338,12 +338,6 @@ https://github.com/0xd4d/dnSpy
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe test.cs
```
## RUST
RUST είναι μια γλώσσα προγραμματισμού που έχει σχεδιαστεί για την ανάπτυξη ασφαλών και αποδοτικών συστημάτων λογισμικού. Έχει ένα σύστημα τύπων που επιτρέπει τον έλεγχο των σφαλμάτων κατά τη μεταγλώττιση, εξαλείφοντας τις συνήθεις ευπάθειες ασφάλειας που συνήθως συναντώνται σε άλλες γλώσσες προγραμματισμού. Επιπλέον, η RUST παρέχει αυστηρές κανόνες για τη διαχείριση της μνήμης, εξαλείφοντας τα σφάλματα που σχετίζονται με τη διαχείριση μνήμης όπως τα buffer overflows και τα null pointer dereferences.
Η RUST χρησιμοποιείται ευρέως για την ανάπτυξη λογισμικού υψηλής απόδοσης, όπως λειτουργικά συστήματα, ενσωματωμένα συστήματα και δικτυακές εφαρμογές. Επίσης, η RUST παρέχει εργαλεία για τον έλεγχο του κώδικα, όπως το Rustfmt για τη μορφοποίηση του κώδικα και το Clippy για τον έλεγχο της ποιότητας του κώδικα και την ανίχνευση πιθανών σφαλμάτων.
Αν και η RUST είναι μια σχετικά νέα γλώσσα προγραμματισμού, έχει κερδίσει δημοτικότητα λόγω των ασφαλείας και της απόδοσής της. Εάν είστε προγραμματιστής και ενδιαφέρεστε για την ανάπτυξη ασφαλούς και αποδοτικού λογισμικού, η RUST είναι μια εξαιρετική επιλογή.
```bash
# Install
cargo install cargo-audit
@ -356,15 +350,11 @@ cargo audit fetch
```
## Java
Java είναι μια αντικειμενοστραφής γλώσσα προγραμματισμού που χρησιμοποιείται ευρέως για την ανάπτυξη εφαρμογών. Είναι μια γλώσσα υψηλού επιπέδου και ανεξάρτητη πλατφόρμας, που σημαίνει ότι μπορεί να τρέξει σε διάφορες πλατφόρμες χωρίς να απαιτείται ανακατασκευή του κώδικα. Η γλώσσα Java χρησιμοποιείται ευρέως για την ανάπτυξη web εφαρμογών, κινητών εφαρμογών, ενσωματωμένων συστημάτων και πολλών άλλων εφαρμογών.
### FindBugs
Η ανάπτυξη εφαρμογών Java γίνεται συνήθως με τη χρήση ενός ενσωματωμένου ανάπτυξης περιβάλλοντος (IDE) όπως το Eclipse ή το IntelliJ IDEA. Αυτά τα εργαλεία παρέχουν πολλές λειτουργίες για την ανάπτυξη, τη δοκιμή και την αποσφαλμάτωση των εφαρμογών Java.
FindBugs είναι ένα εργαλείο εύρεσης σφαλμάτων σε κώδικα Java. Ελέγχει τον κώδικα για συνήθη λάθη και προβλήματα ασφάλειας.
Για την ανάπτυξη ασφαλών εφαρμογών Java, είναι σημαντικό να γίνει έλεγχος του κώδικα για πιθανές ευπάθειες ασφάλειας. Υπάρχουν διάφορα εργαλεία αναθεώρησης κώδικα που μπορούν να χρησιμοποιηθούν για αυτόν τον σκοπό, όπως το FindBugs, το PMD και το Checkstyle. Αυτά τα εργαλεία ελέγχουν τον κώδικα για πιθανά προβλήματα ασφάλειας, όπως αδυναμίες ελέγχου πρόσβασης, ανεπιθύμητες πρακτικές προγραμματισμού και πιθανές ευπάθειες.
Επιπλέον, είναι σημαντικό να εφαρμοστούν καλές πρακτικές ασφάλειας κατά την ανάπτυξη εφαρμογών Java. Αυτές περιλαμβάνουν τη χρήση ασφαλών βιβλιοθηκών, την αποφυγή χρήσης ανακλαστικής πρόσβασης, την αποτροπή ανεπιθύμητων προσβάσεων στη βάση δεδομένων και την αποτροπή ευπάθειας στις επιθέσεις διασποράς.
Τέλος, είναι σημαντικό να παρακολουθούνται τα ανοικτά προβλήματα ασφάλειας και να ενημερώνεται το λογισμικό Java με τις τελευταίες ενημερώσεις ασφαλείας. Αυτό μπορεί να γίνει μέσω της χρήσης εργαλείων όπως το OWASP Dependency-Check, το οποίο ελέγχει τις εξαρτήσεις του λογισμικού για γνωστά προβλήματα ασφάλειας.
Για να χρησιμοποιήσετε το FindBugs, απλά εκτελέστε το εργαλείο στον κώδικά σας και εξετάστε τα αποτελέσματα για πιθανά προβλήματα.
```bash
# JD-Gui
https://github.com/java-decompiler/jd-gui
@ -375,17 +365,17 @@ mkdir META-INF
echo "Main-Class: test" > META-INF/MANIFEST.MF
jar cmvf META-INF/MANIFEST.MF test.jar test.class
```
| Εργασία | Εντολή |
| Εργασία | Εντολή |
| --------------- | --------------------------------------------------------- |
| Εκτέλεση Jar | java -jar \[jar] |
| Ξεσυμπίεση Jar | unzip -d \[κατάλογος εξόδου] \[jar] |
| Δημιουργία Jar | jar -cmf META-INF/MANIFEST.MF \[output jar] \* |
| Εκτέλεση Jar | java -jar \[jar] |
| Αποσυμπίεση Jar | unzip -d \[κατάλογος εξόδου] \[jar] |
| Δημιουργία Jar | jar -cmf META-INF/MANIFEST.MF \[output jar] \* |
| Base64 SHA256 | sha256sum \[αρχείο] \| cut -d' ' -f1 \| xxd -r -p \| base64 |
| Αφαίρεση Υπογραφής | rm META-INF/_.SF META-INF/_.RSA META-INF/\*.DSA |
| Διαγραφή από το Jar | zip -d \[jar] \[αρχείο προς αφαίρεση] |
| Αποσυναρμολόγηση κλάσης | procyon -o . \[διαδρομή προς την κλάση] |
| Αποσυναρμολόγηση Jar | procyon -jar \[jar] -o \[κατάλογος εξόδου] |
| Μεταγλώττιση κλάσης | javac \[διαδρομή προς το αρχείο .java] |
| Αφαίρεση Υπογραφής | rm META-INF/_.SF META-INF/_.RSA META-INF/\*.DSA |
| Διαγραφή από το Jar | zip -d \[jar] \[αρχείο προς αφαίρεση] |
| Αποκωδικοποίηση κλάσης | procyon -o . \[διαδρομή προς την κλάση] |
| Αποκωδικοποίηση Jar | procyon -jar \[jar] -o \[κατάλογος εξόδου] |
| Συναρμολόγηση κλάσης | javac \[διαδρομή προς το αρχείο .java] |
## Πήγαινε
```bash
@ -408,68 +398,84 @@ https://github.com/securego/gosec
### Ανακάλυψη
1. Burp:
* Ανίχνευση περιεχομένου με το Spider
* Sitemap > φίλτρο
* Sitemap > δεξί κλικ στον τομέα > Εργαλεία συμμετοχής > Εύρεση scripts
* Αράχνη και ανακάλυψη περιεχομένου
* Χάρτης ιστότοπου > φίλτρο
* Χάρτης ιστότοπου > δεξί κλικ στον τομέα > Εργαλεία συμμετοχής > Εύρεση σεναρίων
2. [WaybackURLs](https://github.com/tomnomnom/waybackurls):
* `waybackurls <domain> |grep -i "\.js" |sort -u`
### Στατική Ανάλυση
#### Αναστροφή Ελαχιστοποίησης/Ομορφοποίησης
#### Αναίρεση Ελάχιστης/Ομορφοποίηση/Καλλωπισμός
* [https://prettier.io/playground/](https://prettier.io/playground/)
* [https://beautifier.io/](https://beautifier.io/)
* Δείτε κάποια από τα εργαλεία που αναφέρονται παρακάτω στο 'Αναίρεση Απόκρυψης/Ξεκλείδωμα'.
#### Απόκρυψη/Ξεκλείδωμα
#### Αποκωδικοποίηση/Ξεπακετάρισμα
**Σημείωση**: Μπορεί να μην είναι δυνατή η πλήρης αποκωδικοποίηση.
**Σημείωση**: Ενδέχεται να μην είναι δυνατή η πλήρης απόκρυψη.
1. Βρείτε και χρησιμοποιήστε αρχεία .map:
* Εάν τα αρχεία .map είναι προσβάσιμα, μπορούν να χρησιμοποιηθούν για εύκολη αποκωδικοποίηση.
* Εάν τα αρχεία .map είναι εκτεθειμένα, μπορούν να χρησιμοποιηθούν για εύκολη απόκρυψη.
* Συνήθως, το foo.js.map αντιστοιχεί στο foo.js. Αναζητήστε τα χειροκίνητα.
* Χρησιμοποιήστε το [JS Miner](https://github.com/PortSwigger/js-miner) για να τα βρείτε.
* Βεβαιωθείτε ότι πραγματοποιείται ενεργός σάρωση.
* Διαβάστε τις '[Συμβουλές/Σημειώσεις](https://github.com/minamo7sen/burp-JS-Miner/wiki#tips--notes)'
* Εάν βρεθούν, χρησιμοποιήστε το [Maximize](https://www.npmjs.com/package/maximize) για αποκωδικοποίηση.
* Διαβάστε '[Συμβουλές/Σημειώσεις](https://github.com/minamo7sen/burp-JS-Miner/wiki#tips--notes)'
* Εάν βρεθούν, χρησιμοποιήστε το [Maximize](https://www.npmjs.com/package/maximize) για απόκρυψη.
2. Χωρίς αρχεία .map, δοκιμάστε το JSnice:
* Αναφορές: http://jsnice.org/ & https://www.npmjs.com/package/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" για να μειώσετε την περιττή πληροφορία στον κώδικα με σχόλια.
* Βεβαιωθείτε ότι δεν αφήνετε κενές γραμμές πριν από το σενάριο, καθώς μπορεί να επηρεάσει τη διαδικασία αποκωδικοποίησης και να δώσει ανακριβή αποτελέσματα.
3. Χρησιμοποιήστε το console.log();
* Βρείτε την τιμή επιστροφής στο τέλος και αλλάξτε τη σε `console.log(<packerReturnVariable>);` ώστε να εκτυπωθεί ο αποκωδικοποιημένος js αντί να εκτελεστεί.
* Στη συνέχεια, επικολλήστε το τροποποιημένο (και ακόμα αποκωδικοποιημένο) js στο https://jsconsole.com/ για να δείτε το αποκωδικοποιημένο js που καταγράφεται στην κονσόλα.
* Τέλος, επικολλήστε την αποκωδικοποιημένη έξοδο στο https://prettier.io/playground/ για να την ομορφοποιήσετε για ανάλυση.
* **Σημείωση**: Εάν εξακολουθείτε να βλέπετε συμπιεσμένο (αλλά διαφορετικό) js, μπορεί να είναι αναδρομικά συμπιεσμένο. Επαναλάβετε τη διαδικασία.
* Εάν χρησιμοποιείτε το jsnice.org, κάντε κλικ στο κουμπί επιλογών δίπλα στο κουμπί "Nicify JavaScript" και καταργήστε την επιλογή "Infer types" για να μειώσετε την ανάκαμψη του κώδικα με σχόλια.
* Βεβαιωθείτε ότι δεν αφήνετε κενές γραμμές πριν από το σενάριο, καθώς μπορεί να επηρεάσει τη διαδικασία απόκρυψης και να δώσει ανακριβή αποτελέσματα.
4. Για μερικές πιο σύγχρονες εναλλακτικές λύσεις στο JSNice, μπορείτε να κοιτάξετε τα παρακάτω:
* [https://github.com/pionxzh/wakaru](https://github.com/pionxzh/wakaru)
* > Javascript decompiler, unpacker and unminify toolkit
> Το Wakaru είναι το αποσυνθέτη για μοντέρνο frontend. Επαναφέρει τον αρχικό κώδικα από ένα συστοιχισμένο και μεταγλωττισμένο πηγαίο κώδικα.
* [https://github.com/j4k0xb/webcrack](https://github.com/j4k0xb/webcrack)
* > Αποκρυπτογράφηση obfuscator.io, unminify και unpack συστημένο javascript
* [https://github.com/jehna/humanify](https://github.com/jehna/humanify)
* > Απο-ελάχιστοποίηση κώδικα Javascript χρησιμοποιώντας το 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
3. Χρησιμοποιήστε `console.log()`;
* Βρείτε την τιμή επιστροφής στο τέλος και αλλάξτε τη σε `console.log(<packerReturnVariable>);` ώστε ο αποκρυπτογραφημένος js να εκτυπώνεται αντί να εκτελείται.
* Στη συνέχεια, επικολλήστε το τροποποιημένο (και ακόμα αποκρυπτογραφημένο) js στο [https://jsconsole.com/](https://jsconsole.com/) για να δείτε το αποκρυπτογραφημένο js να καταγράφεται στην κονσόλα.
* Τέλος, επικολλήστε την αποκρυπτογραφημένη έξοδο στο [https://prettier.io/playground/](https://prettier.io/playground/) για να την ομορφώσετε για ανάλυση.
* **Σημείωση**: Εάν εξακολουθείτε να βλέπετε συμπιεσμένο (αλλά διαφορετικό) js, ενδέχεται να είναι αναδρομικά συμπιεσμένο. Επαναλάβετε τη διαδικασία.
Αναφορές
#### Αναφορές
* 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
* [YouTube: DAST - Προσωρινή Ανάλυση Javascript](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):
* [Αποκρυπτογράφηση / Απόκρυψη Ελάχιστης Κωδικοποίησης Κωδικοποιημένου Κώδικα Εφαρμογής Ιστού](https://gist.github.com/0xdevalias/d8b743efb82c0e9406fc69da0d6c6581#deobfuscating--unminifying-obfuscated-web-app-code)
* [Ανάπτυξη Αντιστροφής Εφαρμογών Webpack](https://gist.github.com/0xdevalias/8c621c5d09d780b1d321bfdb86d67cdd#reverse-engineering-webpack-apps)
* [κλπ](https://gist.github.com/search?q=user:0xdevalias+javascript)
Εργαλεία
#### Εργαλεία
* https://portswigger.net/burp/documentation/desktop/tools/dom-invader
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader](https://portswigger.net/burp/documentation/desktop/tools/dom-invader)
#### Λιγότερο Χρησιμοποιούμενες Αναφορές
* https://cyberchef.org/
* https://olajs.com/javascript-prettifier
* https://jshint.com/
* https://github.com/jshint/jshint/
* [https://cyberchef.org/](https://cyberchef.org/)
* [https://olajs.com/javascript-prettifier](https://olajs.com/javascript-prettifier)
* [https://jshint.com/](https://jshint.com/)
* [https://github.com/jshint/jshint/](https://github.com/jshint/jshint/)
<details>
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Μάθετε το χακάρισμα AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Εάν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα κόλπα σας στο hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκερ σας κόλπα υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details>