forked from RedHatProductSecurity/rapidast
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ZAP] OAuth2: optionally dowload schemas (RedHatProductSecurity#117)
* [ZAP] OAuth2: optionally dowload schemas ZAP can't use authenticated user when downloading schemas, such as OpenAPI and GraphQL. This workaround looks for places with URLs, downloads them and changes the config to point at the file instead Also prevent adding a NULL URL when application.url is missing This causes a Null pointer dereference in ZAP. * [ZAP] Prevents ZAP to run if application.url is missing * [test] fixing pytest after application.url was made mandatory
- Loading branch information
Showing
10 changed files
with
296 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,180 @@ | ||
# This is a verbose configuration template. A lot of value do not need to be present, for most configuration. | ||
# See "config-template.yaml" for a simpler configuration file. | ||
# All the values are optional (except `config.configVersion`): if a key is missing, it will mean either "disabled" or a sensible default will be selected | ||
|
||
config: | ||
# WARNING: `configVersion` indicates the schema version of the config file. | ||
# This value tells RapiDAST what schema should be used to read this configuration. | ||
# Therefore you should only change it if you update the configuration to a newer schema | ||
# It is intended to keep backward compatibility (newer RapiDAST running an older config) | ||
configVersion: 4 | ||
|
||
# all the results of all scanners will be stored under that location | ||
base_results_dir: "./results" | ||
|
||
# Import a particular environment, and inject it for each scanner | ||
environ: | ||
envFile: "path/to/env/file" | ||
|
||
# (Optional) configure to export scan results to OWASP Defect Dojo | ||
defectDojo: | ||
url: "https://mydefectdojo.example.com/" | ||
authorization: | ||
username: "rapidast" | ||
password: "password" | ||
# or | ||
token: "abc" | ||
|
||
# `application` contains data related to the application, not to the scans. | ||
application: | ||
shortName: "MyApp-1.0" | ||
url: "<Mandatory. root URL of the application>" | ||
|
||
# `general` is a section that will be applied to all scanners. | ||
# Any scanner can override a value by creating an entry of the same name in their own configuration | ||
general: | ||
|
||
|
||
# remove `proxy` entirely for direct connection | ||
proxy: | ||
proxyHost: "<hostname>" | ||
proxyPort: "<port>" | ||
|
||
# remove `authentication` entirely for unauthenticated connection | ||
authentication: | ||
type: "oauth2_rtoken" | ||
parameters: | ||
client_id: "cloud-services" | ||
token_endpoint: "<token retrieval URL>" | ||
rtoken_from_var: "RTOKEN" # referring to a env defined in general.environ.envFile | ||
# Other types of authentication: | ||
#type: "http_header" | ||
#parameters: | ||
# name: "Authorization" | ||
# value: "MySecretHeader" | ||
#type: "http_basic" | ||
#parameters: | ||
# username: "user" | ||
# password: "mypassw0rd" | ||
#type: "cookie" | ||
#parameters: | ||
# name: "cookie name" | ||
# value: "cookie value" | ||
|
||
|
||
container: | ||
# This configures what technology is to be used for RapiDAST to run each scanner | ||
# Currently supported: `podman`, `flatpak` and `none` | ||
# podman: RapiDAST runs each scanner using podman | ||
# flatpak: RapiDAST runs each scanner using flatpak | ||
# none: RapiDAST runs each scanner in the same host or container (where RapiDAST itself is running in a container) | ||
# container. | ||
type: "podman" | ||
|
||
|
||
# `scanners' is a section that configures scanning options | ||
scanners: | ||
zap: | ||
# define a scan through the ZAP scanner | ||
apiScan: | ||
target: "<optional, if different from application.url>" | ||
apis: | ||
apiUrl: "<URL to openAPI>" | ||
# alternative to apiURL: apiFile: "<local path to openAPI file>" | ||
|
||
# A list of URLs can also be provided, from a text file (1 URL per line) | ||
importUrlsFromFile: "<path to import URL>" | ||
|
||
graphql: | ||
endpoint: "<URL to GraphQL API endpoint>" | ||
# schemaUrl: "" # String: URL pointing to a GraphQL Schema | ||
# schemaFile: "" # String: Local file path of a GraphQL Schema | ||
# maxQueryDepth: 5 # The maximum query generation depth | ||
# lenientMaxQueryDepthEnabled: true # Whether or not Maximum Query Depth is enforced leniently | ||
# maxAdditionalQueryDepth: 5 # The maximum additional query generation depth (used if enforced leniently) | ||
# maxArgsDepth: 5 # The maximum arguments generation depth | ||
# optionalArgsEnabled: true # Whether or not Optional Arguments should be specified | ||
# argsType: both # Enum [inline, variables, both]: How arguments are specified | ||
# querySplitType: leaf # Enum [leaf, root_field, operation]: The level for which a single query is generated | ||
# requestMethod: post_json # Enum [post_json, post_graphql, get]: The request method | ||
|
||
spider: | ||
maxDuration: 0 # in minutes, default: 0 unlimited | ||
url: "" # url to start spidering from, default: application.url set above | ||
|
||
spiderAjax: | ||
maxDuration: 0 # in minutes, default: 0 unlimited | ||
url: "" # url to start spidering from, default: application.url set above | ||
browserId: firefox-headless | ||
|
||
passiveScan: | ||
# optional comma-separated list of passive rules to disable | ||
# Use https://www.zaproxy.org/docs/alerts/ to match rule with its ID | ||
disabledRules: "2,10015,10027,10096,10024" | ||
|
||
activeScan: | ||
# If no policy is chosen, a default ("API-scan-minimal") will be selected | ||
# The list of policies can be found in scanners/zap/policies/ | ||
policy: "API-scan-minimal" | ||
|
||
container: | ||
parameters: | ||
image: "docker.io/owasp/zap2docker-stable:latest" # for type such as podman | ||
#podName: "mypod" # optional: inject ZAP in an existing Pod | ||
|
||
executable: "zap.sh" # for Linux | ||
# executable: "/Applications/OWASP ZAP.app/Contents/Java/zap.sh" # for MacOS, when general.container.type is 'none' only | ||
|
||
|
||
report: | ||
format: ["json"] | ||
# format: ["json","html","sarif","xml"] # default: "json" only | ||
|
||
urls: | ||
# Optional, `includes` and `excludes` take a list of regexps. | ||
# includes: A URL matching that regexp will be in the scope of scanning, in addition to application.url which is already in scope | ||
# excludes: A URL matching that regexp will NOT be in the scope of scanning | ||
# Note: The regular expressions MUST match the whole URL. | ||
# e.g.: 'http://example.com/do-not-descend-here/' will actually descend | ||
|
||
#includes: | ||
# - "^https?://example.com:3000/.*$" | ||
#excludes: | ||
# - "^https?://example.com:3000/do-not-descend-here/.*$" | ||
|
||
miscOptions: | ||
# enableUI (default: false), requires a compatible runtime (e.g.: flatpak or no containment) | ||
enableUI: False | ||
# Defaults to True, set False to prevent auto update of ZAP plugins | ||
updateAddons: True | ||
# If set to True and authentication is oauth2_rtoken and api.apiUrl is set, download the API outside of ZAP | ||
oauth2OpenapiManualDownload: False | ||
|
||
# overwrite the default port in case it is required. The default port was selected to avoid any collision with other services | ||
zapPort: 8080 | ||
|
||
# (Optional) configure to export scan results to OWASP Defect Dojo. | ||
# `config.defectDojo` must be configured first. | ||
defectDojoExport: | ||
type: "reimport" # choose between: import, reimport, False (disable export). Default (or other content): re-import if test is set | ||
# Parameters contain data that will directly be sent as parameters to DefectDojo's import/reimport endpoints. | ||
# For example: commit tag, version, push_to_jira, etc. | ||
# See https://demo.defectdojo.org/api/v2/doc/ for a list of possibilities | ||
# The minimum set of data is whatever is needed to identify which engagement/test needs to be chosen. | ||
# If neither a test ID (`test` parameter), nor product_name and engagement_name were provided, sane default will be attempted: | ||
# - product_name chosen from either application.productName or application.shortName | ||
# - engagement_name: "RapiDAST" [this way the same engagement will always be chosen, regardless of the scanner] | ||
parameters: | ||
product_name: "My Product" | ||
engagement_name: "RapiDAST" | ||
# - or - | ||
#engagement: 3 # engagement ID | ||
# - or - | ||
#test_title: "ZAP" | ||
# - or - | ||
#test: 5 # test ID, that will force "reimport" mode | ||
# additional options, see https://demo.defectdojo.org/api/v2/doc/ for list | ||
auto_create_context: False # Optional. set to True to auto-create engagement (requires product_name and engagement_name) | ||
|
||
|
||
# Other scanners to be defined(TBD) |
Oops, something went wrong.