56 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Web API Pentesting
{{#include ../../banners/hacktricks-training.md}}
## API Pentesting Methodology Summary
APIのペンテストは、脆弱性を発見するための体系的なアプローチを含みます。このガイドは、実用的な技術とツールを強調した包括的な方法論を要約しています。
### **Understanding API Types**
- **SOAP/XML Web Services**: ドキュメントのためにWSDL形式を利用し、通常は`?wsdl`パスで見つかります。**SOAPUI**や**WSDLer**Burp Suite Extensionなどのツールは、リクエストの解析と生成に役立ちます。例のドキュメントは[DNE Online](http://www.dneonline.com/calculator.asmx)でアクセス可能です。
- **REST APIs (JSON)**: ドキュメントはWADLファイルで提供されることが多いですが、[Swagger UI](https://swagger.io/tools/swagger-ui/)のようなツールは、インタラクションのためのよりユーザーフレンドリーなインターフェースを提供します。**Postman**は、例のリクエストを作成および管理するための貴重なツールです。
- **GraphQL**: APIのためのクエリ言語で、API内のデータの完全で理解可能な説明を提供します。
### **Practice Labs**
- [**VAmPI**](https://github.com/erev0s/VAmPI): OWASPトップ10 API脆弱性をカバーするための実践的な練習用に意図的に脆弱なAPIです。
### **Effective Tricks for API Pentesting**
- **SOAP/XML Vulnerabilities**: XXE脆弱性を探求しますが、DTD宣言はしばしば制限されています。XMLが有効なままであれば、CDATAタグはペイロードの挿入を許可する場合があります。
- **Privilege Escalation**: 権限レベルが異なるエンドポイントをテストして、不正アクセスの可能性を特定します。
- **CORS Misconfigurations**: 認証されたセッションからのCSRF攻撃を通じて、潜在的な悪用可能性のためにCORS設定を調査します。
- **Endpoint Discovery**: APIパターンを利用して隠れたエンドポイントを発見します。ファジングツールのようなツールは、このプロセスを自動化できます。
- **Parameter Tampering**: リクエスト内のパラメータを追加または置き換えて、不正なデータや機能にアクセスすることを試みます。
- **HTTP Method Testing**: リクエストメソッドGET、POST、PUT、DELETE、PATCHを変えて、予期しない動作や情報漏洩を発見します。
- **Content-Type Manipulation**: 異なるコンテンツタイプx-www-form-urlencoded、application/xml、application/jsonを切り替えて、解析の問題や脆弱性をテストします。
- **Advanced Parameter Techniques**: JSONペイロード内で予期しないデータ型を使用してテストしたり、XXEインジェクションのためにXMLデータを操作したりします。また、パラメータ汚染やワイルドカード文字を試して、より広範なテストを行います。
- **Version Testing**: 古いAPIバージョンは攻撃に対してより脆弱である可能性があります。常に複数のAPIバージョンに対して確認し、テストを行います。
### **Tools and Resources for API Pentesting**
- [**kiterunner**](https://github.com/assetnote/kiterunner): APIエンドポイントを発見するのに優れています。ターゲットAPIに対してパスやパラメータをスキャンおよびブルートフォースするために使用します。
```bash
kr scan https://domain.com/api/ -w routes-large.kite -x 20
kr scan https://domain.com/api/ -A=apiroutes-220828 -x 20
kr brute https://domain.com/api/ -A=raft-large-words -x 20 -d=0
kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0
```
- [**https://github.com/BishopFox/sj**](https://github.com/BishopFox/sj): sjは、関連するAPIエンドポイントの弱い認証をチェックすることによって、**公開されたSwagger/OpenAPI定義ファイル**の監査を支援するために設計されたコマンドラインツールです。また、手動の脆弱性テストのためのコマンドテンプレートも提供します。
- **automatic-api-attack-tool**、**Astra**、および**restler-fuzzer**のような追加ツールは、攻撃シミュレーションからファジング、脆弱性スキャンに至るまで、APIセキュリティテストのための特化した機能を提供します。
- [**Cherrybomb**](https://github.com/blst-security/cherrybomb): OASファイルに基づいてAPIを監査するAPIセキュリティツールですこのツールはRustで書かれています
### **学習と実践リソース**
- **OWASP API Security Top 10**: 一般的なAPIの脆弱性を理解するための必読書です ([OWASP Top 10](https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf))。
- **API Security Checklist**: APIを保護するための包括的なチェックリストです ([GitHub link](https://github.com/shieldfy/API-Security-Checklist))。
- **Logger++ Filters**: APIの脆弱性を探すために、Logger++は便利なフィルターを提供します ([GitHub link](https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters))。
- **API Endpoints List**: テスト目的のための潜在的なAPIエンドポイントのキュレーションリストです ([GitHub gist](https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d))。
## 参考文献
- [https://github.com/Cyber-Guy1/API-SecurityEmpire](https://github.com/Cyber-Guy1/API-SecurityEmpire)
{{#include ../../banners/hacktricks-training.md}}