quachhuy1703
New Member
-
09/01/2023
-
0
-
4 bài viết
Phân tích lỗ hổng CVE-2023-6063 WP Fastest Cache - UNAUTHENTICATED SQLI
Cài đặt môi trường:
Docker là gì?
- Docker là một ứng dụng mã nguồn mở cho phép độc lập triển khai giữa các ứng dụng và cơ sở hạ tầng đối với các nhà phát triển và mở ra tiềm năng tạo nên một mô hình cho sự hợp tác tốt và đổi mới hơn.
- Docker giải quyết vấn đề khi mà các doanh nghiệp ngày nay đang chịu áp lực phải chuyển đổi kỹ thuật số nhưng bị hạn chế bởi các ứng dụng và cơ sở hạ tầng hiện tại đồng thời hợp lý hóa danh mục cloud, trung tâm dữ liệu và kiến trúc ứng dụng ngày càng đa dạng.
Chuẩn bị máy ảo
Một máy ảo Ubuntu server 20.04 có cấu hình như sau:Ram | Cpu | Disk | Nic | Os |
4G | 4 cores | 50Gb | 1 Nic | Ubuntu 20.04 |
Cài đặt môi trường Docker và tiến hành khai thác lổ hổng CVE-2023-6063:
Các bước thực hiện như sau: |
Bước 1: Chạy câu lệnh apt-get update |
apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release |
Bước 2: Add Docker’s Official GPG Key |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg |
Bước 3: Add repo |
echo \ “deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null |
Bước 4: Install Docker |
apt-get update apt-get install docker-ce docker-ce-cli containerd.io |
Bước 5: Kiểm tra dịch vụ Docker |
Kiểm tra trạng thái của Docker Service systemctl status docker systemctl enable docker |
Bước 6: Running Test Docker Container |
Sau khi cài đặt xong các bước trên. Ở bước này chúng ta đi pull image có sẵn từ docker hub về docker trên server của các bạn để chạy thử. docker run -d nginx docker ps docker image ls |
Build docker-compose:
Code | version: ‘3.1’ services: wordpress: image: wordpress restart: always ports: – “8080:80” environment: WORDPRESS_DB_HOST: mysql WORDPRESS_DB_USER: wordpressuser WORDPRESS_DB_PASSWORD: wordpresspassword WORDPRESS_DB_NAME: wordpress volumes: – ./wordpress:/var/www/html mysql: image: mysql:5.7 restart: always environment: MYSQL_DATABASE: wordpress MYSQL_USER: wordpressuser MYSQL_PASSWORD: wordpresspassword MYSQL_ROOT_PASSWORD: rootpassword volumes: – ./mysql:/var/lib/mysql ftp: image: fauria/vsftpd restart: always ports: – “21:21” environment: FTP_USER: yourftpuser FTP_PASS: yourftppassword PASV_ADDRESS: your_host_ip_address volumes: – ./ftp:/home/vsftpd/ftp networks: default: external: name: your_network_name |
Ghi chú | Hãy thay đổi các giá trị như yourftpuser, yourftppassword, your_host_ip_address, và your_network_name để phản ánh thông tin của bạn. |
Giải thích | Dịch vụ wordpress sử dụng hình ảnh WordPress và được liên kết với dịch vụ MySQL. Thư mục ./wordpress trên máy host được liên kết với /var/www/html trong container WordPress để lưu trữ dữ liệu WordPress. Dịch vụ mysql sử dụng hình ảnh MySQL để lưu trữ cơ sở dữ liệu của WordPress. Thư mục ./mysql trên máy host được liên kết với /var/lib/mysql trong container MySQL. Dịch vụ ftp sử dụng hình ảnh vsftpd để cung cấp dịch vụ FTP. Thư mục ./ftp trên máy host được liên kết với /home/vsftpd/ftp trong container vsftpd để lưu trữ dữ liệu FTP. Hãy thay đổi các giá trị như yourftpuser, yourftppassword, your_host_ip_address, và your_network_name để phản ánh thông tin của bạn. |
Giải thích | Dịch vụ wordpress sử dụng hình ảnh WordPress và được liên kết với dịch vụ MySQL. Thư mục ./wordpress trên máy host được liên kết với /var/www/html trong container WordPress để lưu trữ dữ liệu WordPress. Dịch vụ mysql sử dụng hình ảnh MySQL để lưu trữ cơ sở dữ liệu của WordPress. Thư mục ./mysql trên máy host được liên kết với /var/lib/mysql trong container MySQL. Dịch vụ ftp sử dụng hình ảnh vsftpd để cung cấp dịch vụ FTP. Thư mục ./ftp trên máy host được liên kết với /home/vsftpd/ftp trong container vsftpd để lưu trữ dữ liệu FTP. |
Triển khai | |
Kiểm tra docker | huyqa@thegirls:~/Documents/CVE$ sudo docker ps -a |
Truy cập vào đường link | |
Lựa chọn ngôn ngữ wordpress | |
Install plugin | Plugins --> Add New Plugin --> Click Plugin wp-fastest-cache.1.2.0.zip |
Active Plugin |
Tiến hành khai thác lổ hổng CVE-2023-6063:
Bước 1: | Enable “WP Fastest Cache”. |
Bước 2: | Tiến hành bắt gói tin HTTP bằng phần mềm burpsuite. Sau đó chạy câu lệnh sau: $ python sqlmap.py –dbms=mysql -u “http:// 172.18.0.2/wp-login.php” –cookie=’wordpress_logged_in=*’ –level=2 –schema |
Bước 3 | Check logs trên container wordpress |
Phân tích lổ hổng CVE-2023-6063
Lỗ hổng CVE-2023-6063 là gì?
- WP Fastest Cache là một plugin bộ nhớ đệm được sử dụng để tăng tốc độ tải trang, cải thiện trải nghiệm của khách truy cập và tăng thứ hạng của trang web trên công cụ tìm kiếm Google. Theo số liệu thống kê của WordPress.org, plugin này được hơn một triệu trang web sử dụng.
- Lỗ hổng được theo dõi là CVE-2023-6063 và có điểm mức độ nghiêm trọng cao 8,6/10, ảnh hưởng đến tất cả các phiên bản plugin trước 1.2.2. WordPress cho biết, hiện có hơn 600.000 trang web vẫn chạy phiên bản plugin tồn tại lỗ hổng và có nguy cơ bị tấn công.
Phân tích lỗ hổng CVE-2023-6063
- Lỗ hổng này ảnh hưởng đến chức năng ‘is_user_admin’ của class ‘WpFastestCacheCreateCache‘ trong plugin WP Fastest Cache, nhằm kiểm tra xem người dùng có phải là quản trị viên hay không bằng cách trích xuất giá trị ‘$username’ từ cookie.
Code: |
public function is_user_admin(){ global $wpdb; foreach ((array)[imath]_COOKIE as[/imath]cookie_key => $cookie_value){ if(preg_match("/wordpress_logged_in/i", $cookie_key)){ [imath]username = preg_replace("/^([^\|]+)\|.+/", "[/imath]1", $cookie_value); break; } } if(isset([imath]username) &&[/imath]username){ [imath]res =[/imath]wpdb->get_var("SELECT `[imath]wpdb->users`.`ID`, `[/imath]wpdb->users`.`user_login`, `[imath]wpdb->usermeta`.`meta_key`, `[/imath]wpdb->usermeta`.`meta_value` FROM `$wpdb->users` INNER JOIN `$wpdb->usermeta` ON `[imath]wpdb->users`.`user_login` = \"[/imath]username\" AND `$wpdb->usermeta`.`meta_key` LIKE \"%_user_level\" AND `$wpdb->usermeta`.`meta_value` = \"10\" AND `[imath]wpdb->users`.`ID` = `[/imath]wpdb->usermeta`.user_id ;" ); return $res; } return false; } |
Phân tích code: |
Sử dụng đối tượng toàn cục $wpdb để tương tác với cơ sở dữ liệu WordPress. Duyệt qua mảng $_COOKIE để tìm một khóa cookie chứa “wordpress_logged_in“. Trích xuất tên người dùng từ giá trị cookie bằng cách sử dụng biểu thức chính quy. Nếu tìm thấy tên người dùng, thực hiện một truy vấn SQL sử dụng $wpdb->get_var để kiểm tra xem người dùng có cấp độ người dùng là “10” (thường tương ứng với vai trò quản trị viên trong WordPress) hay không. Nếu người dùng là quản trị viên, hàm trả về kết quả của truy vấn SQL, đó là ID người dùng. Nếu không tìm thấy quản trị viên, hàm trả về giá trị false. |
Kết luận và khắc phục:
Kết luận:
- Cơ sở dữ liệu WordPress thường bao gồm thông tin nhạy cảm như dữ liệu người dùng (địa chỉ IP, email, ID), mật khẩu tài khoản, cài đặt cấu hình plugin và chủ đề cũng như các dữ liệu khác cần thiết cho các chức năng của trang web.
- Lỗ hổng được theo dõi là CVE-2023-6063 và có điểm mức độ nghiêm trọng cao 8,6/10, ảnh hưởng đến tất cả các phiên bản plugin trước 1.2.2. WordPress cho biết, hiện có hơn 600.000 trang web vẫn chạy phiên bản plugin tồn tại lỗ hổng và có nguy cơ bị tấn công.
Khắc phục:
- Một bản vá đã được phát hành bởi nhà phát triển WP Fastest Cache trong phiên bản 1.2.2, được phát hành ngày 13/11/2023.
- Sử dụng WAF để ngăn chặn các cuộc tấn công.
Tài liệu tham khảo:
Chỉnh sửa lần cuối: