如何使用ZAP扫描HTTP安全标头?

时间:2018-09-25 02:37:16

标签: http-headers content-security-policy zap

我们想将python / ZAPv2集成到我们的SDLC中,有时我们只想使用ZAP来验证安全标头,例如Set-Cookie中的HttpOnly标志,CSP标头等...

我在Google上搜索了很多,发现ZAP策略可能对我们有帮助...但是关于如何自定义zap策略以及如何调用API来调用ZAPv2库中的自定义策略的文档非常有限

是否有任何文档/建议/想法可以帮助我...?谢谢!

1 个答案:

答案 0 :(得分:1)

安全标头检查通常被实现为被动扫描规则(因此,如果您搜寻或代理流量,则可以获取它们的结果)。以下是有关以编程方式设置被动扫描“策略”的一些信息。

从这里重用我的答案:Export/Import OWASP ZAP Passive Scan Rules


已打开一个现有凭单,以在单个策略类型界面:https://github.com/zaproxy/zaproxy/issues/3870中统一主动/被动扫描处理。 如果您真的对此感兴趣,可以在BountySource(https://www.bountysource.com/issues/49047644-improved-active-passive-rules-management)上提供支持,看看是否引起关注/采取行动。

您可以使用的另一个选项是创建一个快速脚本,该脚本使用ZAP的Web API来应用“被动扫描”规则“策略”。相关端点包括:pscan / view / scanners /,pscan / action / disableAllScanners /,pscan / action / enableScanners /。这是一个python示例:

from zapv2 import ZAPv2 as zap
import time

apikey = "apikey12345" #Your apikey
z = zap(apikey=apikey, proxies={"http": "http://127.0.0.1:8080", "https": "http://127.0.0.1:8080"})
time.sleep(2) #Might need to be longer depending on your machine and if ZAP is already running or not

print "Disabling all passive scan rules.."

z.pscan.disable_all_scanners()

scanners = z.pscan.scanners

for scanner in scanners:
    print scanner.get("id") + " : " + scanner.get("enabled") + " : " + scanner.get("name")

to_enable = "10020,10021,10062" #Customize as you see fit
print "\nEnabling specific passive scan rules..[" + to_enable +"]"

z.pscan.enable_scanners(to_enable)

print "\nListing enabled passive scan rules.."

scanners2 = z.pscan.scanners

for scanner in scanners2:
    if (scanner.get("enabled") == "true"):
        print scanner.get("id") + " : " + scanner.get("enabled") + " : " + scanner.get("name")

最后,您可以在一个系统上配置ZAP,然后根据需要将config.xml复制到其他系统。