mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-01 08:59:30 +00:00
Translated ['network-services-pentesting/pentesting-web/code-review-tool
This commit is contained in:
parent
7e19c8ad0c
commit
ca915b7278
1 changed files with 31 additions and 27 deletions
|
@ -1,8 +1,8 @@
|
||||||
# 源代码审查 / SAST 工具
|
# 源代码审查 / SAST 工具
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
学习与实践 AWS 黑客技术:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
学习与实践 GCP 黑客技术:<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
|
@ -33,10 +33,10 @@
|
||||||
#### 支持的语言
|
#### 支持的语言
|
||||||
|
|
||||||
| 类别 | 语言 |
|
| 类别 | 语言 |
|
||||||
| ------------ | --------------------------------------------------------------------------------------------------- |
|
| ----------- | -------------------------------------------------------------------------------------------------- |
|
||||||
| GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
|
| GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
|
||||||
| Beta | Kotlin · Rust |
|
| Beta | Kotlin · Rust |
|
||||||
| Experimental | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
|
| Experimental| Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
|
||||||
|
|
||||||
#### 快速开始
|
#### 快速开始
|
||||||
|
|
||||||
|
@ -128,10 +128,10 @@ codeql database create /path/repo/codeql_db --source-root /path/repo
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
这 **通常会触发一个错误**,说指定了多个语言(或自动检测到)。 **检查下一个选项** 来修复这个问题!
|
这**通常会触发一个错误**,说指定了多个语言(或自动检测到)。**检查下一个选项**以修复此问题!
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
* 你可以 **手动指明** **repo** 和 **language** ([语言列表](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))
|
* 您可以**手动指明****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))
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
|
@ -143,7 +143,7 @@ codeql database create /path/repo/codeql_db --language javascript --source-root
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
* 如果您的代码库使用**多于1种语言**,您还可以为每种语言创建**1个数据库**,指明每种语言。
|
* 如果您的代码库使用**多于1种语言**,您还可以为每种语言创建**1个数据库**,并指明每种语言。
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
|
@ -267,7 +267,7 @@ $ tar -xf insider_2.1.0_linux_x86_64.tar.gz
|
||||||
$ chmod +x insider
|
$ chmod +x insider
|
||||||
$ ./insider --tech javascript --target <projectfolder>
|
$ ./insider --tech javascript --target <projectfolder>
|
||||||
```
|
```
|
||||||
### [**DeepSource**](https://deepsource.com/pricing) 
|
### [**DeepSource**](https://deepsource.com/pricing)
|
||||||
|
|
||||||
对**公共仓库**免费。
|
对**公共仓库**免费。
|
||||||
|
|
||||||
|
@ -279,7 +279,10 @@ $ ./insider --tech javascript --target <projectfolder>
|
||||||
brew install yarn
|
brew install yarn
|
||||||
# Run
|
# Run
|
||||||
cd /path/to/repo
|
cd /path/to/repo
|
||||||
yarn audit
|
yarn install
|
||||||
|
yarn audit # In lower versions
|
||||||
|
yarn npm audit # In 2+ versions
|
||||||
|
|
||||||
npm audit
|
npm audit
|
||||||
```
|
```
|
||||||
* **`pnpm`**
|
* **`pnpm`**
|
||||||
|
@ -288,6 +291,7 @@ npm audit
|
||||||
npm install -g pnpm
|
npm install -g pnpm
|
||||||
# Run
|
# Run
|
||||||
cd /path/to/repo
|
cd /path/to/repo
|
||||||
|
pnpm install
|
||||||
pnpm audit
|
pnpm audit
|
||||||
```
|
```
|
||||||
* [**nodejsscan**](https://github.com/ajinabraham/nodejsscan)**:** 用于 Node.js 应用程序的静态安全代码扫描器 (SAST),由 [libsast](https://github.com/ajinabraham/libsast) 和 [semgrep](https://github.com/returntocorp/semgrep) 提供支持。
|
* [**nodejsscan**](https://github.com/ajinabraham/nodejsscan)**:** 用于 Node.js 应用程序的静态安全代码扫描器 (SAST),由 [libsast](https://github.com/ajinabraham/libsast) 和 [semgrep](https://github.com/returntocorp/semgrep) 提供支持。
|
||||||
|
@ -391,9 +395,9 @@ https://github.com/securego/gosec
|
||||||
### 发现
|
### 发现
|
||||||
|
|
||||||
1. Burp:
|
1. Burp:
|
||||||
* Spider 和发现内容
|
* 爬虫并发现内容
|
||||||
* Sitemap > 过滤
|
* 网站地图 > 过滤
|
||||||
* Sitemap > 右键点击域名 > Engagement tools > 查找脚本
|
* 网站地图 > 右键点击域名 > 参与工具 > 查找脚本
|
||||||
2. [WaybackURLs](https://github.com/tomnomnom/waybackurls):
|
2. [WaybackURLs](https://github.com/tomnomnom/waybackurls):
|
||||||
* `waybackurls <domain> |grep -i "\.js" |sort -u`
|
* `waybackurls <domain> |grep -i "\.js" |sort -u`
|
||||||
|
|
||||||
|
@ -414,36 +418,36 @@ https://github.com/securego/gosec
|
||||||
* 通常,foo.js.map 映射到 foo.js。手动查找它们。
|
* 通常,foo.js.map 映射到 foo.js。手动查找它们。
|
||||||
* 使用 [JS Miner](https://github.com/PortSwigger/js-miner) 查找它们。
|
* 使用 [JS Miner](https://github.com/PortSwigger/js-miner) 查找它们。
|
||||||
* 确保进行主动扫描。
|
* 确保进行主动扫描。
|
||||||
* 阅读 '[Tips/Notes](https://github.com/minamo7sen/burp-JS-Miner/wiki#tips--notes)'
|
* 阅读 '[提示/注意事项](https://github.com/minamo7sen/burp-JS-Miner/wiki#tips--notes)'
|
||||||
* 如果找到,使用 [Maximize](https://www.npmjs.com/package/maximize) 进行反混淆。
|
* 如果找到,使用 [Maximize](https://www.npmjs.com/package/maximize) 进行反混淆。
|
||||||
2. 如果没有 .map 文件,尝试 JSnice:
|
2. 如果没有 .map 文件,尝试 JSnice:
|
||||||
* 参考:[http://jsnice.org/](http://jsnice.org/) & [https://www.npmjs.com/package/jsnice](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”按钮旁边的选项按钮,取消选择“推断类型”,以减少代码中的注释杂乱。
|
* 如果使用 jsnice.org,点击“Nicify JavaScript”按钮旁边的选项按钮,取消选择“推断类型”,以减少代码中的注释杂乱。
|
||||||
* 确保在脚本之前没有留下任何空行,因为这可能会影响反混淆过程并给出不准确的结果。
|
* 确保在脚本之前没有空行,因为这可能会影响反混淆过程并给出不准确的结果。
|
||||||
4. 对于一些更现代的 JSNice 替代品,您可能想查看以下内容:
|
3. 对于一些更现代的 JSNice 替代品,您可能想查看以下内容:
|
||||||
|
|
||||||
* [https://github.com/pionxzh/wakaru](https://github.com/pionxzh/wakaru)
|
* [https://github.com/pionxzh/wakaru](https://github.com/pionxzh/wakaru)
|
||||||
* > Javascript 反编译器、解包和反混淆工具包
|
* > Javascript 反编译器、解包器和反混淆工具包 Wakaru 是现代前端的 Javascript 反编译器。它从打包和转译的源代码中恢复原始代码。
|
||||||
> Wakaru 是现代前端的 Javascript 反编译器。它从打包和转译的源代码中恢复原始代码。
|
|
||||||
* [https://github.com/j4k0xb/webcrack](https://github.com/j4k0xb/webcrack)
|
* [https://github.com/j4k0xb/webcrack](https://github.com/j4k0xb/webcrack)
|
||||||
* > 反混淆 obfuscator.io,反混淆和解包打包的 javascript
|
* > 反混淆 obfuscator.io,反混淆和解包打包的 javascript
|
||||||
* [https://github.com/jehna/humanify](https://github.com/jehna/humanify)
|
* [https://github.com/jehna/humanify](https://github.com/jehna/humanify)
|
||||||
* > 使用 ChatGPT 反混淆 Javascript 代码
|
* > 使用 ChatGPT 反混淆 Javascript 代码 此工具使用大型语言模型(如 ChatGPT 和 llama2)及其他工具来反混淆 Javascript 代码。请注意,LLM 不会进行任何结构性更改——它们仅提供重命名变量和函数的提示。重任由 Babel 在 AST 级别完成,以确保代码保持 1-1 等价。
|
||||||
> 此工具使用大型语言模型(如 ChatGPT 和 llama2)及其他工具来反混淆 Javascript 代码。请注意,LLM 不会进行任何结构性更改——它们仅提供重命名变量和函数的提示。重任由 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)
|
* [https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification.html](https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification.html)
|
||||||
* > 使用 LLM 反向 JavaScript 变量名混淆
|
* > 使用 LLM 反向 JavaScript 变量名混淆
|
||||||
|
|
||||||
3. 使用 `console.log()`;
|
3. 使用 `console.log()`;
|
||||||
* 找到返回值并将其更改为 `console.log(<packerReturnVariable>);`,以便打印反混淆的 js,而不是执行它。
|
* 找到返回值并将其更改为 `console.log(<packerReturnVariable>);`,以便打印反混淆的 js,而不是执行它。
|
||||||
* 然后,将修改后的(仍然混淆的)js 粘贴到 [https://jsconsole.com/](https://jsconsole.com/) 以查看反混淆的 js 记录到控制台。
|
* 然后,将修改后的(仍然混淆的)js 粘贴到 [https://jsconsole.com/](https://jsconsole.com/) 以查看反混淆的 js 记录到控制台。
|
||||||
* 最后,将反混淆的输出粘贴到 [https://prettier.io/playground/](https://prettier.io/playground/) 以美化它以便分析。
|
* 最后,将反混淆的输出粘贴到 [https://prettier.io/playground/](https://prettier.io/playground/) 以美化它以供分析。
|
||||||
* **注意**:如果您仍然看到打包的(但不同的)js,可能是递归打包。重复该过程。
|
* **注意**:如果您仍然看到打包的(但不同的)js,可能是递归打包。重复该过程。
|
||||||
|
|
||||||
#### 参考
|
#### 参考
|
||||||
|
|
||||||
* [YouTube: DAST - Javascript 动态分析](https://www.youtube.com/watch?v=_v8r_t4v6hQ)
|
* [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-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)
|
* [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) 的 [GitHub Gists](https://gist.github.com/0xdevalias):
|
* [devalias](https://twitter.com/\_devalias) 的 [GitHub Gists](https://gist.github.com/0xdevalias):
|
||||||
* [反混淆/反混淆混淆的 Web 应用代码](https://gist.github.com/0xdevalias/d8b743efb82c0e9406fc69da0d6c6581#deobfuscating--unminifying-obfuscated-web-app-code)
|
* [反混淆/反混淆混淆的 Web 应用代码](https://gist.github.com/0xdevalias/d8b743efb82c0e9406fc69da0d6c6581#deobfuscating--unminifying-obfuscated-web-app-code)
|
||||||
* [逆向工程 Webpack 应用](https://gist.github.com/0xdevalias/8c621c5d09d780b1d321bfdb86d67cdd#reverse-engineering-webpack-apps)
|
* [逆向工程 Webpack 应用](https://gist.github.com/0xdevalias/8c621c5d09d780b1d321bfdb86d67cdd#reverse-engineering-webpack-apps)
|
||||||
* [等](https://gist.github.com/search?q=user:0xdevalias+javascript)
|
* [等](https://gist.github.com/search?q=user:0xdevalias+javascript)
|
||||||
|
@ -460,8 +464,8 @@ https://github.com/securego/gosec
|
||||||
* [https://github.com/jshint/jshint/](https://github.com/jshint/jshint/)
|
* [https://github.com/jshint/jshint/](https://github.com/jshint/jshint/)
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
学习和实践 AWS 黑客攻击:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
学习和实践 AWS 黑客技术:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
学习和实践 GCP 黑客攻击:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
学习和实践 GCP 黑客技术: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue