我正试图在我的GitLab项目中实现自动化。
为了执行安全扫描,我想使用ZAP来检查项目中的所有URL并扫描它们。手动通过所有URL显然是不可能的,所以我正在设法使所有测试尽可能自动化。
问题是:如何访问应用程序中的所有URL?
我认为一种方法可以是将它们作为YML文件中的“变量”传递,并在ZAP命令中使用它们作为参数,如下所示(见下文)。
这是否一个合理的解决办法?是否有其他方法在存储库中执行自动扫描(而不手动传递URL)?谢谢
variables:
OWASP_CONTAINER: $APP_NAME-$BUILD_ID-OWASP
OWASP_IMAGE: "owasp/zap2docker-stable"
OWASP_REPORT_DIR: "owasp-data"
ZAP_API_PORT: "8090"
PENTEST_IP: 'application:8080'
run penetration tests:
stage: pen-tests
image: docker:stable
- docker exec $OWASP_CONTAINER zap-cli -v -p $ZAP_API_PORT active-scan http://$PENTEST_IP/html 发布于 2020-10-09 14:58:43
您需要打开一个新的功能标志(FF_NETWORK_PER_BUILD),以便在每次构建时启用网络。然后,服务也可以相互访问(从GitLab运行程序12.9起就可以使用)。有关更多信息,请参见:https://docs.gitlab.com/runner/executors/docker.html#networking
GitLab CI中owasp作业的工作示例:
owasp-zap:
variables:
FF_NETWORK_PER_BUILD: 1
image: maven
services:
- selenium/standalone-chrome
- name: owasp/zap2docker-weekly
entrypoint: ['zap.sh', '-daemon', '-host', '0.0.0.0', '-port', '8080',
'-config', 'api.addrs.addr.name=.*', '-config', 'api.addrs.addr.regex=true', '-config', 'api.key=1234567890']
script:
- sleep 5
- mvn clean test -Dbrowser=chrome -Dgrid_url=http://selenium-standalone-chrome:4444/wd/hub -Dproxy=http://owasp-zap2docker-weekly:8080
- curl http://owasp-zap2docker-weekly:8080/OTHER/core/other/htmlreport/?apikey=1234567890 -o report.html
artifacts:
paths:
- report.htmlhttps://stackoverflow.com/questions/59300210
复制相似问题