Cơ sở64 sang jpg php

Local File Inclusion là một lỗ hổng cực kỳ nguy hiểm giúp hacker có thể đọc các tệp cảm ứng trên máy chủ

Đặc biệt, nếu biết cách khai thác, hacker có thể RCE (Thực thi mã từ xa) dễ dàng thông qua một vài phương pháp phổ biến

Khoan đã, trong bài viết này mình sẽ hướng dẫn bạn khai thác LFI (Local File Inclusion) ở mức cơ bản và bỏ qua một số cơ chế bảo vệ

Tất nhiên phần RCE mình sẽ để ở một bài viết khác, nói chung phải trụ cơ bản không cải khi học nâng cao nhé

Nào, còn chần chừ gì nữa, bạn đang rất nóng lòng nhỉ??

LƯU Ý. Nếu hình ảnh quá nhỏ để xem, hãy nhấp chuột phải vào ảnh -> Mở hình ảnh trong tab mới 🙂

# Chuẩn bị những gì?

Tất nhiên phần này là cần thiết rồi, chúng ta cần phải chuẩn bị một số tài liệu cần thiết trước khi bắt tay vào hack chứ nhỉ?

Dưới đây là những thứ cần thiết trong bài học của ngày hôm nay

  • Phần mềm ảo hóa. Bài lab này mình sẽ sử dụng Virtualbox, bạn có thể tải xuống tại đây .
  • Máy Hacker (Kali Linux). Hack mà thiếu Kali Linux thì quả là không thể được. Tải xuống tại đây nhé.
  • DVWA. Chúng ta sẽ cài đặt DVWA trên máy Kali luôn nhẹ nhàng và dễ thực hiện. Làm theo Video cài đặt bên dưới

Ok, bù ít là đủ cho bài học của ngày hôm nay rồi đấy. Các bạn tải về rồi tiến hành cài đặt nhé, nó cũng không quá khó đâu.

# Bao gồm tệp là gì?

Nói thì có vẻ hơi khó hiểu một chút, các bạn quan sát hình bên dưới nhé

Cơ sở64 sang jpg php

Ví dụ, bên trên là một URL khi bạn muốn xem một tệp ảnh có tên là cat. jpg . Với người bình thường thì nhìn rất bình thường, còn với hacker chúng ta thì không.

Phản đối nếu mình không muốn xem ảnh mà muốn xem tệp khác thì sao? . jpg cat.jpg bằng đường dẫn của tệp cần xem là xong, quá dễ nhỉ??

Nếu chúng ta có thể xem tệp mà chúng ta muốn, thì trang web bị lỗi Bao gồm tệp, haha. Bạn đã hiểu chưa????

Lỗi này xảy ra đó là vấn đề dữ liệu đầu vào của người dùng không được lọc kỹ lưỡng, gây ảnh hưởng rất lớn đến Server

Các hàm PHP thường xảy ra lỗi này là bao gồm, yêu cầu, bao gồm_once, yêu cầu_once

Một ví dụ đơn giản như sau về code PHP type LFI (Local File Inclusion)

Cơ sở64 sang jpg php

Hàm include() lấy tất cả văn bản trong tệp đã định sẵn và hiển thị chúng trên Trang web. Còn các hàm khác thì bạn tự tìm hiểu nhé

Ngoài việc đọc các tệp cảm ứng trên Máy chủ, chúng ta còn có thể sử dụng LFI lỗi để RCE (Thực thi mã từ xa – Thực thi mã từ xa)

# Đường đi qua

Đây là phần cực kì quan trọng, bạn cần phải hiểu nó để có thể khai thác hiệu quả Local File Inclusion. Nói chung thì nó không quá khó đâu. Sử dụng Kali Linux để thực hiện hành động luôn dễ dàng nhé

Cơ sở64 sang jpg php
Vault for easy memory

  • ../ is back a directory
  • ../../ is back back two directory
  • ../../../ is lùi lại ba thư mục

Đừng lo nếu không hiểu thì đến với phần thực hành mình sẽ giải thích rất dễ hiểu

#1 Bắt đầu với Thấp

Chúng ta sẽ bắt đầu khai thác File Inclusion ở mức độ dễ trước (Thấp) rồi từ nâng cấp lên để các bạn dễ hiểu nhé!

Select DVWA Security -> select Low and Submit là xong. Sau đó chọn phần Bao gồm tệp để bắt đầu thực hiện bất kỳ hành động nào

Cơ sở64 sang jpg php

Trước khi chúng ta bắt đầu khai thác File Inclusion, hãy đọc mã nguồn trước, mình sẽ giải thích cho các bạn nguyên nhân xảy ra lỗi này là gì

Chọn Bao gồm tệp  -> Xem nguồn

Cơ sở64 sang jpg php

Select xong thì nó sẽ hiện ra phần source dẫn đến lỗi File Inclusion, code PHP cái này cũng dễ hiểu thôi

Cơ sở64 sang jpg php

Để mình giải thích cho các bạn đoạn mã PHP này.  

Máy chủ sẽ lấy dữ liệu từ người dùng ($_GET) thông qua trang biến. Nhìn URL bên dưới bạn sẽ hiểu.

Cơ sở64 sang jpg php

Bạn có thể thấy biến trang lấy dữ liệu từ người dùng (ở đây là tệp file1. php), sau đó nó sẽ thực thi tệp này, quá đơn giản haha.

Lỗi xảy ra khi chúng ta có thể tận dụng biến trang để đọc các tệp cảm ứng trên Máy chủ.

Máy chủ hiện tại đang được sử dụng là Linux, dưới đây là danh sách tệp cảm ơn bạn có thể đọc

  • /etc/passwd. Thông báo user trên Server
  • /etc/shadow. Thông tin về mật khẩu của người dùng trên Máy chủ
  • /proc/phiên bản. Thông tin về Phiên bản Linux Kernel
  • /nguồn gốc/. ssh/id_rsa. Thông tin private SSH keys of root (dùng để truy cập kết nối SSH mà không cần mật khẩu)
  • /var/log/apache2/truy cập. đăng nhập. Thông báo các yêu cầu trên Máy chủ Apache (có thể sử dụng để Reverse Shell)

Ok, giờ chúng ta sẽ tận dụng lỗi này để bắt đầu đọc tệp /etc/passwd xem có hiệu quả không?

Cơ sở64 sang jpg php

Wow, chúng ta đã đọc được file /etc/passwd trên Server nhưng có vẻ hơi khó nhìn một chút, một thủ thuật nhỏ dành cho bạn là hãy xem Mã nguồn để dễ nhìn hơn

Cơ sở64 sang jpg php

Chúng ta có thể sử dụng Path Traversal để đọc /etc/passwd nữa nhé, nhìn bên dưới sẽ hiểu

Cơ sở64 sang jpg php

Mình sẽ giải thích tại sao chúng ta lại sử dụng. /. /. /. /. /. /etc/passwd

Cơ sở64 sang jpg php

Ok, giờ thì dễ nhìn hơn rất nhiều rồi nhỉ, kết quả của công việc khai thác là chúng ta có thể đọc được file trên Server. Bạn có thể áp dụng để đọc một số tệp khác mà mình đã ghi chú bên trên

Thực hiện hành động đọc thử rồi bạn sẽ biết nhé. Đôi lúc sẽ có một số tập tin chúng ta không đọc được do Permission Denied (Không có quyền truy cập)

Điển hình là khi ta đọc tệp /etc/shadow

Cơ sở64 sang jpg php

Ok, giờ bạn có thể tận dụng lỗi này để bắt đầu đọc một số tệp khác trong thời hạn cho phép 🙂 Thực hành đọc thử là biết ngay mà hihi

# Bao gồm tập tin từ xa

Local file Inclusion có thể giúp chúng ta đọc file trên Server, đây chỉ là một dạng File Inclusion bị lỗi. Còn một định dạng khác được gọi là Bao gồm tệp từ xa

Điều kiện để xả RFI là allow_url_fopen = Bật

Nhìn hình bên dưới bạn sẽ hiểu

Cơ sở64 sang jpg php
Open Google Search luôn mới ghê

Cơ sở64 sang jpg php

Qua 2 ví dụ bên trên chắc bạn cũng hiểu về Remote File Inclusion rồi nhỉ??

#2 Continue with Medium

Theo kinh nghiệm ngâm cú của mình thì các bạn cứ học từ, không việc gì phải gấp cả, chúng ta học từ cơ bản, ôm thì học những cái cao hơn sễ đơn giản rất nhiều

Thôi, giờ hãy chỉnh DVWA Security lên mức Medium và bắt đầu đọc Source code của File Inclusion nhé

Cơ sở64 sang jpg php

Đoạn code ở mức Medium có về không dễ cho lắm nhỉ haha???

  • Dòng đầu vẫn là truy xuất dữ liệu từ người dùng ($_GET) thông qua biến trang
  • 2 hàm str_replace() sẽ thay thế http. // , https. // , . / , . \\ to “”  (mất tiêu) trong chuỗi mà chúng ta

Nghĩa là

  • http. //Google. com to google. com
  • https. //Google. com to google. com
  • /etc/passwd to etc/passwd
  • \\etc/passwd to etc/passwd

Try to one cái is hiểu ngay

Cơ sở64 sang jpg php

Cơ sở64 sang jpg php

Nếu sử dụng cách khai thác cũ thì chúng ta sẽ bị bắt ngay. Ở mức Máy chủ trung bình đã sử dụng một số cơ chế lọc mà mình vừa phân tích ở trên

Do đó, phần này, chúng ta cần phải sử dụng một số kỹ thuật để bỏ qua

Cơ sở64 sang jpg php

Nếu nó xóa https. //, http. // of them ta thì chúng ta chỉ cần thay đổi một ký tự thành trong hoa là xong. Ví dụ Https. // , htTps. // , httP. // ,…

Cơ sở64 sang jpg php

Bạn có thể thấy mình đang sử dụng. . / . /. . / . /. . / . /. . / . /. . / . /. . / . /etc/passwd

Máy chủ sẽ xóa chuỗi của chúng ta (máy cái tô đỏ sẽ bị xóa), nó sẽ thành. /. /. /. /. /. /etc/passwd. Vậy là đã đọc được file /etc/passwd rồi 🙂

Cơ sở64 sang jpg php

Vận chuyển đầu óc một chút để suy nghĩ ra những cách bỏ qua khác nhé

Ok, giờ thì chúng ta có thể bỏ qua mức Medium để đọc file rồi đây, thú vị không????

#3 Cấp độ cao

Chỉnh level lên High rồi bắt đầu thực hiện nào các bạn. Đầu tiên hãy xem Mã nguồn để xem nó sử dụng cái gì để bảo vệ bất kỳ

Cơ sở64 sang jpg php

Nhìn nguồn cũng hơi cay đó các bạn. Together mình phân tích nào

– Dòng đầu tiên vẫn là lấy tham số thông qua trang biến từ người dùng

– Hàm nếu có 2 điều kiện

  • chuỗi ta nhập vào không được bắt đầu bằng từ “file” ( hàm fnmatch() )
  • không bao gồm “bao gồm. php“

Nếu 2 điều kiện đó thõa mãn thì ta sẽ nhận được một thông báo LỖI. Không tìm thấy tệp

Cơ sở64 sang jpg php

Cơ sở64 sang jpg php

Thực tế, sử dụng bỏ qua ở mức Trung bình sẽ không có tác dụng trong trường hợp này. Và để bỏ qua thì chỉ cần sử dụng thủ thuật đơn giản thôi

Cơ sở64 sang jpg php

Đó là một số cách bỏ qua các cấp độ trong DVWA khi chúng tôi gặp lỗi Bao gồm tệp cục bộ. Nhưng thực tế, khá ít Máy chủ sử dụng các chế độ máy lọc như vậy

Phân này, chúng ta đã biết cơ bản lỗi Local File Inclusion nói riêng hay File Inclusion nói chung, phần bên dưới, mình sẽ hướng dẫn thêm cách bypass thực tế nhất

# Đọc tệp dữ liệu. php 🙂

Quay lại và tùy chỉnh DVWA ở mức Medium, chúng ta sẽ bắt đầu thực hiện

Bộ lọc PHP

Thông thường khi khai thác LFI, chúng ta không thể đọc được các tập tin. php đơn giản vì nó sẽ thực thi thay vì chúng ta đọc

Điều đó sẽ được giải quyết với Bộ lọc PHP, thông qua các hàm này, chúng ta có thể đọc nội dung của các tệp. php trên máy chủ

Nhưng một lưu ý là chúng ta chỉ có thể đọc các tệp này dưới dạng Base64 hoặc ROT13

#cơ sở64

Mình sẽ tiến hành đọc file bao gồm. php information through PHP Filter under format base64 for you easy hình dung

Payload of they ta có dạng. http. //127. 0. 0. 1/DVWA/vulnerabilities/fi/?page= php. // lọc/chuyển đổi. base64-encode/resource= bao gồm. php

Cơ sở64 sang jpg php

Sau khi tiến hành giải mã base64, chúng ta sẽ nhận được đoạn mã của tập tin bao gồm. php

Cơ sở64 sang jpg php

#ROT13

Ok, giờ mình sẽ đọc code của file bao gồm. php dưới dạng ROT13 nhé

Payload of they ta có dạng. http. //127. 0. 0. 1/DVWA/vulnerabilities/fi/?page= php. //bộ lọc/đọc=chuỗi. rot13/resource= bao gồm. php

Cơ sở64 sang jpg php

Cơ sở64 sang jpg php
Giải mã ROT13 ra mã bao gồm. php

Giờ bạn hoàn toàn có thể sử dụng thủ thuật đó để đọc các tệp. php thông qua lỗi Bao gồm tệp cục bộ, cảm nghĩ của bạn lúc này thế nào????

Ok, bên trên là những gì bạn cần biết về lỗi Bao gồm tệp cục bộ, hi vọng bài viết sẽ giúp bạn nâng cao trình độ