2017-06-05 156 views
-2

我想先说说我喜欢这个工具,如果你熟悉Zap,那么API是以非常容易遵循的方式编写的。我遇到的唯一困难是我无法在python API上找到很多文档,所以我已经离开了源代码并验证它如何对付应用程序。我已经能够扫描并设置上下文,但我似乎无法正确调用身份验证模块中的任何内容。我相信,我的一个问题是,在调用函数时,我不完全确定要使用的确切变量或它们各自的格式。下面是我一起报废的一些示例代码。以下认证功能的每一次使用都使我失败。即使有人要看这个,并告诉我去哪里或自己解决这个问题,我会非常感激。OWASP zap python api身份验证

from zapv2 import ZAPv2 

context = 'new_attack' 

authmethodname = 'formBasedAuthentication' 

authmethodconfigparams = "".join('loginUrl=someloginpage' 'loginRequestData=username%3D%7B%25user1%25%7D%26' 'password%3D%7B%25password%25%7D') 

target = 'some target but I cant put more than 2 links in this question' 

apikey = 'password' 

zap = ZAPv2(apikey=apikey) 

print zap.context.new_context('new_attack') 

print zap.context.include_in_context(context, 'https://192.168.0.1.*') 

print zap.context.context(context) 

#anything below here gives me 'Missing Params' an error from zap 
print zap.authentication.set_logged_in_indicator(context, loggedinindicatorregex='Logged in') 

print zap.authentication.set_logged_out_indicator(context, 'Sorry, the username or password you entered is incorrect') 


print zap.authentication.set_authentication_method(context, authmethodname, authmethodconfigparams) 
+0

也感谢编辑建议。我第一次在这里问一个问题。 – jeannotteb

回答

0

该项目的开发人员能够回答我的问题,所以我想我也会把它放在这里。实质上,身份验证功能将contextid和userid用作参数,并且我传递了上下文名称和用户名。我还从源代码中解读了一些其他错误。希望这可以帮助其他人开始使用API​​,因为没有太多的文档。来自github页面的 zaproxy;用户名thc202 - “

from zapv2 import ZAPv2 
context = 'new_attack' 
authmethodname = 'formBasedAuthentication' 
authmethodconfigparams = "".join('loginUrl=https://192.168.0.1/dologin.html' '&loginRequestData=username%3D%7B%25username%25%7D%26' 'password%3D%7B%25password%25%7D') 
target = 'https://192.168.0.1' 
apikey = 'password' 
zap = ZAPv2(proxies={'http': 'http://127.0.0.1:8119', 'https': 'http://127.0.0.1:8119'}, apikey=apikey) 

contextid = zap.context.new_context(context) 
print contextid 
print zap.context.include_in_context(context, 'https://192.168.0.1.*') 

print zap.context.context(context) 

print zap.authentication.set_authentication_method(contextid, authmethodname, authmethodconfigparams) 
# The indicators should be set after setting the authentication method. 
print zap.authentication.set_logged_in_indicator(contextid, loggedinindicatorregex='Logged in') 
print zap.authentication.set_logged_out_indicator(contextid, 'Sorry, the username or password you entered is incorrect') 

userid = zap.users.new_user(contextid, 'User 1') 
print userid 
print zap.users.set_authentication_credentials(contextid, userid, 'username=MyUserName&password=MySecretPassword') 
print zap.users.set_user_enabled(contextid, userid, True) 

print zap.spider.scan_as_user(contextid, userid, target)