mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-16 01:38:20 +00:00
Translated ['network-services-pentesting/pentesting-web/code-review-tool
This commit is contained in:
parent
b5b4882d50
commit
b57ea0ee31
1 changed files with 158 additions and 74 deletions
|
@ -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を提出してください。
|
||||
|
||||
|
|
Loading…
Reference in a new issue