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

Sự Khác Nhau Giữa Domain và Hosting Là Gì?

Sự khác nhau giữa domain và hosting là gì? Bài này giải thích ngắn và dễ hiểu nh

Shared Hosting hay VPS Hosting: Lựa chọn nào dành cho bạn?

Bài viết giải thích rõ shared hosting và vps hosting là gì và hướng dẫn chọn lựa

Thay đổi Package Name của Android Studio dể dàng với plugin APR

Nếu bạn đang gặp khó khăn hoặc bế tắc trong việc thay đổi package name trong And

Lỗi không Update Meta_Value Khi thay thế hình ảnh cũ bằng hình ảnh mới trong WordPress

Mã dưới đây hoạt động tốt có 1 lỗi không update được postmeta ” meta_key=