Ansible module for OWASP ZAP using Python API to scan web targets for security issues
A simple module to enable using Ansible to initiate web security scans using OWASP ZAP.
This module enables you to interact with an already setup and configured ZAP instance to execute passive active scans against web targets for security tests.
The module works with the OWASP ZAP API available when we have an existing running ZAP instance. This is similar to the ZAP Baseline Scan in the default settings.
docker run --name zap -u zap -p 8080:8080 -i owasp/zap2docker-stable zap.sh -daemon -host 0.0.0.0 -port 8080 -config api.disablekey=true -config api.addrs.addr.name=.* -config api.addrs.addr.regex=true
For testing, API key is disabled. Please change as per your requirement
Ensure that the OWASP ZAP Python client is installed
pip install python-owasp-zap-v2.4
Assuming that ansible is already setup the following command will work if you don't want to copy the module to a path which is ANSIBLE_LIBRARY
$ ANSIBLE_LIBRARY=. ansible -m owasp_zap_test_module localhost -a "host=http://ZAP-Proxy:PORT target=http://target-webapp"
If you want to specify an API KEY
$ ANSIBLE_LIBRARY=. ansible -m owasp_zap_test_module localhost -a "host=http://ZAP-Proxy:PORT target=http://target-webapp apikey=SECRET-VALUE"
If you want to run an Active scan
  $ ANSIBLE_LIBRARY=. ansible -m owasp_zap_test_module localhost -a "host=http://ZAP-Proxy:PORT target=http://target-webapp scantype=active"
A sample playbook you can use
    - name: Testing OWASP ZAP Test Module
      connection: local
      hosts: localhost
      tasks:
      - name: Scan a website
        owasp_zap_test_module:
          host: "http://ZAP-Proxy:PORT"
          target: "http://target-webapp"
          scantype: passive
        register: output
    - name: Print version
      debug:
        msg: "Scan Report: {{ output }}"