我正在试用OWASP/ZAP,看看它是否可以用于我们的项目,但我无法使它工作--我不知道我做错了什么,文档真的没有帮助。我正在尝试的是在windows机器上本地运行在码头容器中的api上运行扫描,所以我运行命令:docker run -v $(pwd):/zap/wrk/:rw -t owasp/zap2docker-stable zap-baseline.py -t http://172.21.0.2:8080/swagger.json -g gen.conf -r testreport.html,ip 172.21.0.2是api容器的IPAddress,甚至用localhost和127.0.0.1来尝试。
但是它只是挂在以下日志消息中:
_XSERVTransmkdir: ERROR: euid != 0,directory /tmp/.X11-unix will not be created.
Feb 14, 2019 1:43:31 PM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.什么都没有发生,我的zap码头容器处于不健康的状态,过了一段时间,它就崩溃了,并以一堆NullPointerExceptions结束。zap是否只适用于linux,在windows机器上运行它时,我特别需要这样做?我不明白为什么这不起作用,即使我特别遵循https://github.com/zaproxy/zaproxy/wiki/Docker中的指导方针
编辑1我最近一次尝试直接针对我的主机ip地址,以及我公开api的端口给了我以下错误:
_XSERVTransmkdir: ERROR: euid != 0,directory /tmp/.X11-unix will not be created.
Feb 14, 2019 2:12:07 PM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
Total of 3 URLs
ERROR Permission denied
2019-02-14 14:12:57,116 I/O error(13): Permission denied
Traceback (most recent call last):
File "/zap/zap-baseline.py", line 347, in main
with open(base_dir + generate, 'w') as f:
IOError: [Errno 13] Permission denied: '/zap/wrk/gen.conf'
Found Java version 1.8.0_151
Available memory: 3928 MB
Setting jvm heap size: -Xmx982m
213 [main] INFO org.zaproxy.zap.DaemonBootstrap发布于 2019-02-14 15:38:37
这里的主要错误是:
IOError: Errno 13被拒绝:'/zap/wrk/gen.conf‘
这意味着脚本不能写入安装在/zap/wrk上的gen.conf文件。
当cwd未挂载时,您有写入访问权吗?
发布于 2019-07-23 15:47:54
当您使用: docker运行码头时,运行-v $(pwd):/zap/wrk/:rw .您正在将docker映像中的/zap/wrk/目录映射到正在运行docker的计算机的当前工作目录(cwd)。
我认为问题在于您的当前用户没有对cwd的写访问权。
试下命令,希望它能解决问题。
$docker run --用户$(id -u):$(id -g) -v $(pwd):/zap/wrk/:rw --rm -t owasp/zap2docker-稳定的zap-baseline.py -t url -g gen.conf -r testreport.html
发布于 2022-01-26 13:37:49
原因是,如果使用-r参数,则zap将尝试在位置/zap/wrk/生成文件report.html。为了使这个工作正常进行,我们必须将一个目录挂载到这个位置/zap/wrk。
但是当您这样做时,zap容器能够在挂载目录上执行写操作是很重要的。
下面是使用gitlab ci yml的工作解决方案。不过,我从使用image: owasp/zap2docker-stable的方法开始,然后必须使用普通的docker命令来执行它。
test_site:
stage: test
image: docker:latest
script:
# The folder zap-reports created locally will be mounted to owasp/zap2docker docker container,
# On execution it will generate the reports in this folder. Current user is passed so reports can be generated"
- mkdir zap-reports
- cd zap-reports
- docker pull owasp/zap2docker-stable:latest || echo
- docker run --name zap-container --rm -v $(pwd):/zap/wrk -u $(id -u ${USER}):$(id -g ${USER}) owasp/zap2docker-stable zap-baseline.py -t "https://example.com" -r report.html
artifacts:
when: always
paths:
- zap-reports
allow_failure: true所以上面的代码中的诀窍是
$(pwd):/zap/wrk中所示-u $(id -u ${USER}):$(id -g ${USER})完成的下面是使用image: owasp/zap2docker-stable的工作代码
test_site:
variables:
GIT_STRATEGY: none
stage: test
image:
name: owasp/zap2docker-stable:latest
before_script:
- mkdir -p /zap/wrk
script:
- zap-baseline.py -t "https://example.com" -g gen.conf -I -r testreport.html
- cp /zap/wrk/testreport.html testreport.html
artifacts:
when: always
paths:
- zap.out
- testreport.htmlhttps://stackoverflow.com/questions/54692312
复制相似问题