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

This commit is contained in:
Translator 2023-09-05 14:43:36 +00:00
parent b5b4882d50
commit b57ea0ee31

View file

@ -76,6 +76,151 @@ sonar-scanner \
```
{% endcode %}
### CodeQL
**インストール可能な無料バージョン**があります。
#### インストール
{% code overflow="wrap" %}
```bash
# Download your release from https://github.com/github/codeql-action/releases
## Example
wget https://github.com/github/codeql-action/releases/download/codeql-bundle-v2.14.3/codeql-bundle-osx64.tar.gz
# Move it to the destination folder
mkdir ~/codeql
mv codeql-bundle* ~/codeql
# Decompress it
cd ~/codeql
tar -xzvf codeql-bundle-*.tar.gz
rm codeql-bundle-*.tar.gz
# Add to path
echo 'export PATH="$PATH:/Users/username/codeql/codeql"' >> ~/.zshrc
# Check it's correctly installed
## Open a new terminal
codeql resolve qlpacks #Get paths to QL packs
```
{% endcode %}
#### クイックスタート - データベースの準備
{% hint style="success" %}
まず最初に、**データベースを準備する**必要があります(コードツリーを作成する)ので、後でクエリを実行できます。
{% endhint %}
* コードqlにリポジトリの言語を自動的に識別させ、データベースを作成することができます。
{% code overflow="wrap" %}
```bash
codeql database create <database> --language <language>
# Example
codeql database create /path/repo/codeql_db --source-root /path/repo
## DB will be created in /path/repo/codeql_db
```
{% 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
codeql database create <database> --language <language> --source-root </path/to/repo>
# Example
codeql database create /path/repo/codeql_db --language javascript --source-root /path/repo
## DB will be created in /path/repo/codeql_db
```
{% endcode %}
* もしリポジトリが**1つ以上の言語**を使用している場合、各言語を示すために**1つのDB**を作成することもできます。
{% code overflow="wrap" %}
```bash
export GITHUB_TOKEN=ghp_32849y23hij4...
codeql database create <database> --source-root /path/to/repo --db-cluster --language "javascript,python"
# Example
export GITHUB_TOKEN=ghp_32849y23hij4...
codeql database create /path/repo/codeql_db --source-root /path/to/repo --db-cluster --language "javascript,python"
## DBs will be created in /path/repo/codeql_db/*
```
{% endcode %}
* `codeql`には、**すべての言語を識別**させ、言語ごとにDBを作成するオプションもあります。そのためには、**GITHUB\_TOKEN**を指定する必要があります。
{% code overflow="wrap" %}
```bash
export GITHUB_TOKEN=ghp_32849y23hij4...
codeql database create <database> --db-cluster --source-root </path/to/repo>
# Example
export GITHUB_TOKEN=ghp_32849y23hij4...
codeql database create /tmp/codeql_db --db-cluster --source-root /path/repo
## DBs will be created in /path/repo/codeql_db/*
```
{% endcode %}
#### クイックスタート - コードの分析
{% hint style="success" %}
いよいよコードの分析の時間です
{% endhint %}
複数の言語を使用した場合は、指定したパスに**言語ごとのDB**が作成されていることを忘れないでください。
{% code overflow="wrap" %}
```bash
# Default analysis
codeql database analyze <database> --format=<format> --output=</out/file/path>
# Example
codeql database analyze /tmp/codeql_db/javascript --format=sarif-latest --output=/tmp/graphql_results.sarif
# Specify QL pack to use in the analysis
codeql database analyze <database> \
<qls pack> --sarif-category=<language> \
--sarif-add-baseline-file-info \ --format=<format> \
--output=/out/file/path>
# Example
codeql database analyze /tmp/codeql_db \
javascript-security-extended --sarif-category=javascript \
--sarif-add-baseline-file-info --format=sarif-latest \
--output=/tmp/sec-extended.sarif
```
#### クイックスタート - スクリプト化
{% code overflow="wrap" %}
```bash
export GITHUB_TOKEN=ghp_32849y23hij4...
export REPO_PATH=/path/to/repo
export OUTPUT_DIR_PATH="$REPO_PATH/codeql_results"
mkdir -p "$OUTPUT_DIR_PATH"
export FINAL_MSG="Results available in: "
echo "Creating DB"
codeql database create "$REPO_PATH/codeql_db" --db-cluster --source-root "$REPO_PATH"
for db in `ls "$REPO_PATH/codeql_db"`; do
echo "Analyzing $db"
codeql database analyze "$REPO_PATH/codeql_db/$db" --format=sarif-latest --output="${OUTPUT_DIR_PATH}/$db).sarif"
FINAL_MSG="$FINAL_MSG ${OUTPUT_DIR_PATH}/$db.sarif ,"
echo ""
done
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)を使用することができます。
また、VSCodeの拡張機能[**VSCode extension**](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-codeql)を使用して、VSCode内で結果を取得することもできます。手動でデータベースを作成する必要がありますが、その後は任意のファイルを選択し、`右クリック`->`CodeQL: Run Queries in Selected Files`をクリックすることができます。
### [**Snyk**](https://snyk.io/product/snyk-code/)
**インストール可能な無料バージョン**があります。
@ -101,69 +246,7 @@ snyk container test [image]
# Test for IaC vulns
snyk iac test
```
[**snyk VSCode Extension**](https://marketplace.visualstudio.com/items?itemName=snyk-security.snyk-vulnerability-scanner)を使用することもできます。VSCode内での検出結果を取得するためのものです。
### CodeQL
**インストール可能な無料バージョン**があります。
#### インストール
```bash
brew install codeql
# Check it's correctly installed
codeql resolve qlpacks
```
または
{% code overflow="wrap" %}
```bash
# Download your release from https://github.com/github/codeql-action/releases
## Example
wget https://github.com/github/codeql-action/releases/download/codeql-bundle-v2.14.3/codeql-bundle-osx64.tar.gz
# Move it to the destination folder
mkdir ~/codeql
mv codeql-bundle* ~/codeql
# Decompress it
cd ~/codeql
tar -xzvf codeql-bundle-*.tar.gz
rm codeql-bundle-*.tar.gz
# Add to path
echo 'export PATH="$PATH:/Users/username/codeql/codeql"' >> ~/.zshrc
# Check it's correctly installed
## Open a new terminal
codeql resolve qlpacks
```
#### クイックスタート
{% code overflow="wrap" %}
```bash
# Prepare the database
## You need to export a GITHUB_TOKEN (codeql will detect languages automatically)
export GITHUB_TOKEN=ghp_32849y23hij4...
codeql database create <database> --db-cluster --source-root </path/to/repo>
## Or to indicate the languages yourself
codeql database create <database> --language=<language-identifier> --source-root </path/to/repo>
## For example
export GITHUB_TOKEN=ghp_32849y23hij4...
codeql database create /tmp/codeql_db --db-cluster --source-root /path/to/repo # This will generate the folder /tmp/codeql_db
# Analyze the code
codeql database analyze <database> --format=<format> --output=</out/file/path>
# If you used --db-cluster a different db was created per language, you need to indicate it. In this example I analyze the javascript folder.
codeql database analyze /tmp/codeql_db/javascript --format=csv --output=/tmp/graphql_results.csv
# Get sarif format
codeql database analyze /tmp/codeql_db/javascript --format=sarif-latest --output=/tmp/graphql_results.sarif
# You can visualize the findings in https://microsoft.github.io/sarif-web-component/
```
{% endcode %}
また、[**VSCodeの拡張機能**](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-codeql)を使用して、VSCode内で結果を取得することもできます。手動でデータベースを作成する必要はありますが、その後は任意のファイルを選択し、`右クリック` -> `CodeQL: Run Queries in Selected Files`をクリックすることができます。
[**snyk VSCode Extension**](https://marketplace.visualstudio.com/items?itemName=snyk-security.snyk-vulnerability-scanner)を使用することもできます。VSCode内での検出結果を取得できます。
### [Insider](https://github.com/insidersec/insider)
@ -194,6 +277,7 @@ brew isntall yarn
# Run
cd /path/to/repo
yarn audit
npm audit
```
* [**nodejsscan**](https://github.com/ajinabraham/nodejsscan)**:** Node.jsアプリケーションのための静的セキュリティコードスキャナSAST。[libsast](https://github.com/ajinabraham/libsast)と[semgrep](https://github.com/returntocorp/semgrep)によって動作します。
```bash
@ -247,21 +331,21 @@ Javaは、広く使用されているプログラミング言語であり、Web
### 1. FindBugs
FindBugsは、Javaプログラムのバグや潜在的な問題を検出するための静的解析ツールです。コードの品質を向上させ、セキュリティ上の脆弱性を特定するのに役立ちます。
FindBugsは、Javaプログラムのバグや潜在的な問題を検出するための静的解析ツールです。コードベース全体をスキャンし、一般的なエラーパターンやセキュリティ上の問題を特定します。FindBugsは、コードの品質を向上させるために使用されることがあります。
### 2. PMD
PMDは、Javaコードの静的解析を行い、コーディング規約に違反する箇所やパフォーマンスの問題を特定します。セキュリティ上の脆弱性を見つけるためにも使用できます。
PMDは、Javaコードの静的解析を行うためのツールです。コードのスタイルやパフォーマンスの問題、バグ、セキュリティ上の問題を特定します。PMDは、コードの一貫性を確保し、バグを見つけるために使用されます。
### 3. Checkstyle
Checkstyleは、Javaコードのスタイルと品質をチェックするためのツールです。コーディング規約に準拠しているかどうかを確認し、セキュリティ上の問題を特定するのに役立ちます。
Checkstyleは、Javaコードのスタイルと品質をチェックするためのツールです。コーディング規約に準拠しているかどうかを確認し、コードの一貫性を維持します。Checkstyleは、コードの品質を向上させるために使用されます。
### 4. SonarQube
SonarQubeは、Javaコードの品質とセキュリティを評価するための総合的なツールです。静的解析、コーディング規約のチェック、セキュリティ上の脆弱性の検出など、さまざまな機能を提供します。
SonarQubeは、Javaコードの品質管理ツールです。コードの品質、セキュリティ、保守性を評価し、問題を特定します。SonarQubeは、コードの品質を向上させるために使用されます。
これらのツールは、Javaコードの品質とセキュリティを向上させるために役立ちます。コードレビューを通じて、潜在的な問題や脆弱性を特定し、修正することが重要です。
これらのツールは、Javaコードのセキュリティ上の問題やバグを特定するために役立ちます。コードレビューツールを使用して、セキュリティ上の脆弱性を特定し、修正することは、Webアプリケーションのセキュリティを向上させるために重要です。
```bash
# JD-Gui
https://github.com/java-decompiler/jd-gui
@ -302,11 +386,11 @@ https://github.com/securego/gosec
## JavaScript
### 発見
### ディスカバリー
1. Burp:
* Spiderとコンテンツの発見
* Sitemap > フィルタ
* Spiderとコンテンツの検出
* Sitemap > フィルタ
* Sitemap > ドメインを右クリック > Engagement tools > スクリプトの検索
2. [WaybackURLs](https://github.com/tomnomnom/waybackurls):
* `waybackurls <domain> |grep -i "\.js" |sort -u`
@ -362,7 +446,7 @@ https://github.com/securego/gosec
* 手動でレビューする
* APIキーが見つかった場合、潜在的な使用構文についてはこちらをチェックしてください: https://github.com/streaak/keyhacks.
* 脆弱な関数
* InnerHTML() - これを見つけた場合、適切なサニタイズが行われていない場合、XSSの可能性があります。ペイロードがサニタイズされていても心配しないでください。コードを追跡して、サニタイズが行われている場所を特定してください。それを研究し、サニタイズを回避しようとしてください。
* InnerHTML() - これが見つかった場合、適切なサニタイズが行われていない場合、XSSの可能性があります。ペイロードがサニタイズされていても心配しないでください。コードを追跡して、サニタイズが行われている場所を特定してください。それを研究し、サニタイズを回避しようとしてください。
* Postmessage() - 以前の投稿https://medium.com/techiepedia/what-are-sop-cors-and-ways-to-exploit-it-62a5e02100dcを読んだことがあれば、Postmessage()が潜在的なCORSの問題につながる可能性があることに気付いたでしょう。関数の2番目のパラメータが\*に設定されている場合、ラッキーです。詳細な仕組みについては、以前の投稿をチェックしてください。
* String.prototype.search() - この関数は普通に見えます。なぜ危険な関数なのでしょうかそれは、一部の開発者がこの関数を使用して、1つの文字列内の別の文字列の出現を検索するために使用しているためです。しかし、この関数では「.」がワイルドカードとして扱われます。したがって、この関数がサニタイズチェックとして使用されている場合、単純に「.」を入力することでバイパスできます。Filedescryptorのhackeroneレポートをチェックしてください: https://hackerone.com/reports/129873
* エンドポイントとパラメータ
@ -375,7 +459,7 @@ https://github.com/securego/gosec
* [JS Miner](https://github.com/PortSwigger/js-miner)を使用してください。
* ロジックの欠陥
* 状況認識を得る:
* `use strict;`を使用していますか?
* `use strict;`は使用されていますか?
* クライアントサイドのコントロールをgrep:
* disable, enable, hidden, hide, show
* catch, finally, throw, try
@ -405,7 +489,7 @@ https://github.com/securego/gosec
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://
* [💬ディスコードグループ](https://discord.gg/hRep4RUj7f)または[テレグラムグループ](https://t.me/peass)に参加するか、[Twitter](https://twitter.com/hacktricks_live)で私をフォローしてください🐦@carlospolopm。
* ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。