GIỚI THIỆU VỀ CÔNG CỤ FIMAP
Lỗ hổng Local File Inclusion và Remote File Inclusion
Lỗ hổng Local File Inclusion (LFI) là một lỗ hổng bảo mật trên máy chủ web, cho phép tin tặc truy cập trái phép vào các tệp tin nhạy cảm hoặc thực thi các tệp tin độc hại thông qua chức năng “include” Nguyên nhân chính của lỗ hổng này là do cơ chế kiểm tra đầu vào không được thực hiện một cách nghiêm ngặt, tạo điều kiện cho tin tặc khai thác và chèn dữ liệu độc hại vào hệ thống.
Trước khi đi sâu vào lỗ hổng LFI, cần hiểu về hàm “include()”, cho phép sao chép nội dung từ một tệp cụ thể vào tệp khác Lệnh “include” giúp tiết kiệm thời gian bằng cách tránh viết lại mã và cho phép tái sử dụng code Các lập trình viên thường sử dụng lệnh này để thêm dữ liệu và mã nguồn chung cho toàn bộ chương trình.
Kẻ tấn công có thể khai thác lỗ hổng Local File Inclusion (LFI) để khiến ứng dụng web tiết lộ hoặc thực thi các tệp trên máy chủ Cuộc tấn công LFI có thể dẫn đến rò rỉ thông tin nhạy cảm và thực thi mã từ xa LFI thường xảy ra khi ứng dụng chấp nhận đường dẫn tệp làm tham số đầu vào và coi đó là đáng tin cậy.
Hình 1.1 Trang web sử dụng đường dẫn đến tệp làm tham số đầu vào
Lỗ hổng RFI (Remote File Inclusion) tương tự như LFI (Local File Inclusion), nhưng khác ở chỗ nó cho phép thực thi tệp từ xa thay vì tệp trên máy chủ Kẻ tấn công có thể lợi dụng RFI để thực thi mã độc, gây ra những rủi ro nghiêm trọng cho hệ thống.
Mã độc có thể tấn công cả máy của người dùng lẫn máy chủ, với ảnh hưởng từ việc đánh cắp session token tạm thời đến việc tải lên webshell và mã độc để thực thi mã từ xa, dẫn đến xâm hại toàn bộ hệ thống máy chủ LFI (Local File Inclusion) tương tự như RFI (Remote File Inclusion), nhưng điểm khác biệt là trong LFI, kẻ tấn công cần tải tập lệnh độc hại lên máy chủ đích để thực thi cục bộ.
Hình 1.2: Cách thức tấn công LFI
LFI/RFI là những kiểu tấn công nguy hiểm, với nhiều CVE được công bố hàng năm Tấn công File Inclusion có thể gây hại hơn cả SQL Injection, vì vậy các nhà phát triển cần thực hiện các biện pháp khắc phục lỗ hổng này Một trong những biện pháp hiệu quả nhất là hạn chế quyền đọc và ghi hệ thống file dựa trên tham số người dùng Nếu cần thiết, cần thực hiện kiểm tra và lọc để loại bỏ các chuỗi đường dẫn như " \ \" hoặc " / /" khỏi tên file.
Công cụ Fimap
Fimap là một công cụ viết bằng Python, giúp tự động tìm kiếm, chuẩn bị, kiểm tra và khai thác các lỗi LFI và RFI trong ứng dụng web Tương tự như sqlmap, Fimap chuyên dụng cho việc phát hiện lỗi LFI/RFI thay vì SQL Injection Mặc dù hiện tại Fimap đang trong quá trình phát triển, nhưng nó vẫn có thể được sử dụng hiệu quả.
Fimap là công cụ giúp nâng cao tốc độ và khả năng tìm kiếm lỗ hổng một cách hiệu quả Nó tự động hóa quá trình quét, cho phép quét nhiều mục tiêu hoặc một mục tiêu duy nhất Chúng ta có thể thu thập dữ liệu từ trang web mục tiêu và xuất thông tin dưới dạng danh sách để quét hàng loạt Hơn nữa, Fimap cho phép tải lên các lệnh shell để thực thi mã từ xa Công cụ này có thể được cài đặt trên cả Linux và Windows, và có thể chạy qua giao diện dòng lệnh.
Hình 1.3: Giao diện chính của Fimap
Lịch sử phát triển
Fimap, được phát triển lần đầu vào tháng 9 năm 2009 bởi Iman Karim, hiện đang được Iman Karim tiếp tục đảm nhiệm vai trò trưởng dự án và nhà phát triển chính Đây là phiên bản 0.1 của Fimap.
Vào tháng 9 năm 2009, phiên bản 0.2 đã được ra mắt, mang đến nhiều tính năng mới và nâng cấp đáng kể so với phiên bản cũ.
10 tính năng dư thừa đã được loại bỏ Như loại bỏ file setup.py, cho phép quét trên giao thức https, …
- Cuối tháng 9 năm 2009, nhà phát triển đã cho ra mắt phiên bản 0.3 Đã có thêm chế độ Crawl và Logfile Injection
- Vào tháng 10 năm 2009, Fimap phiên bản 0.5 đã có thể chạy trên Windows và hoạt động cùng với Python 2.4
- Vào ngày 6 tháng 11 năm 2009, phiên bản 0.7 được phát hành
- Vào ngày 22 tháng 12 năm 2009, phiên bản 0.8 được phát hành là bản cập nhật đầy đủ các lỗi của phiên bản trước
- Tháng 2 năm 2010 chế độ tấn công lên Windows Server đã được ra mắt cùng với các plugins mới
- Vào ngày 22 tháng 3 năm 2010, Fimap phát hành phiên bản 0.9 Cho phép chèn code vào Header và Cookie
- Vào tháng 10 năm 2011, phiên bản 1.0 được phát hành
- Tháng 9 năm 2018, bản nâng cấp được cập nhật nhưng vẫn dựa trên phiên bản 1.0.
Kết chương
Chương 1 đã giới thiệu tổng quan về lỗ hổng LFI và RFI trên máy chủ web và công cụ Fimap Mặc dù đã được phát triển từ lâu nhưng hiện nay Fimap vẫn là một công cụ hữu ích giúp cho các nhà phát triển và những chuyên gia bảo mật kiểm thử hai lỗ hổng RFI/LFI trên ứng dụng web Qua đó giúp giảm thiểu tối đa nguy cơ bị trang web bị tấn công
CÁC TÍNH NĂNG VÀ CÀI ĐẶT
Các tính năng và tổ chức danh mục
Kiểm tra lỗi LFI/RFI của các URL riêng biệt, danh sách các URL hoàn toàn tự động
Có thể kiểm tra, phát hiện và thực hiện khai thác lỗi nhiều lỗi khác nhau liên quan đến tệp tin
Tự động xử lý đường dẫn tương đối/tuyệt đối,
Chế độ Blind cho các trường hợp máy chủ đã tắt thông báo lỗi
Chế độ Harvest cho phép thu thập tất cả URL từ một tên miền nhất định để phục vụ cho việc pentest sau này
Phù hợp với hệ điều hành Windows và có thể quét Windows Server,
Cho phép người dùng tạo shell và reverse shell trên hệ thống mục tiêu
Operating mode: Danh mục này cho biết các chế độ hoạt động của Fimap Đây là đối số bắt buộc phải có để Fimap có thể hoạt động được
-s để kiểm tra lỗi LFI/RFI cho một URL duy nhất
-m để kiểm tra lỗi cho một danh sách các URL, chế độ này thường đi kèm một danh sách có sẵn của người dùng
-H chế độ này sẽ thu thập tất cả các URL từ một URL gốc
Hình 2.1: Chế độ hoạt động
Techniques: Các kỹ thuật tấn công
Hình 2.2: Các kỹ thuật tấn công Variables: Các biến mà người dùng có thể truyền tham số vào để Fimap thực hiện kiểm tra trên đó
-u Địa chỉ URL mà người dùng muốn kiểm tra
-l Danh sách URL mà người dùng muốn kiểm tra, cần đi kèm với chế độ -m
Hình 2.3: Các biến Attack Kit: Bộ công cụ giúp cho người dùng có thể thực hiện tấn công lên
Hình 2.4: Các bộ công cụ khai thác Others: Các lựa chọn khác
Hình 2.5: Các lựa chọn khác
Để thu thập tất cả các đường dẫn và file trên máy chủ từ một URL mục tiêu, chúng ta có thể sử dụng chế độ Harvest Chạy lệnh như trong hình dưới đây và kết quả sẽ được lưu vào file.
Hình 2.6: Thu thập từ một URL
Hình 2.7: Nội dung file /home/kali/fimap/list.txt
Next, I will examine all the URLs in the file /home/kali/fimap/list.txt to check for LFI/RFI vulnerabilities, and I have discovered that two URLs in that list are compromised.
Hình 2.8: Kiểm tra tất cẩ URL từ một file
Hình 2.9: Kết quả sau khi kiểm tra tất cả URL
Cài đặt
Fimap hoạt động hiệu quả nhất trên hệ điều hành Linux, nhưng cũng có thể chạy trên Windows Trong bài viết này, tôi sẽ hướng dẫn cách cài đặt và sử dụng Fimap trên Kali Linux.
2.2.1 Các yêu cầu hệ thống:
Hệ điều hành: Kali Linux Có thể tải từ link https://www.kali.org/get-kali/ Chọn phiên bản cho hệ điều hành 64-bit và Python 2.6 trở lên
Các bước cài đặt Python
Hình 2.10: Cài đặt pip Bước 2: Cài đặt python
Hình 2.11: Cài đặt Python Bước 3: Kiểm tra Python đã được cài đặt
Các bước cài đặt python-httplib2
Bước 1: Cài đặt ca-certificate
Hình 2.13: Cài đặt ca-certificate Bước 2: Tải về và cài đặt gói python-httplib2
Fimap là một dự án mã nguồn mở, ta có thể tìm thấy mã nguồn trên github và dễ dàng tải về và sử dụng
Link: https://github.com/kurobeats/fimap
Hình 2.15: Mã nguồn cỉa Fimap
Hình 2.16: Tải Fimap từ mã nguồn
Sau khi đã tải về, ta di chuyển vào thư mục chứa Fimap và thực thi lệnh
/fimap.py -h để chạy chương trình
Hình 2.17: Giao diện của Fimap
Kết chương
Chương 2 đã giới thiệu công cụ Fimap, bao gồm các tính năng, cách hoạt động và hướng dẫn cài đặt trên Kali Linux, giúp người dùng có cái nhìn tổng quan về công cụ này Tiếp theo, trong chương 3, tôi sẽ tiến hành thử nghiệm tấn công bằng Fimap trên Kali Linux và đưa ra nhận xét về những ưu điểm và nhược điểm của công cụ này.
THỬ NGHIỆM CÔNG CỤ FIMAP
Môi trường thử nghiệm
Hiện nay, có nhiều trang web được thiết kế để thử nghiệm tấn công ứng dụng web, đặc biệt là tấn công LFI/RFI, như Hack the Box, CTF Learn, RootMe, DVWA, và Portswigger Một số trang có thể truy cập trực tuyến, trong khi một số khác yêu cầu cài đặt và cấu hình trong mạng LAN để sử dụng cục bộ Trong số đó, DVWA là một môi trường thử nghiệm tấn công lý tưởng, hoạt động trong mạng cục bộ, với nhiều lỗ hổng ở nhiều hạng mục Tuy nhiên, không nên sử dụng DVWA trên các hệ thống hosting công khai hoặc trên Internet, vì điều này có thể dẫn đến nguy cơ kẻ tấn công xâm nhập vào hệ thống qua các lỗ hổng này.
Máy tấn công: Hệ điều hành Kali Linux 2021.2, có cài đặt công cụ Fimap, địa chỉ IP 192.168.131.146
Máy nạn nhân: Hệ điều hành Kali Linux 2021.1, cài trang web DVWA, địa chỉ IP 192.168.131.150
Thử nghiệm tấn công
Bước 1: Xác định mục tiêu
Mục tiêu: http://192.168.131.150/dvwa/vulnerabilities/fi/?page=file1.php
Hình 3.3: Xác định ỦRL mục tiêu
Sau khi xác định mục tiêu, hãy sử dụng Fimap để kiểm tra lỗi trên URL đã chọn Lưu ý rằng trang DVWA yêu cầu xác thực, vì vậy cần thêm biến cookie để gửi kèm theo mỗi yêu cầu.
Hình 3.4: Kiểm tra URL với Fimap
Sau khi đã kiểm tra xong, em thu được kết quả là có 1 lỗ hổng File Inclusion với các thông tin:
- URL: http://192.168.126.135/DVWA/vulnerabilities/fi/?page=file1.php
- Tham số bị lỗi: page
- File có thể đọc được: /etc/passwd
Hình 3.5: Các lỗi của URL
Bước 3: Sau khi xác định lỗ hổng, sử dụng lệnh /fimap.py -x để khai thác lỗ hổng Danh sách các tên miền có lỗ hổng vừa được Fimap quét sẽ hiện ra, và bạn cần chọn tên miền mục tiêu để tấn công.
Danh sách các tên miền có lỗ hổng
Fimap sẽ liệt kê các URL có lỗ hổng bảo mật Người dùng có thể chọn URL theo ý muốn, và Fimap sẽ tiến hành chèn mã PHP vào các lỗ hổng đó.
If successful, Fimap will display a notification, allowing us to either use Fimap's existing shell code or create a custom reverse shell In this lab, I will utilize Fimap's shell code.
Hình 3.8: Thông báo của Fimap
Shell code được chèn thành công lên máy chủ Bây giờ em sẽ thực hiện các lệnh shell để lấy những thông tin quan trọng của hệ thống như:
- Phiên bản hệ điều hành
- Đọc nội dung của file /etc/passwd Đây là một file quan trọng trọng Linux
- Xem các tiến trình đang chạy trên máy chủ
Hình 3.9: Thông tin file /etc/passwd
Hình 3.10: Thông tin hệ điều hành và các tiến trình đang chạy
Kẻ tấn công hiện có khả năng thực thi mọi lệnh trên máy chủ và nếu đủ kỹ năng, có thể tải mã độc lên đó Trong bài lab này, tôi sẽ thử tải một file từ internet về và thực thi nó trên máy nạn nhân.
Hình 3.11: Thực hiện tải file từ internet về máy chủ
Hình 3.12: Tải file thành công
Ưu điểm
- Công cụ tấn công và khai thác LFI/RFI mạnh
- Dễ dàng làm quen và sử dụng
- Hỗ trợ nhiều chức năng hơn một số công cụ cùng loại
Nhược điểm
- Không có giao diện GUI
- Được phát triển từ lâu và ít cập nhật
So sánh với các công cụ khác
DirBuster là một công cụ Java mạnh mẽ, được phát triển để thực hiện brute-force các đường dẫn và thư mục trên máy chủ web, bao gồm cả những đường dẫn và thư mục ẩn Để sử dụng DirBuster hiệu quả, người dùng cần xác định rõ server mục tiêu, có thể là địa chỉ IP hoặc tên miền của website.
To perform a brute-force attack using DirBuster, first specify the target IP or domain and port, then set up a dictionary, which can either be an existing one provided by the tool or a custom file you create DirBuster will send numerous GET or HEAD requests to the server and monitor the responses received.
Dirbuster là công cụ tích hợp sẵn trong Kali Linux, hỗ trợ quét đa luồng với giao diện GUI thân thiện, nhưng chỉ giới hạn trong việc quét các file và đường dẫn Ngược lại, Fimap không có giao diện GUI, không có sẵn trong Kali Linux, nhưng lại cung cấp chế độ khai thác lỗ hổng hiệu quả.
Hình 3.13: Cây thư mục của Dirbuster
Dirb là công cụ quét nội dung web có sẵn trong các phiên bản của Kali
Linux hoạt động bằng cách thực hiện cuộc tấn công từ điển vào máy chủ web và xử lý phản hồi Dirb cung cấp một từ điển đa dạng, cho phép người dùng sử dụng nhiều file từ điển khác nhau trong mỗi lần quét.
Dirb không hỗ trợ tính năng đa luồng, điều này gây khó khăn và bất tiện cho người dùng Công cụ này chỉ có khả năng thu thập các file và thư mục ẩn trên trang web, nhưng không hỗ trợ việc khai thác nội dung của trang web.
Hình 3.14: Giao diện của Dirb
Kết chương
Chương 3 đã trình bày chi tiết về quả trình cài đặt môi trường và thử nghiệm tấn công bằng công cụ Fimap Từ đó rút ra được những ưu điểm và nhược điểm của công cụ so với các công cụ khác cùng loại