All Projects → Soluto → webdriverio-zap-proxy

Soluto / webdriverio-zap-proxy

Licence: MIT license
Demo - how to easily build security testing for Web App, using Zap and Glue

Programming Languages

javascript
184084 projects - #8 most used programming language
shell
77523 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to webdriverio-zap-proxy

demo-webdriverio-cucumber
E2E Tests with WebdriverIO and Cucumber
Stars: ✭ 28 (-51.72%)
Mutual labels:  selenium, webdriverio
juice-shop-ctf
Capture-the-Flag (CTF) environment setup tools for OWASP Juice Shop supporting CTFd, FBCTF and RootTheBox
Stars: ✭ 287 (+394.83%)
Mutual labels:  owasp, owasp-juice-shop
zap-sonar-plugin
Integrates OWASP Zed Attack Proxy reports into SonarQube
Stars: ✭ 66 (+13.79%)
Mutual labels:  owasp, owasp-zap
Zaproxy
The OWASP ZAP core project
Stars: ✭ 9,078 (+15551.72%)
Mutual labels:  owasp, owasp-zap
frontend testing
Repository containing sample code used in a Frontend Testing workshop
Stars: ✭ 14 (-75.86%)
Mutual labels:  selenium, webdriverio
throughout
🎪 End-to-end testing made simple (using Jest and Puppeteer)
Stars: ✭ 16 (-72.41%)
Mutual labels:  selenium
facebook-data-extraction
Experiences in extracting data from Facebook with these 3 methods: Facebook Graph API, Automation tools, DevTools Console
Stars: ✭ 81 (+39.66%)
Mutual labels:  selenium
google-image-downloader
A script to download images from images.google.com
Stars: ✭ 28 (-51.72%)
Mutual labels:  selenium
automation-for-humans
Converts English statements to automation.
Stars: ✭ 67 (+15.52%)
Mutual labels:  selenium
Spider
Spider项目将会不断更新本人学习使用过的爬虫方法!!!
Stars: ✭ 16 (-72.41%)
Mutual labels:  selenium
selenium-client
A PHP Selenium client
Stars: ✭ 31 (-46.55%)
Mutual labels:  selenium
ui-testing-book
Content for "The Web App Testing Guidebook"
Stars: ✭ 26 (-55.17%)
Mutual labels:  webdriverio
assimilation-official
This is the official main repository for the Assimilation project
Stars: ✭ 47 (-18.97%)
Mutual labels:  owasp
aws-firewall-factory
Deploy, update, and stage your WAFs while managing them centrally via FMS.
Stars: ✭ 72 (+24.14%)
Mutual labels:  owasp
vaccipy
Automatische Impfterminbuchung für www.impfterminservice.de
Stars: ✭ 548 (+844.83%)
Mutual labels:  selenium
TwitPy
🕊TwitPy - Follow/Unfollow Automation
Stars: ✭ 92 (+58.62%)
Mutual labels:  selenium
TikTok
Download public videos on TikTok using Python with Selenium
Stars: ✭ 37 (-36.21%)
Mutual labels:  selenium
selenium-java
This is the sample repository that we use in the Complete Selenium WebDriver with Java Bootcamp
Stars: ✭ 45 (-22.41%)
Mutual labels:  selenium
weibo topic
微博话题关键词,个人微博采集, 微博博文一键删除 selenium获取cookie,requests处理
Stars: ✭ 28 (-51.72%)
Mutual labels:  selenium
bWAPP
bWAPP latest modified for PHP7
Stars: ✭ 30 (-48.28%)
Mutual labels:  owasp

Description

An example project of integrating zap into existing automation tests that are developed with Webdriver.io framework. Zap is a great tool and can be used to spider your webapp and report security vulnerabilities it found. By integrating it into the automation test, you gain better coverage of your webapp, as every page that is covered with your tests will be also scanned with Zap. I presented this project at a Webinar, you can find the slidedeck here. In this example I used OWASP Juice Shope for demonstration purpose - the test simply try to open one of the pages so we can see Zap alerts. I am also using OWASP Glue to process the alerts found by Zap. I used docker and docker-compose to make this setup easy by using the following services:

To build the tests I've used this guide. Check it out for a complete walk-through on how to proxy you existing tests through Zap, and adding security tests easily.

Running

  • Clone this repo and browse to the checkout folder
  • Run ./scripts/run_tests.sh. This step is running the e2e tests and is passing. Zap will proxy the test and persist the session.
  • Run ./scripts/run_security_tests.sh. This step will query Zap's passive scan results and will output them using Glue.
  • Modify ./glue/juice-shop to ignore specific findings. Take a look on the guide for more details on different ways to ignore findings. Behind the scene ========================= The magic is done by requesting the proxy capability in webdriver.io config (see the whole file under app/wdio.conf.js, I used the basic file from the documentation and changed it a bit):
var proxy = "http://zap:8090";
...
capabilities: [{
        browserName: 'chrome',
        proxy: {
                httpProxy: proxy,
                sslProxy: proxy,
                ftpProxy: proxy,
                proxyType: "MANUAL",
                autodetect: false
            },
        'chrome.switches': [
          '--ignore-certificate-errors'
        ]
    }],

where http://zap:8090 is the Zap container address (see networking documentation).

The test script (app/test.sh) is what actually run Zap. It is installed on the docker image (see the docker file at app/Dockerfile). Currently it contains the following commands:

  • ./wait-for-it.sh zap:8090 -t 40000 wait until zap complete loading
  • npm test to run the test
  • ruby /usr/bin/glue/bin/glue -t zap --zap-host http://zap --zap-port 8090 --zap-passive-mode -f text --exit-on-warn 0 http://juice-shop --finding-file-path /usr/src/wrk/glue.json to process Zap's alert using Glue.

Please notice that you can exclude certain urls from zap alerts by editing glue.json.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].