ZAP에 곧 추가될 FileUpload AddOn 살펴보기

최근에 ZAP Weekly 버전에 새로운 기능이 추가됬습니다. 바로 FileUpload 라는 AddOn 형태로 추가된 기능인데요, 이 기능은 File upload 관련 취약점을 식별하고 스캐닝할 수 있도록 도와주는 도구입니다.

요즘 ZAP의 기능 추가 속도로 보면 조만간 Release 버전에도 올라올 것 같은데요, 오늘은 미리 이 도구에 대해 간단하게 살펴보도록 할게요!

File Upload

파일 업로드 기능은 클래식한 웹부터 현재 모던 웹까지 두루두루 사용되는 기능입니다. 정말 파일의 업로드를 목적으로 할 수도 있고, 프로필 이미지나 게시글 내 이미지 등 다른 목적을 이유로 파일 업로드 기능이 있는 경우도 많습니다.

어쨌던 파일을 업로드하는 기능은 전통적인 파일 업로드 취약점과 더불어 다른 많은 취약점에 자주 사용되는 부분이라 테스팅하는 입장에서는 꼼꼼히 체크가 필요한 기능입니다. 물론 다른 취약 벡터에 비해 자동화도 어렵고 무작정 스캔하는 형태는 서비스에 문제를 줄 수 있어서 burp(intruder)나 zap(fuzz)의 fuzzer를 사용해서 부분적으로 테스팅하거나 수동으로 분석하는게 일반적입니다.

왜 자동화가 어렵나요?

XSS나 SSRF, SQLi 등은 비교적 테스트하는 과정을 나열했을 때 복잡하지 않습니다. 서비스에 공격코드를 포함한 요청을 전달하고 반응을 살펴 파악하는 것이 전부인데, File upload는 서비스 구현에 따라 이 과정이 많이 달라질 수 있기 떄문입니다. (당장 파일의 경로를 주는가 주지 않는가, 어떻게 주는가 등만 해도 정말 많은 케이스가 발생하죠)

그리고 궁극적으로 File upload는 취약점이 아니라 기능이기 때문에 공격 표면이 굉장히 넓습니다. 위에서 말한 XSS, SSRF, SQLi 부터 우리가 보통 취약점 분석에서 고려할 수 있는 사항들은 거의 포함된다고 보면 됩니다.

그래서 자동화가 어렵습니다.

FileUpload in ZAP

그럼 이번에 ZAP_W에 추가된 기능은 어떤 기능일까요? 뭔가 엄청난 자동화를 해주는 도구는 아니고 File upload의 큰 부분인 2개의 endpoint, 즉 upload url과 retrieval url의 패턴을 정해주면, 이 확장 기능은 파일업로드 구간을 식별하면 지정된 패턴에 따라 자동으로 업로드 테스트를 진행하게 됩니다.

Scan Coverage

FileUpload add-on uploads following types of files:

  • HTML and its variants
  • JSP and its variants
  • JPEG and GIF images
  • EICAR file
  • SVG images

Vulnerabilities covered are:

  • Cross site scripting
  • Remote Code Execution by uploading JSP and its variants
  • No virus scan.

BurpSuite에선?

https://github.com/modzero/mod0BurpUploadScanner

전 요즘 burp를 안써서 지워놨죠 🤣

Conclusion

위에서 이야기했지만 file upload를 스캔한다는 것 자체가 굉장히 복잡하고 어렵기 떄문에 이 확장 기능도 아직 많은 기능이 있진 않습니다. 다만 하나하나 기능이 추가되고 나서 release 버전에 올라올 떄 쯤이면 분명히 분석하는데 큰 도움을 줄 수 있는 도구라고 보이네요.

다만 아직 스캐너에 의존하기엔 너무 복잡한 부분일거라 저는 개인적으론 수동 + fuzzing으로 체크하시는걸 더 추천드려요 :D