[ jenkins를 통한 AWS 서비스 권한 획득 ]
https://hackerone.com/reports/398400
Table of contents
#0 취약 환경
#1 공격 STEP
1) 접근 가능한 Jenkins 인스턴스 확인
2) 권한 인증이 미흡한 Jenkins 설정으로 인해 계정 권한 획득
3) jenkins Execute shell 기능을 이용한 연동된 빌드 서버 내 임의의 파일 읽기
4) credentials 파일 내 access_key_id, secret_access_key 획득 및 AWS 서비스 이용
#2 대응 방안
#0 취약 환경
외부에서 접근 가능한 권한 인증 설정이 미흡한 jenkins 인스턴스
#1 공격 STEP
1. 접근 가능한 Jenkins 인스턴스 확인
1) Jenkins?
다수의 개발자들의 작업 내용을 통합적으로 관리해주며 자동화 빌드, 배포 기능을 제공
*서버의 shell 실행 기능 제공 (Build > Execute shell 메뉴)
2. 권한 인증이 미흡한 Jenkins 설정으로 인해 계정 권한 생성
jenkins 페이지 우측 상단에 가입 메뉴 이용이 가능하므로, 회원가입 후 로그인하여 계정 권한 획득
3. jenkins Execute shell 기능을 이용한 연동된 빌드 서버 내 임의의 파일 읽기 (Build > Execute shell 메뉴)
Execute shell 메뉴를 통해 jenkins 관리자는 빌드 서버의 shell을 원격으로 실행 가능.
4. credentials 파일 내 access_key_id, secret_access_key 획득 및 AWS 서비스 이용
빌드 서버 내 credentials 파일 내 access key를 확인하여 aws 서비스 이용 권한 획득
aws access key를 통해 관리되는 EC2 리스트, S3 bucket 확인 가능
+ 파일 미존재 시, 인증 키 메타데이터 요청을 통한 access_key_id, secret_access_key 획득 가능
awscli ver.1
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access
awscli ver.2
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access
+ 추가적으로 권한이 있고 Lambda에서 중요 정보가 존재 시, 분석 후 추출, 덤프된 rdbs와, ec2 생성 권한 존재 시, DB 내 중요 정보 획득이 가능하다.
#2 대응 방안
이용자 가입 설정 해제를 통한 무분별한 계정 권한 획득 방지
reference
https://stackoverrun.com/ko/q/10617292
https://docs.aws.amazon.com/
https://taeil00.tistory.com/26
'HACKING_NEWS > HACKERONE' 카테고리의 다른 글
HACKERONE#1 SSRF & Kubelet token (0) | 2020.07.12 |
---|