Tenable

Tenable WAS - Initiate Project Scope Scan [Step 1 of 5]

The purpose of this example is to initiate scheduling a Web Application scan of the assets on the project scope in Tenable when a user clicks on an Action in AttackForge.
This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.
Initial Set Up
Action:
Entities: Projects and Project
Secrets:
af_hostname - your AttackForge tenant hostname e.g. demo.attackforge.com
af_key - your AttackForge user API key
was_scan_flow_trigger_id - the Trigger URL for Tenable WAS - Launch Scan [Step 2 of 5] Flow
logging_level - set to "debug" for additional logging
Action 1 - Determine Action Entity
Script:
Action 2 - Get Project(s)
Method: GET
URL: https://{{af_hostname}}/api/ss/project/{{project_id}}
Headers:
Key = X-SSAPI-KEY; Type = Secret; Value = af_key
Key = Content-Type; Type = Value; Value = application/json
Request Script:
Response Script:
Action 3 - Trigger WAS Scan Flow
Method: POST
URL: https://{{af_hostname}}/api/flows/{{trigger_id}}
Headers:
Key = Content-Type; Type = Value; Value = application/json
Request Script:
Response Script:
Tenable VM - Initiate Project Scope Scan [Step 1 of 5]

The purpose of this example is to initiate scheduling a VM scan of the assets on the project scope in Tenable when a user clicks on an Action in AttackForge.
This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.
Initial Set Up
Action:
Entities: Projects and Project
Secrets:
af_hostname - your AttackForge tenant hostname e.g. demo.attackforge.com
af_key - your AttackForge user API key
vm_scan_flow_trigger_id - the Trigger URL for Tenable VM - Launch Scan [Step 2 of 5] Flow
logging_level - set to "debug" for additional logging
Action 1 - Determine Action Entity
Script:
Action 2 - Get Project(s)
Method: GET
URL: https://{{af_hostname}}/api/ss/project/{{project_id}}
Headers:
Key = X-SSAPI-KEY; Type = Secret; Value = af_key
Key = Content-Type; Type = Value; Value = application/json
Request Script:
Response Script:
Action 3 - Trigger VM Scan Flow
Method: POST
URL: https://{{af_hostname}}/api/flows/{{trigger_id}}
Headers:
Key = Content-Type; Type = Value; Value = application/json
Request Script:
Response Script:
Tenable WAS - Launch Scan [Step 2 of 5]

The purpose of this example is to create and launch a Web Application scan in Tenable.
This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.
Initial Set Up
HTTP Trigger:
Method: POST
Secrets:
af_hostname - your AttackForge tenant hostname e.g. demo.attackforge.com
af_key - your AttackForge user API key
owner_id - the Tenable ID of the owner of the scanner.
tenable_template_id - the UUID of the Tenable-provided template resource.
user_template_id - the UUID of the Tenable user-defined template.
tenable_auth - your Tenable API Key
logging_level - set to "debug" for additional logging
Action 1 - Create WAS Scan Configuration
Method: POST
URL: https://cloud.tenable.com/was/v2/configs
Headers:
Key = X-ApiKeys; Type = Secret; Value = tenable_auth
Key = Content-Type; Type = Value; Value = application/json
Key = Accept; Type = Value; Value = application/json
Request Script:
Response Script:
Action 2 - Launch WAS Scan
Method: POST
URL: https://cloud.tenable.com/was/v2/configs/{config_id}/scans
Headers:
Key = X-ApiKeys; Type = Secret; Value = tenable_auth
Key = Content-Type; Type = Value; Value = application/json
Key = Accept; Type = Value; Value = application/json
Request Script:
Response Script:
Action 3 - Update Project with Scan Details
Method: PUT
URL: https://{{af_hostname}}/api/ss/project/{id}
Headers:
Key = Content-Type; Type = Value; Value = application/json
Key = X-SSAPI-KEY; Type = Secret; Value = af_key
Request Script:
Response Script:
Tenable VM - Launch Scan [Step 2 of 5]

The purpose of this example is to create and launch a VM scan in Tenable.
This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.
Initial Set Up
HTTP Trigger:
Method: POST
Secrets:
af_hostname - your AttackForge tenant hostname e.g. demo.attackforge.com
af_key - your AttackForge user API key
scan_name_prefix - the prefix for the scan name in Tenable e.g. AttackForge Project Scan
vm_network_scan_template_uuid - the UUID for the Tenable VM scan template
tenable_auth - your Tenable API Key
logging_level - set to "debug" for additional logging
Action 1 - Create VM Scan Configuration
Method: POST
URL: https://cloud.tenable.com/scans
Headers:
Key = X-ApiKeys; Type = Secret; Value = tenable_auth
Key = Content-Type; Type = Value; Value = application/json
Key = Accept; Type = Value; Value = application/json
Request Script:
Response Script:
Action 2 - Launch VM Scan
Method: POST
URL: https://cloud.tenable.com/scans/{scan_id}/launch
Headers:
Key = X-ApiKeys; Type = Secret; Value = tenable_auth
Key = Content-Type; Type = Value; Value = application/json
Key = Accept; Type = Value; Value = application/json
Request Script:
Response Script:
Action 3 - Update Project with Scan Details
Method: PUT
URL: https://{{af_hostname}}/api/ss/project/{id}
Headers:
Key = Content-Type; Type = Value; Value = application/json
Key = X-SSAPI-KEY; Type = Secret; Value = af_key
Request Script:
Response Script:
Tenable VM & WAS - Find Active Scans to Poll Status [Step 3 of 5]

The purpose of this example is to poll the scan status for any active Tenable scans, and for any completed scans - trigger a download of the vulnerabilities.
This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.
Initial Set Up
Schedule:
Every hour
CRON String: 0 0/1 * * *
Secrets:
af_hostname - your AttackForge tenant hostname e.g. demo.attackforge.com
af_key - your AttackForge user API key
vm_poll_flow_trigger_id - the Trigger URL for Tenable VM - Poll Scan Status [Step 4 of 5] Flow
was_poll_flow_trigger_id - the Trigger URL for Tenable WAS - Poll Scan Status [Step 4 of 5] Flow
tenable_auth - your Tenable API Key
logging_level - set to "debug" for additional logging
Action 1 - Get Tenable VM & WAS Scan Projects
Method: GET
URL: https://{{af_hostname}}/api/ss/projects?order=created:desc&limit=500
Headers:
Key = Content-Type; Type = Value; Value = application/json
Key = X-SSAPI-KEY; Type = Secret; Value = af_key
Request Script:
Response Script:
Action 2 - Tenable VM - Get Scan Status + Trigger Download
Method: POST
URL: https://{{af_hostname}}/api/flows/{{vm_poll_flow_trigger_id}}
Headers:
Key = Content-Type; Type = Value; Value = application/json
Request Script:
Response Script:
Action 3 - Tenable WAS - Get Scan Status + Trigger Download
Method: PUT
URL: https://{{af_hostname}}/api/flows/{{was_poll_flow_trigger_id}}
Headers:
Key = Content-Type; Type = Value; Value = application/json
Request Script:
Response Script:
Tenable WAS - Poll Scan Status [Step 4 of 5]

The purpose of this example is to export the results of a Web Application scan in Tenable.
This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.
Initial Set Up
HTTP Trigger:
Method: POST
Secrets:
af_hostname - your AttackForge tenant hostname e.g. demo.attackforge.com
apikey - your AttackForge user API key
current_flow_id - the Id for this Flow in AttackForge once it's created (used for error reporting in email)
admin_user_id - the Id for the user in AttackForge who receives error emails (used for error reporting)
import_vuln_flow_trigger_id - the Trigger URL for Tenable VM & WAS - Import Vulnerabilities [Step 5 of 5] Flow
tenable_auth - your Tenable API Key
logging_level - set to "debug" for additional logging
Action 1 - Poll Scan Status
Method: GET
URL: https://cloud.tenable.com/was/v2/scans/{scan_id}
Headers:
Key = X-ApiKeys; Type = Secret; Value = tenable_auth
Key = Accept; Type = Value; Value = application/json
Request Script:
Response Script:
Action 2 - Search Scans (multi-target only)
Method: POST
URL: https://cloud.tenable.com/was/v2/configs/{config_id}/scans/search
Headers:
Key = X-ApiKeys; Type = Secret; Value = tenable_auth
Key = Content-Type; Type = Value; Value = application/json
Key = Accept; Type = Value; Value = application/json
Request Script:
Response Script:
Action 3 - Export Scan Report
Method: GET
URL: https://cloud.tenable.com/was/v2/scans/{scan_id}/report
Headers:
Key = X-ApiKeys; Type = Secret; Value = tenable_auth
Key = Content-Type; Type = Value; Value = application/json
Key = Accept; Type = Value; Value = application/json
Request Script:
Response Script:
Action 4 - Import Scan Report Result
Method: POST
URL: https://{{af_hostname}}/api/flows/{{import_vuln_flow_trigger_id}}
Headers:
Key = Content-Type; Type = Value; Value = application/json
Request Script:
Response Script:
Action 5 - Update Project to Remove Table Scan Details
Method: PUT
URL: https://{{af_hostname}}/api/ss/project/{id}
Headers:
Key = Content-Type; Type = Value; Value = application/json
Key = X-SSAPI-KEY; Type = Secret; Value = apikey
Request Script:
Response Script:
Action 6 - Send Email Report on Aborted Scan
Method: POST
URL: https://{{af_hostname}}/api/ss/email
Headers:
Key = Content-Type; Type = Value; Value = application/json
Key = X-SSAPI-KEY; Type = Secret; Value = apikey
Request Script:
Response Script:
Tenable VM - Poll Scan Status [Step 4 of 5]

The purpose of this example is to export the results of a VM scan in Tenable.
This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.
Initial Set Up
HTTP Trigger:
Method: POST
Secrets:
af_hostname - your AttackForge tenant hostname e.g. demo.attackforge.com
af_key - your AttackForge user API key
import_vuln_flow_trigger_id - the Trigger URL for Tenable VM & WAS - Import Vulnerabilities [Step 5 of 5] Flow
tenable_auth - your Tenable API Key
logging_level - set to "debug" for additional logging
Action 1 - Get Latest Scan Status
Method: GET
URL: https://cloud.tenable.com/scans/{scan_id/latest-status
Headers:
Key = X-ApiKeys; Type = Secret; Value = tenable_auth
Key = Accept; Type = Value; Value = application/json
Request Script:
Response Script:
Action 2 - Export Scan
Method: POST
URL: https://cloud.tenable.com/was/v2/configs/{config_id}/scans/search
Headers:
Key = X-ApiKeys; Type = Secret; Value = tenable_auth
Key = Content-Type; Type = Value; Value = application/json
Key = Accept; Type = Value; Value = application/json
Request Script:
Response Script:
Action 3 - Download Exported Scan
Method: GET
URL: https://cloud.tenable.com/scans/{scan_id}/export/{file_id}/download
Headers:
Key = X-ApiKeys; Type = Secret; Value = tenable_auth
Key = Content-Type; Type = Value; Value = application/json
Key = Accept; Type = Value; Value = application/octet-stream
Request Script:
Response Script:
Action 4 - CSV to JSON
Method: POST
URL: https://{{af_hostname}}/api/ss/utils/parse-csv
Headers:
Key = Content-Type; Type = Value; Value = application/json
Key = X-SSAPI-KEY; Type = Secret; Value = af_key
Request Script:
Response Script:
Action 5 - Import Scan Results
Method: POST
URL: https://{{af_hostname}}/api/flows/{{import_vuln_flow_trigger_id}}
Headers:
Key = Content-Type; Type = Value; Value = application/json
Request Script:
Response Script:
Action 6 - Update Project to Remove Tenable Details
Method: PUT
URL: https://{{af_hostname}}/api/ss/project/{id}
Headers:
Key = Content-Type; Type = Value; Value = application/json
Key = X-SSAPI-KEY; Type = Secret; Value = apikey
Request Script:
Response Script:
Tenable VM & WAS - Import Vulnerabilities [Step 5 of 5]

The purpose of this example is to import vulnerabilities from a Tenable Web Application or VM scan.
This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.
Initial Set Up
HTTP Trigger:
Method: POST
Secrets:
af_hostname - your AttackForge tenant hostname e.g. demo.attackforge.com
af_key - your AttackForge user API key
logging_level - set to "debug" for additional logging
Action 1 - Validate, Detect, Transform & Group Findings
Script:
Action 2 - Import Vulnerabilities
Method: POST
URL: https://{{af_hostname}}/api/ss/vulnerability
Headers:
Key = Content-Type; Type = Value; Value = application/json
Key = X-SSAPI-KEY; Type = Secret; Value = af_key
Request Script:
Response Script:
Last updated