如何使用OWASP Zap完成身份登录后执行扫描操作
OWASP ZAP 带身份认证的自动扫描操作指南
针对需要登录后才能扫描的站点,已有合法账号凭据的场景,两种常用实现方式如下:
一、一键自动扫描(GUI 界面操作)
- 打开 ZAP 工具,输入目标站点 URL,选择 自动化扫描 模式
- 在左侧站点树右键点击目标域名,选择「新建上下文」,将目标站点所有路径纳入上下文范围
- 进入上下文配置面板,切换到「用户」板块,新增用户并填入合法的账号、密码凭据
- 切换到「会话管理」板块,根据目标站点的认证类型选择对应配置:表单认证、HTTP 基础认证、JSON API 认证等,填写登录请求提交地址、账号密码对应的请求参数名、登录成功的校验特征(例如响应包含「退出」关键字、响应头携带指定 Cookie)
- 右键点击配置完成的用户,选择「强制用户登录」
- 回到自动化扫描配置页,勾选「基于已配置上下文爬取」选项,点击启动即可自动完成登录后爬取+全量漏洞扫描
注意:登录状态校验特征需要提前抓包确认准确性,否则会出现 ZAP 无法识别登录状态的问题
二、命令行全扫描实现
使用 ZAP 官方提供的全量扫描脚本,通过传参注入身份认证配置即可实现无GUI的自动登录扫描,示例命令如下:
zap-full-scan.py \ -t https://你的目标站点域名.com \ -z "-config context.contextName=自定义上下文名称 \ -config context.includes=https://你的目标站点域名.com.* \ -config users.usersList=扫描用账号 \ -config users.扫描用账号.username=你的合法账号 \ -config users.扫描用账号.password=你的合法密码 \ -config formBasedAuthentication.enabled=true \ -config formBasedAuthentication.loginUrl=https://你的目标站点域名.com/login \ -config formBasedAuthentication.loginRequestData=username={%username%}&password={%password%} \ -config formBasedAuthentication.loggedInIndicator=.*退出.* \ -config formBasedAuthentication.loggedOutIndicator=.*登录.*" \ -r 扫描报告输出路径.html
- 命令中
-z后紧跟的是传递给 ZAP 内核的配置参数,可根据目标站点的实际认证类型做对应替换 - 若目标站点为JWT类API认证,可在
-z的配置项中新增如下参数实现认证头自动注入:-config replacer.full_list.0.enabled=true \ -config replacer.full_list.0.matchtype=REQ_HEADER \ -config replacer.full_list.0.matchstring=Authorization \ -config replacer.full_list.0.replacement=Bearer 你的合法JWT令牌
内容的提问来源于stack exchange,提问作者Mate Mrše
相关产品推荐
相关产品推荐

