OWASP/ZAP 尝试扫描时悬空
OWASP/ZAP dangling when trying to scan
我正在尝试 OWASP/ZAP 看看它是否可以用于我们的项目,但我无法让它工作我不知道我做错了什么而且文档真的没有帮助.我正在尝试的是 运行 扫描我的 api 运行ning 在我 windows 机器本地的 docker 容器中所以我 运行命令:
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 容器的 IP 地址,甚至尝试使用 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 run
INFO: Created user preferences directory.
没有任何反应,我的 zap docker 容器处于不健康状态,一段时间后它崩溃并以一堆 NullPointerExceptions 结束。 zap docker 是否仅适用于 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 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
这里的关键错误是:
IOError: [Errno 13] Permission denied: '/zap/wrk/gen.conf'
这意味着脚本无法写入您安装在 /zap/wrk
上的 gen.conf 文件
当 cwd 未挂载时,您是否有写入权限?
当您 运行 docker 使用:docker 运行 -v $(pwd):/zap/wrk/:rw ...
您正在将 docker 图像中的 /zap/wrk/ 目录映射到您 运行ning docker.[=11= 所在机器的当前工作目录 (cwd) ]
我认为问题在于您当前的用户没有对 cwd 的写入权限。
尝试以下命令,希望它能解决问题。
$docker 运行 --user $(id -u):$(id -g) -v $(pwd):/zap/wrk/:rw --rm -t owasp/zap2docker-stable zap-baseline.py -t https://your_url -g gen.conf -r testreport.html
原因是,如果您使用 -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
所以上面代码中的技巧是
- 将本地目录zap-reports挂载到/zap/wrk,如
$(pwd):/zap/wrk
- 将主机上的当前用户和组传递给 docker 容器,以便进程使用相同的用户/组。这允许在从本地主机安装的目录上编写报告。这是由
-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.html
我正在尝试 OWASP/ZAP 看看它是否可以用于我们的项目,但我无法让它工作我不知道我做错了什么而且文档真的没有帮助.我正在尝试的是 运行 扫描我的 api 运行ning 在我 windows 机器本地的 docker 容器中所以我 运行命令:
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 容器的 IP 地址,甚至尝试使用 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 run
INFO: Created user preferences directory.
没有任何反应,我的 zap docker 容器处于不健康状态,一段时间后它崩溃并以一堆 NullPointerExceptions 结束。 zap docker 是否仅适用于 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 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
这里的关键错误是:
IOError: [Errno 13] Permission denied: '/zap/wrk/gen.conf'
这意味着脚本无法写入您安装在 /zap/wrk
上的 gen.conf 文件当 cwd 未挂载时,您是否有写入权限?
当您 运行 docker 使用:docker 运行 -v $(pwd):/zap/wrk/:rw ... 您正在将 docker 图像中的 /zap/wrk/ 目录映射到您 运行ning docker.[=11= 所在机器的当前工作目录 (cwd) ]
我认为问题在于您当前的用户没有对 cwd 的写入权限。
尝试以下命令,希望它能解决问题。
$docker 运行 --user $(id -u):$(id -g) -v $(pwd):/zap/wrk/:rw --rm -t owasp/zap2docker-stable zap-baseline.py -t https://your_url -g gen.conf -r testreport.html
原因是,如果您使用 -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
所以上面代码中的技巧是
- 将本地目录zap-reports挂载到/zap/wrk,如
$(pwd):/zap/wrk
- 将主机上的当前用户和组传递给 docker 容器,以便进程使用相同的用户/组。这允许在从本地主机安装的目录上编写报告。这是由
-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.html