Log4Shell (POC kèm Demo)

Có lẽ Log4Shell đã được công bố được một khoảng thời gian khá lâu rồi, nhưng hiện tại mức độ ảnh hưởng của nó vẫn không thể phủ nhận nên hãy theo chân mình để tìm hiểu tất tần tật về nó nhé. 1. Log4Shell là gì? Log4Shell (LogJam) là lỗ hổng bảo mật ảnh

image.png

Có lẽ Log4Shell đã được công bố được một khoảng thời gian khá lâu rồi, nhưng hiện tại mức độ ảnh hưởng của nó vẫn không thể phủ nhận nên hãy theo chân mình để tìm hiểu tất tần tật về nó nhé.

1. Log4Shell là gì?

  • Log4Shell (LogJam) là lỗ hổng bảo mật ảnh hưởng đến Apache Log4j, thuộc RCE class vulnerability.
  • Lỗ hổng này cho phép kẻ tấn công có thể kiểm soát log messenges qua đó thực thi mã tùy ý được tải từ máy chủ do kẻ tấn công kiểm soát.

2. Log4Shell xảy ra ở đâu?

  • Log4Shell xảy ra ở những ứng dụng sử dụng thư viện Apache Log4j từ phiên bản 2.0 đến 2.14.1
  • Apache Log4j là một phần của Apache Logging Project. Nó là 1 công cụ ghi nhật kí dựa trên Java.
  • Hầu hết các ứng dụng được viết bằng Java đều sử dụng nó và đều có thể mắc lỗ hổng này.
  • Nhiều công ty phần mềm lớn và dịch vụ trực tuyến sử dụng Log4j bao gồm Amazon, Apple, Twitter, Tesla, Steam, … đều không thể tránh khỏi.

3. Log4Shell xảy ra thế nào?

  • Log4Shell xảy ra từ khi phiên bản Log4j 2.0 đã thêm các lookups, bao gồm cả JNDI lookups.
  • JAVA Naming and Directory Interface (JNDI) là một Java API cho một Directory Service cho phép giao tiếp với LDAP hoặc DNS để tìm kiếm các data và resources.
  • LDAP (Lightweight Directory Access Protocol) là một giao thức dạng client-server sử dụng để truy cập một Directory Service.
  • Một trong những kiểu dữ liệu trả về ấy có thể là URI trỏ đến 1 class java độc hại mà kẻ tấn công có thể tùy ý sửa đổi và thực thi.

4. Khai thác (POC)

  • Giả sử 1 ứng dụng ghi nhật kí thông tin HTTP, cụ thể ở đây là User-Agent:
    image.png

  • Kẻ tấn công có thể thực hiện một cuộc tấn công như sau:
    image.png

  • Kẻ tấn công sẽ tạo 1 jndi đưa nó vào User-Agent

  • Bây giờ Log4j sẽ thực hiện 1 truy vấn LDAP tới URI được bao gồm. LDAP server sau đó sẽ phản hồi với thông tin thư mục trong liên kết

  • Các giá trị javaFactory, javaCodeBase giống như địa chỉ để Log4j xác định vị trí chứa class java khai thác.

image.png

  • Cuối cùng class Java được tải vào bộ nhớ và được thực thi bởi Log4j.

5. Demo rce tạo file trong thư mục tmp

  • Tạo class Java để exploit thử với cmd tạo file mới trong thư mục tmp
    image.png

  • Kiểm tra thư mục tmp hoàn toàn chưa có file pwned
    image.png

  • Tạo web server với python3
    image.png

  • Khởi chạy LDAP server thực hiện trả về tham chiếu jndi
    image.png

  • Giả lập cuộc tấn công Log4j trên một java web server

    • Cấu hình server sử dụng log4j chứa lỗ hổng (ở đây mình cấu hình mặc định rằng server đã ghi lại payload của attacker)
      image.png

    • Chạy file
      image.png

  • Kết quả

    • LDAP server
      image.png

    • Web server
      image.png

    • Và file pwned đã được tạo ra, cho thấy class java đã được thực thi
      image.png

  • Điều này mở ra cách khai thác không giới hạn của một cuộc tấn công RCE mang lại hậu quả vô cùng nghiêm trọng

6. Phòng chống

  • Cách tốt nhất để vá lỗ hổng này là update log4j lên phiên bản mới nhất.

image.png

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ