Get webpage screenshot with gowitness for CICD
What is gowitness
gowitness는 버그바운티 커뮤니티에서 잘 알려진 도구로 대량의 URL을 대상으로 웹 스크린샷을 빠르게 찍을 수 있는 도구입니다.
https://github.com/sensepost/gowitness
저도 예전부터 굉장히 잘 쓰고 있던 도구인데 지금보니 따로 블로그 글로 포스팅한 적이 없는 도구였네요. 아무튼 오늘은 도구에 대한 소개보단 제가 나중에 Pipeline 구성 시 사용하려고 간략하게 메모하는 느낌으로 글 작성하려고 합니다.
golang 기반 도구라 설치는 go get
으로 간단히 가능합니다.
go get -u github.com/sensepost/gowitness
Format of Result
gowitness는 기본적으로 sqlite 를 사용하고 있고, 미리 만들어진 HTML Report 포맷에 맞춰 결과를 보여줍니다.
물론 단순히 결과를 확인하려는 목적이라면 기본적으로 제공되는 Report를 사용하면 되겠지만, 때에 따라서 Pipeline이나 CI/CD 등의 구성을 위해 스캔 결과에 대한 데이터가 필요할 수 있습니다.
보통 gowitness의 옵션 중 report 옵션으로 HTML 기반 리포트를 생성하는데, 관련 문서를 잘 찾아보니 sqlite 에서 summary만 뽑아서 출력할 수 있는 옵션이 있더군요. 이를 활용하면 쉽게 JSON 형태로 결과를 뽑아낼 수 있습니다.
Scanning multiple URLs
gowitness file -f hosts
Get JSON Result
gowitness report list -j
{
"url": "https://www.hahwul.com",
"final_url": "https://www.hahwul.com",
"response_code": 200,
"response_reason": "200 OK",
"proto": "HTTP/1.1",
"content_length": -1,
"title": "HAHWUL",
"file_name": "https-www.hahwul.com.png"
}