Hướng dẫn php include path exploit - php bao gồm khai thác đường dẫn
I. Mở đầuTiếp theo trong series về khai thác lỗ hổng trong tấn công ứng dụng web , bài viết này mình sẽ hướng dẫn các bạn về 1 cách tấn công phổ biến hơn , đó là File Inclusion trong lập trình PHP Show II. Khái niệmFIle Inclusion cho phép kẻ tấn công có thể xem các tệp trên máy chủ từ xa mà không cần nhìn thấy hoặc có thể thực thi các mã vào 1 mục tiêu bất kì trên trang web . cho phép kẻ tấn công có thể xem các tệp trên máy chủ từ xa mà không cần nhìn thấy hoặc có thể thực thi các mã vào 1 mục tiêu bất kì trên trang web . Điều này xảy ra là do trong code php web , lập trình viên đã sử dụng các lệnh Dấu hiệu để nhận biết rằng trang web có thể tấn công file inclusion là đường link thường có dạng php?page=,hoặc php?file= .... Để biết trang web có bị lỗi này hay không ta chỉ cần thêm 1 dấu ' vào đường link , ví dụ như là
Nguyên nhân gây ra lỗi này là khi sử dụng các lệnh trên, lập trình viên lại gọi các file cần mở thông qua biến. Các biến này hoặc chưa được khởi tạo, hoặc do người dùng quyết định. File Inclusion có thể dẫn đến các cuộc tấn công sau :
Trong bài viết này , mình sẽ nói về 2 kiểu của FI , đó là Local File Inclusion và Remote File Inclusion Local File Inclusion và Remote File Inclusion III. Các kiểu tấn công1. Local File InclusionLocal file inclustion (LFI) là kĩ thuật đọc file trong hệ thống , lỗi này xảy ra thường sẽ khiến website bị lộ các thông tin nhảy cảm như là Trong bài viết này , mình sẽ đưa ra các ví dụ được làm trên Damn Vulnerable Web App hay còn được gọi là DVWA Trong một cuộc tấn công LFI cơ bản , chúng ta sẽ sử dụng local file inclusion để thu thập thông tin trên máy chủ từ xa và khai thác nó để có thể chiếm được quyền root shell . Sau khi set độ khó là low trên DVWA , chúng ta sẽ có giao diện như thế này :
Ở đây chúng ta thấy Đầu tiên, chúng ta cần phải biết về những thứ có thể tìm thấy trong 1 trang web , tức là các đường dẫn phổ biến , và được công nhận trên toàn thế giới . Ở đây , mình sẽ sử dụng payload có sẵn trên github để miêu tả cuộc tấn công và đó là /etc/passwdpayload có sẵn trên github để miêu tả cuộc tấn công và đó là /etc/passwd Nhưng trước khi vào được /etc/passwd , chúng ta cần nhập đủ các thư mục trước đó để đưa chúng ta trở lại thư mục gốc . Trong trường hợp này chúng ta sử dụng Path Traversal để truy cập tệp /etc/passwd./etc/passwd , chúng ta cần nhập đủ các thư mục trước đó để đưa chúng ta trở lại thư mục gốc . Trong trường hợp này chúng ta sử dụng Path Traversal để truy cập tệp /etc/passwd.
Trong ảnh dưới đây là ví dụ minh hoạ về cây thư mục của linux Như chúng ta thấy để có thể đến được thư mục etc, chúng ta cần phải sử dụng Và chúng ta thu được kết quả : Khi chúng ta thực hiện cuộc tấn công này, thường chúng ta không thực sự biết cách hoạt động thư mục của ứng dụng ,nó thường có thể nằm ở rất sâu trong các thư mục hoặc nằm trong thư mục home của user . Vì vậy để có thể trở lại thư mục gốc , chúng ta cần chắc chắn rằng đường dẫn của chúng ta bao gồm đầy đủ các thư mục ở trước đó , và có lẽ đây là một cuộc tấn công giả tưởng , vì chúng ta cần phải đoán xem nó ở đâu .
Để có thể đến được thư mục root và đến /etc/passwd , mình đã phải quay lại trước đó đến tận 14 thư mục ( điều này là không giống nhau , tuỳ thuộc vào cách bạn cài đặt và sử dụng DVWA) Và nếu như đã đến được đây , tất nhiên , điều này không giới hạn bạn chỉ đến đường dẫn /etc/passwd mà có thể đến bất cứ thư mục nào khác trên ứng dụng web có tồn tại Đây là 1 trong các cách cơ bản để tấn công file inclusion , ngoài ra bạn có thể tham khảo các cách tấn công khác cũng trên DVWA ở những mức độ cao hơn :
2. Remote File InclusionRemote File Inclusion còn được viết tắt là RFI cho phép kẻ tấn công nhúng một mã độc hại được tuỳ chỉnh trên trang web hoặc máy chủ bằng cách sử dụng các tập lệnh . RFI còn cho phép tải lên một tệp nằm trên máy chủ khác được chuyển đến dưới dạng hàm PHP ( Đây là một lỗ hổng rất phổ biến do việc sử dụng hàm include rất nhiều và cũng là thiết đặt mặc định của server như là set Để thực hiện cuộc tấn công này , chúng ta sẽ thử nhúng các url vào trang web có sẵn : Ở đây mình sẽ thử nhúng trang google vào và thu được kết quả : Vậy là trang web mà mình muốn tấn công cho phép tải lên trang web khác. Điều này dẫn đến việc mình có thể nhúng các lệnh php mà mình muốn lên trang web và thực thi các lệnh đó Để làm vậy mình tạo 1 file tên là script.html có nội dung như sau :script.html có nội dung như sau :
Sau đó mình nhúng link file này vào trong trang web mình muốn tấn công và thu được kết quả : Tuy nhiên, thường thì chúng ta sẽ không thể dễ dàng như vậy để khai thác lỗ hổng này trên 1 trang web. Ở ví dụ tiếp theo này , hàm str_replace() sẽ xoá tất cả các giá trị được gán như là Điều này khiến chúng ta không thể nhập link như thế này được nữa :
Vậy để bypass qua hàm str_replace() chúng ta làm thế nào ? Bời vì hàm này sẽ xoá giá trị
Chúng ta sẽ chèn thêm 1 giá trị http:// vào giữa giá trị Đây là những cách cơ bản để bạn có thể tiếp cận và khai thác môt trang web , bước tiếp theo tuỳ thuộc vào mục đích cá nhân của bạn và trang web bạn muốn khai thác lỗ hổng này. IV. Phòng tránh :
Tài liệu tham khảo :
|