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

This commit is contained in:
Translator 2024-09-27 11:27:42 +00:00
parent 7af16bad84
commit 46a4b80d92

View file

@ -1,8 +1,8 @@
# Quellcode-Überprüfung / SAST-Tools
{% hint style="success" %}
Lernen & üben Sie 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">\
Lernen & üben Sie 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)
Lernen & üben Sie 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">\
Lernen & üben Sie 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>
@ -10,7 +10,7 @@ Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
* **Teilen Sie Hacking-Tricks, indem Sie PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichen.
</details>
{% endhint %}
@ -157,7 +157,7 @@ codeql database create /path/repo/codeql_db --source-root /path/to/repo --db-clu
```
{% endcode %}
* Sie können auch `codeql` erlauben, **alle Sprachen** für Sie zu **identifizieren** und eine DB pro Sprache zu erstellen. Sie müssen ihm ein **GITHUB\_TOKEN** geben.
* Sie können auch `codeql` erlauben, **alle Sprachen** für Sie zu identifizieren und eine DB pro Sprache zu erstellen. Sie müssen ihm ein **GITHUB\_TOKEN** geben.
{% code overflow="wrap" %}
```bash
@ -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)
Kostenlos für **öffentliche Repos**.
@ -281,7 +281,10 @@ Kostenlos für **öffentliche Repos**.
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)**:** Statischer Sicherheitscode-Scanner (SAST) für Node.js-Anwendungen, unterstützt von [libsast](https://github.com/ajinabraham/libsast) und [semgrep](https://github.com/returntocorp/semgrep).
@ -328,7 +332,7 @@ pip install safety
# Run
safety check
```
* [~~**Pyt**~~](https://github.com/python-security/pyt): Nicht mehr gewartet.
* [~~**Pyt**~~](https://github.com/python-security/pyt): Nicht gewartet.
## .NET
```bash
@ -366,9 +370,9 @@ jar cmvf META-INF/MANIFEST.MF test.jar test.class
| Jar entpacken | unzip -d \[output directory] \[jar] |
| Jar erstellen | jar -cmf META-INF/MANIFEST.MF \[output jar] \* |
| Base64 SHA256 | sha256sum \[file] \| cut -d' ' -f1 \| xxd -r -p \| base64 |
| Signatur entfernen| rm META-INF/_.SF META-INF/_.RSA META-INF/\*.DSA |
| Signierung entfernen | rm META-INF/_.SF META-INF/_.RSA META-INF/\*.DSA |
| Aus Jar löschen | zip -d \[jar] \[file to remove] |
| Klasse dekompilieren| procyon -o . \[path to class] |
| Klasse dekompilieren | procyon -o . \[path to class] |
| Jar dekompilieren | procyon -jar \[jar] -o \[output directory] |
| Klasse kompilieren | javac \[path to .java file] |
@ -409,43 +413,43 @@ https://github.com/securego/gosec
#### Deobfuscate/Unpack
**Hinweis**: Es ist möglicherweise nicht möglich, vollständig zu deobfuskieren.
**Hinweis**: Es ist möglicherweise nicht möglich, vollständig zu deobfuscate.
1. Finde und benutze .map-Dateien:
* Wenn die .map-Dateien exponiert sind, können sie verwendet werden, um leicht zu deobfuskieren.
* Wenn die .map-Dateien exponiert sind, können sie verwendet werden, um leicht zu deobfuscate.
* Häufig mappt foo.js.map auf foo.js. Manuell danach suchen.
* Verwende [JS Miner](https://github.com/PortSwigger/js-miner), um danach zu suchen.
* Stelle sicher, dass ein aktiver Scan durchgeführt wird.
* Lies '[Tipps/Notizen](https://github.com/minamo7sen/burp-JS-Miner/wiki#tips--notes)'
* Wenn gefunden, benutze [Maximize](https://www.npmjs.com/package/maximize), um zu deobfuskieren.
* Wenn gefunden, benutze [Maximize](https://www.npmjs.com/package/maximize), um zu deobfuscate.
2. Ohne .map-Dateien, versuche JSnice:
* Referenzen: [http://jsnice.org/](http://jsnice.org/) & [https://www.npmjs.com/package/jsnice](https://www.npmjs.com/package/jsnice)
* Tipps:
* Wenn du jsnice.org verwendest, klicke auf die Optionsschaltfläche neben der Schaltfläche "Nicify JavaScript" und deaktiviere "Infer types", um das Code-Commenting zu reduzieren.
* Stelle sicher, dass du keine leeren Zeilen vor dem Skript lässt, da dies den Deobfuskationsprozess beeinträchtigen und ungenaue Ergebnisse liefern kann.
4. Für einige modernere Alternativen zu JSNice könntest du dir Folgendes ansehen:
* Wenn du jsnice.org verwendest, klicke auf die Optionsschaltfläche neben der Schaltfläche "Nicify JavaScript" und deaktiviere "Infer types", um das Code mit Kommentaren nicht zu überladen.
* Stelle sicher, dass du keine leeren Zeilen vor dem Skript lässt, da dies den Deobfuscation-Prozess beeinträchtigen und ungenaue Ergebnisse liefern kann.
3. Für einige modernere Alternativen zu JSNice könntest du dir Folgendes ansehen:
* [https://github.com/pionxzh/wakaru](https://github.com/pionxzh/wakaru)
* > Javascript-Dekompilierer, Unpacker und Unminify-Toolkit
> Wakaru ist der Javascript-Dekompilierer für modernes Frontend. Es stellt den ursprünglichen Code aus einer gebündelten und transpilierten Quelle wieder her.
* > Javascript-Dekompilierer, Unpacker und Unminify-Toolkit Wakaru ist der Javascript-Dekompilierer für modernes Frontend. Es stellt den ursprünglichen Code aus einer gebündelten und transpilierten Quelle wieder her.
* [https://github.com/j4k0xb/webcrack](https://github.com/j4k0xb/webcrack)
* > Deobfuscate obfuscator.io, unminify und unpack gebündeltes Javascript
* [https://github.com/jehna/humanify](https://github.com/jehna/humanify)
* > Un-minify Javascript-Code mit ChatGPT
> Dieses Tool verwendet große Sprachmodelle (wie ChatGPT & llama2) und andere Tools, um Javascript-Code zu un-minifizieren. Beachte, dass LLMs keine strukturellen Änderungen vornehmen sie geben nur Hinweise zur Umbenennung von Variablen und Funktionen. Die schwere Arbeit wird von Babel auf AST-Ebene erledigt, um sicherzustellen, dass der Code 1-1 äquivalent bleibt.
* > Un-minify Javascript-Code mit ChatGPT Dieses Tool verwendet große Sprachmodelle (wie ChatGPT & llama2) und andere Tools, um Javascript-Code zu un-minify. Beachte, dass LLMs keine strukturellen Änderungen vornehmen sie geben nur Hinweise zur Umbenennung von Variablen und Funktionen. Die schwere Arbeit wird von Babel auf AST-Ebene erledigt, um sicherzustellen, dass der Code 1-1 äquivalent bleibt.
* [https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification.html](https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification.html)
* > Verwendung von LLMs zur Rückgängigmachung der Minifizierung von JavaScript-Variablen
* > Verwendung von LLMs zur Umkehrung der Minifizierung von JavaScript-Variablen
3. Verwende `console.log()`;
* Finde den Rückgabewert am Ende und ändere ihn in `console.log(<packerReturnVariable>);`, damit das deobfuskierte js anstelle der Ausführung gedruckt wird.
* Füge dann das modifizierte (und immer noch obfuskierte) js in [https://jsconsole.com/](https://jsconsole.com/) ein, um das deobfuskierte js in der Konsole zu sehen.
* Schließlich füge die deobfuskierte Ausgabe in [https://prettier.io/playground/](https://prettier.io/playground/) ein, um sie für die Analyse zu verschönern.
* Finde den Rückgabewert am Ende und ändere ihn in `console.log(<packerReturnVariable>);`, damit das deobfuscierte js anstelle der Ausführung gedruckt wird.
* Füge dann das modifizierte (und immer noch obfuskiertes) js in [https://jsconsole.com/](https://jsconsole.com/) ein, um das deobfuscierte js in der Konsole zu sehen.
* Schließlich füge die deobfuscierte Ausgabe in [https://prettier.io/playground/](https://prettier.io/playground/) ein, um sie für die Analyse zu beautify.
* **Hinweis**: Wenn du immer noch gepacktes (aber anderes) js siehst, könnte es rekursiv gepackt sein. Wiederhole den Prozess.
#### 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" %}
Lerne & übe 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">\
Lerne & übe 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)
Lerne & übe 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">\
Lerne & übe 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>
@ -471,7 +475,7 @@ Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size=
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teile Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}