Hướng dẫn login php exploit - khai thác php đăng nhập

Bao gồm tệp có thể cho phép kẻ tấn công xem các tệp trên máy chủ từ xa mà họ không thể nhìn thấy và thậm chí nó có thể cho phép kẻ tấn công chạy mã trên mục tiêu.

Nội phân Chính showShow

  • Bao gồm tập tin cục bộ
  • Bước 1: Kiểm tra LFI
  • Bước 2: Mã tiêm
  • Bước 3: Nhận vỏ
  • Bao gồm tập tin từ xa
  • Bước 1: Bắt đầu một máy chủ
  • Bước 2: Thiết lập mã của bạn
  • Bước 3: Thiết lập trình nghe Netcat
  • Bước 4: Bao gồm mã của bạn
  • Một số cảnh báo cho việc đưa vào tệp

Để chứng minh các lỗ hổng này, chúng tôi sẽ thực hành bao gồm tệp PHP bằng ứng dụng web dễ bị tổn thương chết tiệt. Chúng tôi sẽ bao gồm cách cả bao gồm tệp từ xa và bao gồm tệp cục bộ hoạt động với mục tiêu đạt được quyền truy cập shell vào máy chủ dễ bị tổn thương.

Trong ví dụ đầu tiên của chúng tôi, chúng tôi sẽ xem xét bao gồm tệp cục bộ (LFI). Loại bao gồm tệp này bao gồm các tệp có trên máy chủ từ xa. Nó có thể được sử dụng để xem các tệp cấu hình, tìm kiếm các tài liệu thú vị và nhận được một shell đặc quyền thấp. Loại bao gồm này có mặt trong PHP, JSP, ASP và các ngôn ngữ khác.

Trong ví dụ thứ hai của chúng tôi, chúng tôi xem xét bao gồm tệp từ xa (RFI). Về cơ bản, đó là cùng một khái niệm, sự khác biệt là kẻ tấn công không bị giới hạn bởi những gì có sẵn cho họ trên máy chủ từ xa. Kẻ tấn công có thể bao gồm các tệp trực tiếp từ máy của họ để thực hiện bởi máy chủ từ xa. Loại bao gồm này cũng có mặt trong nhiều ngôn ngữ lập trình.

Bao gồm tập tin cục bộ

Bước 1: Kiểm tra LFI

Bước 1: Kiểm tra LFI

Bước 2: Mã tiêm

Hướng dẫn login php exploit - khai thác php đăng nhập

Bước 3: Nhận vỏ

Bao gồm tập tin từ xa.. represents the previous directory. Since we don't actually know what directory the app is reading files from, we tell the app to go back a bunch of directories, and then to /etc/passwd.

Bước 1: Bắt đầu một máy chủ

Bước 2: Thiết lập mã của bạn

/var/www/cgi-bin/things/

Bước 3: Thiết lập trình nghe Netcat

../../../../../../../../../../../../../../etc/passwd

Bước 4: Bao gồm mã của bạn

Một số cảnh báo cho việc đưa vào tệp

Để chứng minh các lỗ hổng này, chúng tôi sẽ thực hành bao gồm tệp PHP bằng ứng dụng web dễ bị tổn thương chết tiệt. Chúng tôi sẽ bao gồm cách cả bao gồm tệp từ xa và bao gồm tệp cục bộ hoạt động với mục tiêu đạt được quyền truy cập shell vào máy chủ dễ bị tổn thương.

Bước 2: Mã tiêm

Bước 3: Nhận vỏ

Bao gồm tập tin từ xa

Bước 1: Bắt đầu một máy chủ

Tiếp theo, chúng tôi kiểm tra thực thi lệnh. Sử dụng NetCat, tôi kết nối với máy chủ web của mình và gửi một số mã PHP.

NC 192.168.1.111 80

Những gì tôi đang làm ở đây là gửi mã PHP trực tiếp đến máy chủ web. Đây không phải là những gì Apache mong đợi từ yêu cầu HTTP và máy chủ gửi lại lỗi 400 nhưng ghi lại yêu cầu trong /var/log/apache2/access.log. Điều này sẽ cho phép tôi đọc lại tệp nhật ký bằng ứng dụng web, sẽ thực hiện bất kỳ PHP nào mà nó xuất hiện.

Bây giờ, tôi có PHP trong tệp nhật ký để thực hiện danh sách thư mục. Hãy xem nếu nó hoạt động:

Tôi có thể thấy bên dưới rằng lệnh LS hoạt động - mã của tôi đã được thực thi trên máy chủ từ xa. Chúng tôi đã đưa tệp nhật ký Apache vào ứng dụng, sau đó PHP đọc qua tệp nhật ký và in nội dung văn bản lên đầu trang. Khi trình thông dịch PHP nhấn mã của chúng tôi để thực thi LS trên hệ thống, nó sẽ thực hiện nó.ls command worked — my code was executed on the remote host. We included the Apache log file into the app, then PHP reads through the log file and prints the text contents to the top of the page. When the PHP interpreter hits our code to execute ls on the system, it executes it.

Tôi đã nhấn mạnh phần mà mã của chúng tôi được thực thi; Phần còn lại của văn bản chỉ là tệp nhật ký Apache. Chúng tôi đã có RCE, điều đó có nghĩa là, tôi chỉ là một bước khỏi vỏ.

Bước 3: Nhận vỏ

Bây giờ chúng tôi có thể xác minh quyền truy cập của mình, tôi cần phải có cho mình một cái vỏ. Tôi sẽ kết nối lại với NetCat, nhưng lần này, php shell_exec () của tôi sẽ chứa lệnh cho kết nối NetCat ngược. Đây là nơi nó có thể trở nên khó khăn. Nếu Netcat không được cài đặt, bạn sẽ không gặp lỗi, bạn sẽ không nhận được kết nối. Trong một số trường hợp, bạn phải gặp khó khăn với vỏ của bạn. May mắn thay, có nhiều tùy chọn có sẵn để phục hồi vỏ từ máy chủ Linux.

Để bắt đầu, tôi sẽ nhập phần sau vào cửa sổ thiết bị đầu cuối.

NC 192.168.1.111 80

Những gì tôi đang làm ở đây là gửi mã PHP trực tiếp đến máy chủ web. Đây không phải là những gì Apache mong đợi từ yêu cầu HTTP và máy chủ gửi lại lỗi 400 nhưng ghi lại yêu cầu trong /var/log/apache2/access.log. Điều này sẽ cho phép tôi đọc lại tệp nhật ký bằng ứng dụng web, sẽ thực hiện bất kỳ PHP nào mà nó xuất hiện.shell_exec() function in PHP executes a command via a system shell and returns a string.

Bây giờ, tôi có PHP trong tệp nhật ký để thực hiện danh sách thư mục. Hãy xem nếu nó hoạt động:-e option tells Netcat to execute Bash. You can use any port you have permission to bind to. The PHP is injected into the log file the same as the PHP for our ls command.

Tôi có thể thấy bên dưới rằng lệnh LS hoạt động - mã của tôi đã được thực thi trên máy chủ từ xa. Chúng tôi đã đưa tệp nhật ký Apache vào ứng dụng, sau đó PHP đọc qua tệp nhật ký và in nội dung văn bản lên đầu trang. Khi trình thông dịch PHP nhấn mã của chúng tôi để thực thi LS trên hệ thống, nó sẽ thực hiện nó.

Tôi đã nhấn mạnh phần mà mã của chúng tôi được thực thi; Phần còn lại của văn bản chỉ là tệp nhật ký Apache. Chúng tôi đã có RCE, điều đó có nghĩa là, tôi chỉ là một bước khỏi vỏ.

Bước 3: Nhận vỏ-n argument specifies that Netcat should not attempt to look up addresses with DNS, the -l argument tells Netcat to listen, and the -v argument sets verbose mode.

Bây giờ chúng tôi có thể xác minh quyền truy cập của mình, tôi cần phải có cho mình một cái vỏ. Tôi sẽ kết nối lại với NetCat, nhưng lần này, php shell_exec () của tôi sẽ chứa lệnh cho kết nối NetCat ngược. Đây là nơi nó có thể trở nên khó khăn. Nếu Netcat không được cài đặt, bạn sẽ không gặp lỗi, bạn sẽ không nhận được kết nối. Trong một số trường hợp, bạn phải gặp khó khăn với vỏ của bạn. May mắn thay, có nhiều tùy chọn có sẵn để phục hồi vỏ từ máy chủ Linux.

Để bắt đầu, tôi sẽ nhập phần sau vào cửa sổ thiết bị đầu cuối.

Trong lệnh này, tôi thiết lập kết nối netcat xương trần với máy chủ dễ bị tổn thương trên cổng 80. Sau đó tôi gửi mã PHP cho trình thông dịch PHP thực thi NetCAT. Hàm shell_exec () trong PHP thực thi lệnh thông qua shell hệ thống và trả về một chuỗi.

Lệnh mà chúng tôi muốn PHP thực thi là đối số cho hàm, cụ thể cho NetCat kết nối với máy của tôi trên cổng 31337. Tùy chọn -E yêu cầu NetCAT thực thi Bash. Bạn có thể sử dụng bất kỳ cổng nào bạn có quyền liên kết. PHP được tiêm vào tệp nhật ký giống như lệnh PHP cho lệnh LS của chúng tôi.

Để bắt vỏ đến, chúng ta sẽ cần chạy như sau trong cửa sổ đầu cuối trên máy tấn công của chúng tôi.

NC -NLV 31337

Lệnh này được thực thi trên máy tấn công của tôi cho Netcat thiết lập trình nghe trên cổng 31337. Đối số -N chỉ định rằng NetCat không nên cố gắng tra cứu địa chỉ với DNS, đối số -L cho NetCAT nghe và đối số -V. Chế độ dài dòng.

Lần tới khi tôi truy cập tệp Access.log, ứng dụng web thực thi mã có trong đó và trả lại cho tôi một shell ngược.

Từ đây, có nhiều con đường để đi. Nói chung, tôi sẽ bắt đầu tìm kiếm hệ thống và tìm kiếm cơ hội leo thang đặc quyền. Máy này có thể dễ dàng trở thành một phần của botnet hoặc được sử dụng làm hộp nhảy. Một kẻ tấn công cũng có thể dễ dàng thêm backtoor vào chính ứng dụng web.

Bao gồm tập tin từ xa

Bao gồm tệp từ xa thậm chí còn dễ dàng hơn nếu nó có sẵn. Kỹ thuật này cho phép bạn đưa các tệp ra khỏi máy hoặc máy chủ từ xa của riêng bạn. Đối với ví dụ này, tôi sẽ bỏ qua các giai đoạn thử nghiệm và chỉ bao gồm mã PHP của mình cho Shell Reverse Netcat.

Bước 1: Bắt đầu một máy chủ

Đầu tiên, tôi sẽ cần bật máy chủ web của mình. Đối với người dùng KALI Linux, bạn có thể nhập phần sau vào cửa sổ thiết bị đầu cuối.

SystemCtl Bắt đầu Apache2-n argument tells Netcat to not resolve host names, -v argument is for verbose, and the -l argument is for listen. The last argument is the port to listen on.

Bước 2: Thiết lập mã của bạn

Tôi sẽ sử dụng cùng một mã PHP mà tôi đã sử dụng trước đây để gửi lại vỏ vào máy của mình. Tuy nhiên, tôi thêm mã vào một tệp có tên shell.html, như bạn đã thấy, ứng dụng cụ thể này sẽ bao gồm bất kỳ tệp nào có PHP trong đó. Chúng ta có thể nhận được kết quả tương tự với shell.php hoặc shell.log. Chúng tôi chỉ cần đặt một dòng PHP vào tệp này, mà trình thông dịch sẽ đọc và thực thi.

Sau đó, tôi di chuyển tệp đó vào gốc web của tôi, đối với người dùng Kali Linux nên được đặt tại/var/www/html/.

Một số cảnh báo cho việc đưa vào tệp

Bài viết này bao gồm những điều cơ bản của các tập tin địa phương và từ xa. Trong một số trường hợp, những lỗ hổng này có thể khó khai thác trong tự nhiên hơn. Bạn có thể cần chấm dứt tên tệp bằng byte null hoặc thậm chí thoát khỏi các dấu gạch chéo trên đường dẫn của bạn. Tất cả phụ thuộc vào cách mã ở phía sau là phân tích cú pháp đầu vào. Ngay cả khi lỗ hổng khó khai thác hơn, nó vẫn là trái cây treo rất thấp.

Nếu bạn có bất kỳ câu hỏi hoặc nhận xét nào, hãy gửi cho họ theo cách của tôi trong các bình luận bên dưới hoặc tại @0xbarrow trên Twitter.

Bạn muốn bắt đầu kiếm tiền như một hacker mũ trắng? Nhảy bắt đầu sự nghiệp hack của bạn với gói đào tạo chứng nhận hack đạo đức cao cấp năm 2020 của chúng tôi từ cửa hàng null byte mới và nhận được hơn 60 giờ đào tạo từ các chuyên gia an ninh mạng. Jump-start your hacking career with our 2020 Premium Ethical Hacking Certification Training Bundle from the new Null Byte Shop and get over 60 hours of training from cybersecurity professionals.

Mua ngay (giảm 90%)>

Các giao dịch đáng giá khác để kiểm tra:

  • Giảm 97% Gói chứng nhận Hacker Hat Ultimate 2021
  • TẮT 99% Nhà khoa học dữ liệu tất cả trong một Mega Gói Mega
  • Giảm 98% phí bảo hiểm năm 2021 Tìm hiểu về Mã chứng nhận mã
  • Phần mềm ánh xạ tâm trí của MindMaster Take: Giấy phép vĩnh viễn
Ảnh bìa của Markusspiske/Pixabay; Ảnh chụp màn hình bởi barrow/null byte