Xem php pid xem php pid

Bao gồm tệp cục bộ có nghĩa là truy cập trái phép vào các tệp trên hệ thống. Lỗ hổng này cho phép kẻ tấn công có quyền truy cập vào các tệp nhạy cảm trên máy chủ và nó cũng có thể dẫn đến việc chiếm được shell

Làm thế nào nó hoạt động?

Lỗ hổng bắt nguồn từ đầu vào của người dùng không được vệ sinh. LFI đặc biệt phổ biến trong các trang web php

Dưới đây là một ví dụ về mã php dễ bị LFI. Như bạn có thể thấy, chúng tôi chỉ chuyển tham số url vào hàm yêu cầu mà không cần vệ sinh. Vì vậy, người dùng chỉ cần thêm đường dẫn đến bất kỳ tệp nào

$file = $_GET['page'];
require($file);

Trong ví dụ này, người dùng chỉ cần nhập chuỗi này và truy xuất tệp

$file = $_GET['page'];
require($file . ".php");
4

http://example.com/page=../../../../../../etc/passwd

Bỏ qua phần bổ sung. php và các phần cuối tệp bổ sung khác

Người ta thường thêm phần mở rộng tệp thông qua mã php. Đây là cách nó sẽ trông như thế nào

$file = $_GET['page'];
require($file . ".php");

php được thêm vào tên tệp, điều này có nghĩa là chúng tôi sẽ không thể tìm thấy các tệp mà chúng tôi đang tìm kiếm. Vì tệp

$file = $_GET['page'];
require($file . ".php");
5 không tồn tại. Tuy nhiên, nếu chúng tôi thêm byte rỗng vào cuối chuỗi tấn công của mình thì ________ 16 sẽ không được tính đến. Vì vậy, chúng tôi thêm
$file = $_GET['page'];
require($file . ".php");
7 vào cuối chuỗi tấn công của chúng tôi

http://example.com/page=../../../../../../etc/passwd%00

Kỹ thuật này thường được gọi là kỹ thuật null byte vì

$file = $_GET['page'];
require($file . ".php");
7 là byte rỗng. Kỹ thuật này chỉ hoạt động trong các phiên bản bên dưới php 5. 3. Vì vậy, hãy chú ý đến điều đó

Một cách khác để giải quyết vấn đề này là chỉ cần thêm một dấu chấm hỏi vào chuỗi tấn công của bạn. Bằng cách này, nội dung sau được hiểu là tham số và do đó bị loại trừ. Đây là một ví dụ

http://example.com/page=../../../../../../etc/passwd?

Bỏ qua thực thi php

Vì vậy, nếu bạn có LFI, bạn có thể dễ dàng đọc các tệp

$file = $_GET['page'];
require($file . ".php");
9 chứ không phải tệp
$file = $_GET['page'];
require($file . ".php");
6. Đó là bởi vì chúng được thực thi bởi máy chủ web, vì phần cuối tệp của chúng nói rằng nó chứa mã. Điều này có thể được bỏ qua bằng cách sử dụng bộ lọc php tích hợp

$file = $_GET['page'];
require($file . ".php");
2

Ở đây bạn sử dụng bộ lọc php để chuyển đổi tất cả thành base64. Vì vậy, đổi lại, bạn nhận được toàn bộ trang được mã hóa base64. Bây giờ bạn chỉ cần giải mã nó. Lưu văn bản base64 vào một tệp rồi chạy

$file = $_GET['page'];
require($file . ".php");
3

Linux

Thủ thuật

Tải xuống tệp cấu hình ở định dạng kiểu đẹp

Nếu bạn đọc tệp trực tiếp trong trình duyệt, kiểu dáng có thể trở nên không thể chịu nổi. Thực sự khó đọc. Một cách khác là tải xuống các tệp từ thiết bị đầu cuối. Nhưng điều đó sẽ không hoạt động nếu có một thông tin đăng nhập đang chặn nó. Vì vậy, đây là một cách giải quyết tuyệt vời

$file = $_GET['page'];
require($file . ".php");
4

tập tin nhạy cảm

Đây là bố cục mặc định của các tệp apache quan trọng.
https. //wiki. apache. org/httpd/DistrosDefaultLayout

$file = $_GET['page'];
require($file . ".php");
5

Đến từ đây. https. //ý chính. github. com/sckalath/a8fd4e754a72015aa0b8

$file = $_GET['page'];
require($file . ".php");
6

tập tin máy chủ web

http://example.com/page=../../../../../../etc/passwd
0

SSH

http://example.com/page=../../../../../../etc/passwd
1

Nhật ký

http://example.com/page=../../../../../../etc/passwd
2

Tệp cụ thể của người dùng

Tìm thấy trong thư mục nhà

http://example.com/page=../../../../../../etc/passwd
3

tập tin proc

"Trong Linux, /proc bao gồm một thư mục cho mỗi quy trình đang chạy, bao gồm các quy trình nhân, trong các thư mục có tên /proc/PID, trong đó PID là số quy trình. Mỗi thư mục chứa thông tin về một quá trình, bao gồm. /proc/PID/cmdline, lệnh ban đầu bắt đầu quá trình. "

https. // vi. wikipedia. org/wiki/Procfs

https. //Blog. netspi. com/directory-traversal-file-inclusion-proc-file-system/

http://example.com/page=../../../../../../etc/passwd
4

Bruteforcing SSH known_hosts

https. //Blog. Vỏ rễ. be/2010/11/03/bruteforcing-ssh-known_hosts-files/

LFI để vỏ

Trong những trường hợp phù hợp, bạn có thể lấy vỏ từ LFI

ngộ độc khúc gỗ

Có một số yêu cầu. Chúng tôi cần có khả năng đọc các tệp nhật ký. Trong ví dụ này, chúng ta sẽ đầu độc tệp nhật ký apache. Bạn có thể sử dụng thành công. nhật ký hoặc lỗi. đăng nhập

Vì vậy, khi bạn đã tìm thấy lỗ hổng LFI, bạn phải đưa mã php vào tệp nhật ký và sau đó thực thi nó

Chèn mã php vào tệp nhật ký

Điều này có thể được thực hiện với nc hoặc telnet

http://example.com/page=../../../../../../etc/passwd
5

Bạn cũng có thể thêm nó vào nhật ký lỗi bằng cách yêu cầu một trang không tồn tại

http://example.com/page=../../../../../../etc/passwd
6

Hoặc trong tham số người giới thiệu

http://example.com/page=../../../../../../etc/passwd
7

Thực hiện nó trong trình duyệt

Bây giờ bạn có thể yêu cầu tệp nhật ký thông qua LFI và xem mã php được thực thi

http://example.com/page=../../../../../../etc/passwd
8

tập tin proc

Nếu bạn có thể đọc các tệp proc trên hệ thống, bạn có thể đầu độc chúng thông qua tác nhân người dùng

Chúng tôi cũng có thể đưa mã vào /proc/self/environ thông qua tác nhân người dùng

https. //www. khai thác-db. com/giấy tờ/12992/

https. //www. youtube. com/watch?v=ttTVNcPnsJY

các cửa sổ

lấy dấu vân tay

http://example.com/page=../../../../../../etc/passwd
9

Nhật ký

Đường dẫn chung cho các tệp nhật ký apache trên windows

$file = $_GET['page'];
require($file . ".php");
0

Vị trí phiên PHP

$file = $_GET['page'];
require($file . ".php");
1

Truy xuất băm mật khẩu

Để truy xuất mật khẩu hệ thống đã băm, chúng tôi cần hai tệp. hệ thống và SAM. Khi bạn có hai tệp đó, bạn có thể giải nén hased bằng công cụ kali pwdump, như thế này

$file = $_GET['page'];
require($file . ".php");
2

Có thể tìm thấy các tệp hệ thống và SAM ở các vị trí khác nhau, vì vậy hãy thử tất cả. Từ máy chủ web, đường dẫn có thể phân biệt chữ hoa chữ thường, mặc dù đó là cửa sổ. Vì vậy, hãy xem xét điều đó