botocore 통신 내용을 mitmproxy로 확인

Overview



조금 전에 이런 기사가 나왔기 때문에, s3 액세스시의 서명의 버젼을 확인하고 싶은 이야기.
htps : //에서 v.ぁsss d. jp / c ぉ d / 아 ws / s3 - gv2 - 아보 치온 /

tcpdump라면 ssl의 내용을 볼 수 없기 때문에 Man-in-The-Middle proxy 사용합니다.

준비



다음은 샘플에서 aws s3에서 시도하지만,aws ec2 describe-instances라든지라도 사용할 수 있습니다.

mitmproxy



설치 및 pem 설정을 완료하십시오.
mac의 사람은 homebrew가 아니어도 pip install mitmproxy 로 보통으로 들어갑니다.
export MITMPROXY_CA=mitmproxy-ca-cert.pem

시작


mitmproxy -p 8000
localhost:8000로 부팅합니다 (포트는 선호
나중에 프록시를 통해 액세스하면 여기에 통신 내용이 나옵니다.

botocore


awscliboto 도 내용 botocore 를 사용하고 있고 AWS_CA_BUNDLE htps : // 보토 3. 아마조나 ws. 코 m/v1/도쿠멘들 온/아피/아 st/구이데/콘후 ぃ구라치온. HTML

mitmproxy 인증서를 번들로 둡니다.
export AWS_CA_BUNDLE=$MITMPROXY_CA

이것을 잊으면[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 되기 때문에 주의.

거동 확인



awscli 설정을 완료하십시오.
$ python -V
Python 2.7.15

$ virtualenv .venv
(..snip..)

$ . .venv/bin/activate

서명 v2(이전 버전)



아칸 야츠
$ pip install awscli==1.10.35
(..snip..)

$ aws --version
aws-cli/1.10.35 Python/2.7.15 Darwin/17.4.0 botocore/1.4.25
$ export HTTPS_PROXY=http://localhost:8000
$ export YOUR_BUCKET=your_bucket

$ aws s3 ls s3://$YOUR_BUCKET



서명 v4



OK 녀석
$ unset HTTPS_PROXY

$ pip install -U awscli
(..snip..)

$ aws --version
aws-cli/1.16.125 Python/2.7.15 Darwin/17.4.0 botocore/1.12.115
$ export HTTPS_PROXY=http://localhost:8000
$ export YOUR_BUCKET=your_bucket

$ aws s3 ls s3://$YOUR_BUCKET



라는 이야기.



뭐 서명의 버전 알고 싶을 뿐이라면 --debug 옵션으로 볼 수 있습니다만.
$ aws s3 --debug ls s3://${YOUR_BUCKET} 2>&1 | grep -A 1 -i 'signature'
2019-03-18 17:07:00,252 - MainThread - botocore.auth - DEBUG - Calculating signature using v4 auth.
2019-03-18 17:07:00,252 - MainThread - botocore.auth - DEBUG - CanonicalRequest:
--
2019-03-18 17:07:00,252 - MainThread - botocore.auth - DEBUG - Signature:
466b9a9d3febd9940d5948b285b41516307c618ad024df36be331490350eb05e

좋은 웹페이지 즐겨찾기