ZAP 2.10 Review ⚡️

2020 마지막이 얼마 남지 않은 오늘 드디어 ZAP 2.10.0이 릴리즈 되었습니다. 그동안 dark mode 등을 이유로 weekly 버전을 사용했었는데, 이제는 공식 버전으로 넘어가도 좋을 것 같네요.

오늘은 가볍게 2.10.0 의 릴리즈 노트를 살펴보고, 몇가지 깨알같은 기능을 소개할까 합니다.

TL;DR

  • 기능이 많이 추가됬어요. 자세한건 릴리즈 노트를 보세요
  • 릴리즈 노트에 없는 기능이 있어요. 제 글에 대충 적혀있으니 참고하세요
  • 이번 업데이트도 혜자이니 빠르게 업데이트 가시죠.

ZAP 2.10.0 Released Note

Escape Java 8 verison, Go 11!

ZAP은 구형 자바 버전을 유지해야하는 이슈가 있었습니다. 이는 ZAP쪽에서도 약 10년만에 수정되는 이슈이고 이 문제로 ZAP은 시스템의 자바를 사용하는 것이 아닌 ZAP 내부에 Java SDK를 가지고 실행하는 형태로 동작했었습니다. 물론 이로인해서 시스템 자바가 문제가 생긴 경우에도 지장받지 않고 실행할 순 있었습니다. 다만 이제는 자바 8 버전의 의존성을 벗어난 것이기 때문에 레거시 자바의 문제를 피해갈 수 있는 기회가 되었네요 :D

Custom pages

Custom Pages can be defined on a per context basis - these allow ZAP to identify various non-standard error handling conditions such as custom error pages and handle them more effectively.

이제부터 Custom page를 Context(Burp에선 Scope) 별로 정의하여 사용할 수 있습니다.

이것도 활용할 수 있는 부분이 많은 기능인데요, 서비스 별로 200 OK 나오는 Custom Error 페이지가 존재할 수 있습니다. 이러한 페이지들을 미리 정의해서 Fuzzing이나 테스팅 단계에서 걸러낼 수 있습니다.

Authentication Polling

The concept of Authentication Verification Strategies has been introduced which allows ZAP to handle a wider range of authentication mechanisms including the option to poll a specified page for the authentication status of a user.

Authentication Verification Strategies 개념을 도입했다고 합니다. 지정된 페이지를 Polling 하는 방식으로 인증 상태를 체크하는 방법입니다.

Site Tree Control

Scripts and add-ons now have full access to how nodes are represented in the Sites Tree. Both Input Vector Scripts and add-ons which include implementations of the Variant class can change both the tree structure and names used for new nodes.

중요한 업데이트 부분 중 하나 인데요, 2.10 부터 Add-On 과 Scripts에서 Site tree를 제어할 수 있어집니다. 이는 확장 기능들이 조금 더 유연하게 개발될 수 있도록 유도된 것 같네요. 어쩄던 Sites tree를 제어하면 이미 수집된 Endpoint URL을 얻거나 추가/수정 하는 방식으로도 사용할 수 있어서 개인적으로 맘에드는 부분입니다.

Dynamic Look and Feel (Dark mode)

The Desktop UI includes a new set of open source Look and Feel’s c/o FlatLaf including 2 Dark Mode options. You can also dynamically switch the Look and Feel via a button on the Top Level Toolbar.

제가 ZAP을 강제로 Weekly 버전을 사용하게 만든 기능입니다. 초기에는 다크모드 지원만 있었지만 이후에 동적으로 LaF를 변경할 수 있도록 추가되었습니다.

Authentication headers via env vars

A new set of environmental variables are available which allow you to easily add an authentication header to all of the requests that are proxied through ZAP or initiated by the ZAP tools, including the spiders and active scanner. These are documented on the Authentication page.

기존에는 Custom 헤더 등을 추가하기 위해선 replacer와 같은 확장을 이용해서 변경했어야 합니다. 이러한 과정이 Env Vars라는 파라미터에 정의하여 모든 요청에 의도한 헤더를 붙여주는 등의 액션이 가능해집니다.

SOCKS Proxy Config

It is now possible to dynamically configure the outgoing SOCKS proxy in the Options’ Connection screen. By default the SOCKS proxy configuration applies to all connections made by ZAP.

SOCKS Proxy를 ZAP에서 제어할 수 있게 됩니다.

Cached scripts

The following script types are now cached between invocations reducing the time it takes to reuse them:

몇몇 유형의 스크립트들이 호출간에 캐시되어서 재사용에 걸리는 시간을 단축한다고 합니다. 우리가 뭔가 더 손댈 부분은 없고 체감적으로 속도가 조금 더 빨라지겠네요.

and New/Updated Add-Ons, APIs

일부 alpha/beta에 있던 Add-On들이 Release로 넘어왔습니다. API도 추가된게 있는 것 같구요. 자세한건 Release 노트를 참고해주세요.

알려지지 않은 업데이트 내용

Content-Length 강제 수정 가능(for HTTP Request Smuggling)

이제 Manual request에서 Content-Length를 제어할 수 있습니다. 기존에는 ZAP이 이 기능을 지원하지 않아서 HTTP Request Smuggling을 테스팅할 때 조금 불편한 부분이 있었지요. (TL:CE의 경우는 무조건 Burp에서만 테스팅할 수 밖에 없었습니다)

다만 Requester 같은 확장 기능쪽에서는 해당 버튼이 노출되지 않는 것으로 보아 해당 확장 기능에서 업데이트를 해줘야 할 것 같네요.

Mac에서 전체화면을 지원함

이제 됩니다. (2.9때는 안되서 고생..)

References