Tấn công Directory Traversal là gì?
Kiểm soát hợp lí truy cập nội dung trang web là yếu tố quyết định trong việc điều hành một máy chủ bảo mật. Directory traversal là một khai thác HTTP cho phép tin tặc truy cập đến những chỉ mục bị giới hạn, thực thi lệnh bên ngoài chỉ mục gốc của máy chủ web. Máy chủ web cung cấp hai mức cơ chế ...
Kiểm soát hợp lí truy cập nội dung trang web là yếu tố quyết định trong việc điều hành một máy chủ bảo mật. Directory traversal là một khai thác HTTP cho phép tin tặc truy cập đến những chỉ mục bị giới hạn, thực thi lệnh bên ngoài chỉ mục gốc của máy chủ web.
Máy chủ web cung cấp hai mức cơ chế bảo mật chính:
- Access Control Lists (ACLs)
- Root directory
Access Control List được sử dụng trong quá trình xác thực. Đây là danh sách quản trị viên máy chủ sử dụng để xác định người dùng hay nhóm nào đó có thể truy cập, thay đổi hoặc thực thi những file cụ thể trên máy chủ cũng như những quyền truy cập khác.
Chỉ mục gốc là chỉ mục đặc biệt trên file hệ thống máy chủ mà người dùng bị hạn chế trong đó. Người dùng không thể truy cập bất cứ thứ gì trong chỉ mục này. Ví dụ chỉ mục gốc mặc định của IIS trên Windows là C:Inetpubwwwroot và với cài đặt này, người dùng không thể truy cập vào C:Windows nhưng có thể truy cập vào C:Inetpubwwwroot ews, bất kì chỉ mục nào khác và file nằm dưới chỉ mục gốc (giả thiết rằng người dùng hợp lệ trong ACL).
Chỉ mục gốc ngăn người dùng truy cập những file nhạy cảm trên máy chủ như cmd.exe trên Windows hay passwd trên Linux/UNIX. Để thực hiện một cuộc tấn công Directory Traversal, tất cả những gì tin tặc cần là một trình duyệt web và một số kiến thức tìm ra nơi chứa file và chỉ mục trên hệ thống.
Những gì tin tặc có thể làm nếu website của bạn có lỗ hổng
Với một hệ thống tồn tại lỗ hổng directory traversal, tin tặc có thể lợi dụng nó để tìm ra chỉ mục gốc và truy cập một phần của file hệ thống. Điều này cho phép tin tặc xem những file bị giới hạn hay nguy hiểm hơn là tin tặc có thể thực thi những lệnh mạnh trên máy chủ, dẫn đến xâm hại hoàn toàn hệ thống. Tin tặc sẽ thực thi những lệnh giả mạo thành thành viên của trang web. Do đó kiểu tấn công hoàn toàn phụ thuộc vào cách thiết đặt người dùng trang web được phép truy cập những gì trong hệ thống.
Ví dụ về tấn công Directory Traversal thông qua Code ứng dụng web
Trong ứng dụng web với những trang động, đầu vào luôn nhận từ trình duyệt thông qua phương thức request GET và POST. Đây là ví dụ về HTTP GET request URL
GET http://test.webarticles.com/show.asp?view=oldarchive.html HTTP/1.1 Host: test.webarticles.com
Với URL này, trình duyệt yêu cầu một trang động show.asp từ máy chủ và kèm theo một thông số view với giá trị từ oldarchive.htm từ file hệ thống của máy chủ, sau đó gửi quay trở lại trình duyệt hiển thị với người dùng. Tin tặc cho rằng show.asp có thể dẫn được đến file từ file hệ thống và gửi một URL sau:
GET http://test.webarticles.com/show.asp?view=../../../../../Windows/system.ini HTTP/1.1 Host: test.webarticles.com
Lệnh trên khiến trang web động nhận file system.ini từ hệ thống và hiển thị nó đến người dùng. Dấu ../ định hướng hệ thống tiến lên một chỉ mục. Tin tặc có thể đoán cần vượt qua bao nhiêu chỉ mục để tìm được thư mục Windows trên hệ thống thông qua nhiều lần thử và thông báo lỗi.
Ví dụ về tấn công Directory Traversal thông qua máy chủ web
Ngoài lỗ hổng trong code, máy chủ web cũng có thể tồn tại lỗ hổng tấn công Directory Traversal. Vấn đề này có xảy ra tại những phần mềm đi kèm máy chủ hoặc những file script có sẵn. Lỗ hổng được vá trong những phiên bản phần mềm máy chủ web mới nhất nhưng vẫn có nhiều máy chủ trực tuyến sử dụng phiên bản ISS và Apache cũ. Một vài lỗ hổng trong script mặc định cũng là nơi tin tặc tìm đến.
Ví dụ, một URL request sử dụng chỉ mục script của IIS để duyệt chỉ mục và thực thi lệnh:
GET http://server.com/scripts/..%5c../Windows/System32/cmd.exe?/c+dir+c: HTTP/1.1 Host: server.com
Yêu cầu này sẽ trả về cho người dùng một danh sách toàn bộ file trong chỉ mục C: bằng cách thực thi cmd.exe và dir c: . Kí tự %5c thể hiện trong URL request là một escape code để thể hiện một kí tự thông thường. Trong trường hợp này %5c đại diện cho .
Những phiên bản mới hơn của máy chủ kiểm tra escape code và không cho phép chúng thực hiện. Một vài phiên bản cũ hơn không lọc được code này trong chỉ mục gốc khiến tin tặc thực hiện được những lệnh khác nhau.
Làm thế nào để kiểm tra lỗ hổng Directory Traversal
Cách tốt nhất để kiểm tra liệu trang web hay ứng dụng web có tồn tại lỗ hổng Directory Traversal là sử dụng Web Vulnerability Scanner. Nó sẽ giúp bạn quét toàn bộ trang web và tự động kiểm tra lỗ hổng. Sau đó báo cáo và bạn có thể dễ dàng sửa chữa. Bên cạnh lỗ hổng Directory Traversal, Web Vulnerability Scanner còn tìm ra những SQL Injection, Cross-site Scripting và những lỗ hổng khác.
Ngăn ngừa tấn công Directory Traversal
Trước hết, đảm bảo rằng bạn cài đặt máy chủ web với phần mềm mới nhất, các bản vá có sẵn đã được áp dụng. Thứ hai, cần có bộ lọc cho bất kì dữ liệu đầu vào từ người dùng.
acunetix