+2

Log4Shell (POC kèm Demo)

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


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí