2/15/2020

Find testing point using tomnomnom's tool, for bugbounty!

I recently watched a video that looked for inspection points in a unique way from Stok's video(interviewed tomnomnom)
So, today, I'm going to introduce you to some of the tools and techniques introduced in that video.
최근에 Stok 영상 중 tomnomnom 를 인터뷰한게 있어서 보던 중 특이한 방식으로 점검 포인트를 찾는 영상을 보게되었습니다.
그래서, 오늘은 해당 영상에서 소개된 툴과 기법들 중 일부를 가볍게 소개하려고 합니다. (저도 정리가 필요해서리..)

꼭 영상 한번 보세요! 최고입니다!!(Please watch the video! It's the best!!!!)

Pre-install

First of all, we're going to use four tools that tomnomnom created. Please install it.
우선 tomnomnom 가 만든 4가지 도구를 사용할겁니다. 설치해주세요.

assetfinder , httprobe , meg , gf

install script

go get -u github.com/tomnomnom/assetfinder
go get -u github.com/tomnomnom/httprobe
go get -u github.com/tomnomnom/meg
go get -u github.com/tomnomnom/gf
cp -r ~/go/src/github.com/tomnomnom/gf/examples ~/.gf

set command alias

vim {your-rc} # vimrc, zshrc, etc...

alias assetfinder='/Users/hahwul/go/bin/assetfinder'
alias httprobe='/Users/hahwul/go/bin/httprobe'
alias meg='/Users/hahwul/go/bin/meg'
alias gf='/Users/hahwul/go/bin/gf'

Find subdomain and asset

Subdomain enum actually has a lot of tools. Although you can use the assetfinder를 created by tomnomnom, it is important to use as many tools as you can, such as Amass and Subfinder, to get a lot of subdomain lists.
Subdomain enum은 사실 도구가 굉장히 많습니다. tomnomnom 가 만든 assetfinder를 사용해도 좋지만 이와 함께 Amass와 Subfinder등 최대한 도구를 많이 사용해서 서브 도메인 리스트를 많이 확보하는게 중요합니다.



$ assetfinder -subs-only {target-domain} >> domains
$ subfinder -d {target-domain} >> domains


이런식으로 파일 하나에 도메인을 다 밀어넣은 후 중복제거만 해주면 됩니다.

Make HTTP/HTTPS URLS

this time we're going to analyze the http response, so we'll sort it into the http/https domain. The http/https url list can be obtained using the httporbe and tee commands as follows:
보통은 식별한 서브도메인 기준으로 Takeover 체크 후 스캔을 돌리던 개별적으로 보던 하는데요, 이번엔 http response를 분석할 것이기 때문에 http/https 도메인으로 정리해줍니다. httporbe와 tee 명령을 이용해 아래와 같이 http/https url 리스트를 확보할 수 있습니다.
httprobe is making http/https list

$ cat domains | httprobe | tee hosts



In my case... i run my private tools that built to identify and use that data as back data.
저의 경우는.. 이 과정까지는 따로 구축한 도구를 돌려 식별하고 있어서 해당 데이터를 백 데이터로 사용합니다.



Meg!

Get http response headers and body, Meg is a tool that stores the http response header and body as a file.
Meg는 http response header와 body를 파일로 저장하는 도구입니다.

$ meg -d 1000 -v /

Once completed, multiple files will be created for each domain, as shown below. Inside the file, a http response (header + body) is stored.
작업이 완료되면 아래와 같이 도메인별로 여러개의 파일이 생기게 됩니다. 해당 파일 내부에는 http response(header + body)가 저장됩니다.



index 파일을 보면 파일과 url, response code를 확인할 수 있어요

내부에는 curl 의 결과가 들어있습니다.

Find point with gf

gf is wrapper around grep, to help you grep for things.
gf는 개량형 grep이라고 보시면 좋습니다. grep으로 직접 찾아도 되지만, 미리 패턴을 정의해놓고 쓰기에는 gf가 더 편합니다.

기본적으로 아래 리스트를 지원합니다.

$ gf -list
aws-keys
base64
cors
debug-pages
firebase
fw
go-functions
http-auth
ip
json-sec
meg-headers
php-curl
php-errors
php-serialized
php-sinks
php-sources
s3-buckets
sec
servers
strings
takeovers
upload-fields
urls

grap flag and regular expression are stored json file
내용을 보면.. grep flag와 정규식이 저장되어 있습니다.

$ cat ~/.gf/aws-keys.json
{
    "flags": "-HanrE",
    "pattern": "([^A-Z0-9]|^)(AKIA|A3T|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{12,}"
}

This makes it easy to place grep run the current directory. This way, I can see the CORS setting at once.
이를 통해 현재 디렉토리 내부에서 grep을 쉽게 걸 수 있습니다. 이런식으로 cors 설정을 한번에 보거나..

$ gfgf cors
./global-esports-cms.pubg.com/85085c2e01f50f05ce006627b0aa0963e9413625:14:< Access-Control-Allow-Origin: *
./global-esports-cms.pubg.com/42612c024c5d21ec68c677eaa3bc85e1d6b2565f:13:< Access-Control-Allow-Origin: *

Can also check where base64 data is used.
base64 데이터가 사용되는 부분을 체크할 수도 있습니다.

$ gfgf base64
./forums.pubg.com/18f5e3af7e0599284b89bc69d7bb095cfbc65b42:13:-aHR0cHM6Ly9mb3J1bXMucHViZy5jb20vcmVnaXN0ZXIvP2RvPW9wSWZyYW1lUmVmbG93UHJvY2Vzcw==
-aHR0cHM6Ly9mb3J1bXMucHViZy5jb20v
./forums.pubg.com/681c348f74161e12908368f601f4d3c785085c45:18:-aHR0cHM6Ly9mb3J1bXMucHViZy5jb20vcmVnaXN0ZXIvP2RvPW9wSWZyYW1lUmVmbG93UHJvY2Vzcw==
-aHR0cHM6Ly9mb3J1bXMucHViZy5jb20v

The defined regular expression is useful, so if you try it a few times, you'll get some testing points. In addition, there are patterns that can only occur in certain companies, so you can test them with a regular expression.
정의된 정규식이 쓸만한편이라 몇번 해보시면 테스팅 포인트가 좀 잡힙니다. 추가로.. 특정 기업에서만 발생할 수 있는 패턴들도 있으니 적절하게 정규식 추가해서 테스트해보시면 좋습니다.

Now start happy hacking with the identified data!

https://i.giphy.com/3oz8xCxj4400yvfgDm.gif




HAHWUL

Security engineer, Rubyist, Gopher and H4cker!

Share: | Coffee Me: