CVE-2023-20864: VMware Aria Operations for Logs RCE

CVE-2023-20864: VMware Aria Operations for Logs RCE

·

2 min read

CVE này mình dựng lại từ lâu rồi, lỗi không có gì phức tạp, bài phân tích cũng có rồi, nhưng gà 🐤 nên phải nhờ có sự hỗ trợ từ devme4f thì mình mới RCE thành công. Nay viết lại chính chỉ để note lại các bước mình đã thực hiện, bla bal...

Mô tả

image

CVE-2023-20864 là lỗ hổng insecure deserialization tồn tại trên VMware Aria Operations for Logs (VMware AOL) 8.10.2, cộng với việc Unauthen nên chỉ cần tìm được gadget chain là xong

Setup

Sau khi tạo máy ảo thành công, login với user root, password trống và đổi lại mật khẩu

Truy cập trang quản trị (443/tcp) và tạo deployment mới

Mấy bước setup sau không cần thiết cứ skip thôi

Explore

Version java

Screenshot 2024-01-31 091908

VMware AOL chạy một số service sau

  • 9000/tcp và 9543/tcp (SSL) : Ingestion API, API management

  • 9042/tcp : Cassandra service

  • 7000/tcp 7001/tcp (SSL): Cassandra replication and query

  • 59778/tcp, 16520 - 16580/tcp: Thrift service

Trong đó lỗ hổng tồn tại trong các API sau tại service API management

POST /api/v2/internal/cluster/applyMembership
    controllers.InternalClusterController.applyMembership(request :play.mvc.Http.Request)
POST /api/v2/internal/cluster/setToken
    controllers.InternalClusterController.setToken(request :play.mvc.Http.Request)
POST /api/v2/internal/cluster/approveMembership
    controllers.InternalClusterController.approveMembership(request :play.mvc.Http.Request)

Xem process nào đang mở port 9000/tcp và 9543/tcp

\=> pid=1631

Kiểm tra process thấy có classpath như sau

Tuy nhiên để tránh sót một số file jar có thể được include trong file meta, mình sẽ làm như sau

Nén lại và kéo ra ngoài đọc thôi

Sau khi giải nén sẽ có một số file trùng nên còn 249 file (tính cả jre, đáng lẽ nên exclude đống này ra 🦍)

3 API thực hiện deserialize nằm trong api-play-service_2.13-1.0.jar!controllers/InternalClusterController.class

Các API này đều deserialize trực tiếp body data bằng SerializationUtils trong commons-lang3

Check một lượt đống lib thì mình thấy có thể dùng các gadget chains sau

  • CommonsBeanutils1 (commons-beanutils-1.9.4.jar)

  • CVE-2022-36944 (scala-library-2.13.5.jar) PoC

PoC

CommonsBeanutils1

ysoserial:

java -jar ysoserial-all.jar CommonsBeanutils1 [command] | base64 -w 0

RCE với quyền root

Ngoài ra gadget chain từ scala library có thể được dùng để xóa nội dung file bất kỳ

refs