Out-of-band Application Security Testing
(OAST) with ZAP
Akshath Kothari
Presented By
What does “Out-of-band” mean, anyway?
Presented By
Traditional Security Testing
Presented By
Where This Model Falls Short
It misses
Presented By
Out-of-band Security Testing
Presented By
The ZAP OAST Add-on
Presented By
Getting the Add-on
Install it from the marketplace.
Presented By
The OAST Tab (1/2)
Presented By
The OAST Tab (2/2)
Presented By
Configuring OAST
Presented By
OAST Services
The OAST add-on currently supports interacting with the following services:
Presented By
Callback Service
A service hosted locally by ZAP on a port different than the proxy port.
Presented By
Callback Service Options
Presented By
Interactsh
Presented By
Interactsh Options
Presented By
BOAST
Presented By
BOAST Options
Presented By
Demo: Finding Discordbot’s address
Presented By
OAST + Active Scan Rules
Currently used by:
Presented By
“Active Scan Service”
Presented By
Using OAST Payloads in Active Scan Rules
XML External Entity Scan Rule Code Walkthrough
Presented By
Presented By
Presented By
Demo: Attacking ZAP with ZAP - Log4Shell in ZAP 2.11.0
Presented By
Scripting with OAST (1/2)
var Control = Java.type("org.parosproxy.paros.control.Control") var extOast = Control.getSingleton().getExtensionLoader().getExtension("ExtensionOast") var interactsh = extOast.getInteractshService() if (!interactsh.isRegistered()) { interactsh.getParam().setServerUrl("https://interact.sh") // interactsh.getParam().setAuthToken("auth token value") interactsh.register() } print(interactsh.getNewPayload()) |
Getting an Interactsh payload in a ZAP Script |
Presented By
Scripting with OAST (2/2)
var Control = Java.type("org.parosproxy.paros.control.Control") var extOast = Control.getSingleton().getExtensionLoader().getExtension("ExtensionOast") var interactsh = extOast.getInteractshService() function requestHandler(request) { print("Source: ", request.getSource()) print("Referer: ", request.getReferer()) print("Handler: ", request.getHandler()) var msg = request.getHistoryReference().getHttpMessage() print("Request Header:\n", msg.getRequestHeader()) print("Request Body:\n", msg.getRequestBody()) print() } interactsh.addOastRequestHandler(requestHandler) print("OAST Request handler registered.") |
Registering an OAST Request Handler |
Presented By
Demo: Sending messages to Discord on OOB Interaction
Presented By
Future OAST Add-on Plans
Presented By
Thank you!
You should now be able to:
Find these slides, demo code, and additional resources at:
Presented By