Authz0:自动化授权测试工具详解

Authz0简介

Authz0是一款由hahwul开发的自动化授权测试工具,核心功能是识别并测试系统中的未授权访问问题。通过基于URLs、角色(Roles)和凭证(Credentials)的自动化测试,Authz0能够帮助开发者快速发现潜在的授权漏洞,提升系统的安全性。

Authz0采用YAML格式的模板来管理URLs和角色信息,这些模板可以自动创建和添加。此外,它还支持基于多种认证头和Cookie的测试。

Authz0功能详解

模板管理

Authz0的模板管理功能是其核心之一。以通过YAML文件定义测试的URLs、角色和凭证信息。这些模板文件可以自动创建和添加。在模板中,可以指定不同的角色和凭证组合,以模拟不同用户的访问权限。

自动化测试

Authz0支持自动化测试,指定模板文件进行测试。测试过程中,Authz0会遍历模板中定义的所有URLs和角色组合,访问这些URL,并记录访问结果。

结果输出与报告

测试完成后,Authz0会生成详细的测试结果报告。报告中列出了所有测试的URLs、角色组合、访问结果以及可能的授权漏洞。

Authz0使用方法

安装Authz0

通过Go语言工具链进行安装:

go install github.com/hahwul/authz0@latest

通过Homebrew进行安装:

brew install hahwul/tap/authz0

通过Snapcraft进行安装:

snap install authz0

创建模板文件

在使用Authz0进行测试之前,需要先创建模板文件。模板文件采用YAML格式,包含测试的URLs、角色和凭证信息:

name: template name
roles: # roles of this template
- name: role-name1
- name: role-name2
- name: role-name3
urls:
- url: https://authz0.hahwul.com/your-url
  method: GET # Method
  contentType: "" # or json
  body: "" # HTTP Request Body
  allowRole: # Allowed role
  - role-name1  
  - role-name2
  denyRole: [] # Denied role
  alias: "main" # Alias of this URL
asserts: # assertions
- type: success-status
  value: "200,201,202,204"
credentials:
- rolename: User
  headers:
  - 'X-API-Key: 1234'
- rolename: Admin1
  headers:
  - 'X-API-Key: 5555'

在这个示例中,定义了两个URLs(admin和user页面)以及两个角色(admin和user)。每个角色都对应一组凭证(用户名和密码)。

生成模版操作

使用介绍:

Usage:
  authz0 new <filename> [flags]

Flags:
      --assert-fail-regex string       设置失败正则表达式断言
      --assert-fail-size ints          设置失败大小断言(支持重复标志)
      --assert-fail-size-margin int    设置故障大小断言的近似范围
      --assert-fail-status ints        设置失败状态断言(支持重复标志)
      --assert-success-status string   设置成功状态断言
  -h, --help                           帮助
      --include-burp string            包含Burp日志文件(XML)
      --include-har string             包含HAR文件
      --include-roles string           包含文件中的角色
      --include-urls string            包含文件中的URL
      --include-zap string             包含ZAP日志文件(HAR)
  -n, --name string                    模板名称

使用示例:

authz0 new admin.yaml -n test-admin --include-urls ./urls.txt --assert-fail-regex "permission denied"

扫描操作

使用介绍:

Usage:
  authz0 scan <filename> [flags]

Flags:
      --concurrency int   要并行测试的URL数量(默认值1)
  -c, --cookie string     测试用例的Cookie值
      --delay int         HTTP请求的延迟秒数
  -f, --format string     结果格式(纯文本、json、markdown)
  -H, --header strings    此测试用例的请求头(支持重复标志)
  -h, --help              帮助
      --no-report         不打印报告(仅日志模式)
  -o, --output string     将结果保存到输出文件
      --proxy string      代理地址
  -r, --rolename string   此测试用例的角色名称
      --timeout int       HTTP请求超时秒数(默认值10)

使用示例:

authz0 scan admin.yaml -r qa -c "auth=37F0B6E4439233442A2C1F8EC5C76E64E3B42A"
authz0 scan admin.yaml -r admin -c "auth=DF0B66038B0A4C3525CBAEF5BF732ABCAFF9EF"
authz0 scan admin.yaml -r superadmin -H "X-Admin-Key: 120439124" -H "X-API-Key: 124124"

修改模版操作

setRole

使用介绍:

Usage:
  authz0 setRole <filename> [flags]

Flags:
  -h, --help          帮助
  -n, --name string   角色名称

setUrl

使用介绍:

Usage:
  authz0 setUrl <filename> [flags]

Flags:
  -a, --alias string        别名
      --allowRole strings   允许角色名称
  -d, --body string         请求数据
      --denyRole strings    拒绝角色名称
  -h, --help                帮助
  -X, --method string       请求方法(默认“GET”)
  -t, --type string         请求类型[form,json](默认“form”)
  -u, --url string          请求URL

setCred

使用介绍:

Usage:
  authz0 setCred <filename> [flags]

Flags:
  -H, --headers strings   请求头
  -h, --help              帮助
  -n, --name string       角色名称

使用示例:

authz0 setRole admin.yaml -n superadmin
authz0 setRole admin.yaml -n admin
authz0 setRole admin.yaml -n qa
authz0 setUrl admin.yaml -u https://127.0.0.1/admin -a "main page"
authz0 setUrl admin.yaml -u https://127.0.0.1/admin/api/getUser "get user"
authz0 setUrl admin.yaml -u https://127.0.0.1/admin/api/getAdmin --denyRole qa -a "get admin"
authz0 setUrl admin.yaml -u https://127.0.0.1/admin/api/getSystemKey --allowRole superadmin --denyRole admin --denyRole qa -a "get system key"
authz0 setUrl admin.yaml -u https://127.0.0.1/admin/api/updateKey -X POST -d "key=1234" -a "update key"
authz0 setCred samples/sample.yaml -n "User" -H "X-API-Key: 1234"
authz0 setCred samples/sample.yaml -n "Admin1" -H "X-API-Key: 5555" -H "X-Test-1234: bbbb"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值