Directory Traversal Attack là gì?

Directory Traversal là một dạng tấn công cho phép hacker truy cập vào các thư mục (folder) và tập tin cấm trên máy chủ (Web Server). Nếu như truy cập thành công thì hacker có thể xem được các file, thư mục cấm và thực thi các câu lệnh trên máy chủ.

Đa số các máy chủ mắc lỗi này đều không kiểm đầu vào dữ liệu được gửi từ phía máy khách (Client). Dạng tấn công này còn có tên gọi khác như Dot-Dot-Slash, Directory Climbing, Path Traversal và Backtracking.

Máy chủ có 2 cơ chế bảo mật để bảo vệ các file và thư mục:

  1. Access Control Lists
  2. Thư mục gốc (Root directory)

Access Control Lists

Trên máy chủ thì người dùng chỉ được phép truy cập vào các thư mục, file mà người quản trị đã chỉ định từ trước gọi là Access Control Lists (ACLs). Tại đây thì người dùng có thể làm một số thao khác bình thường như truy cập, chỉnh sửa và thực thi một số file nào đó trên máy chủ. Access Control Lists là danh sách các file và thư mục mà người dùng được phép truy cập.

Thư mục gốc (Root directory)

Ngoài ra còn có một thư mục mà người dùng không được phép truy cập chính là thư mục gốc (Root directory) vì đây chính là thư mục gốc của máy chủ. Người dùng chỉ có truy cập file và thư mục trong phạm vi cho phép của Access Control Lists ngoài ra không được phép truy cập vào các thư mục khác trên hệ thống.

Ví dụ: giả sử bạn dùng WAMP là máy chủ thì thư mục gốc là C:\wamp\www, tất nhiên là người dùng không được phép truy cập vào các thư mục có đường dẫn như C:\Windows, C:\Windows\System32, C:\Program Files và tất cả các thư mục nằm ngoài thư mục gốc. Người dùng chỉ được phép truy cập các thư mục và file dưới thư mục gốc với sự cho phép của Access Control Lists. Thông thường thì thư mục gốc thường ngăn cản người dùng truy cập vào các file nguy hiểm trên hệ thống như cmd.exe trên Windows và file passwd trên Unix/Linux.

Nếu như máy chủ bị lỗi Directory Traversal thì hacker sẽ tìm cách truy cập vào các thư mục cao hơn thư mục gốc. Từ đó hacker có thể xem được toàn bộ các file và thư mục cấm trên hệ thống như file passwd trên Unix/Linux nguy hiểm hơn là có thể thực thi các câu lệnh trên máy chủ.

Để khai thác được lỗi Directory Traversal thì hacker thường khai thác dựa vào:

  • Ứng dụng trên máy chủ.
  • Lỗi của máy chủ.

Khai thác dựa trên ứng dụng web

Các trang web bị lỗi Directory Traversal thường là các trang web động, đầu vào dữ liệu được gửi từ phía máy khách thông qua giao thức GET hoặc POST chính vì vậy mà hacker lợi dụng điều này để khai thác, ví dụ:

[code]http://example.com/index.php?view=archive.html[/code]

Nhìn vào URL này thì ta sẽ thấy là phía máy khách gửi yên cầu truy vấn file index.php đến máy chủ và kèm theo tham số view với giá trị là archive.html. Máy chủ sẽ thực hiện truy vấn được gửi từ phía máy khách, trang index.php sẽ lấy file archive.html trên máy chủ và sau đó gửi về phía máy khách, người dùng lúc này sẽ thấy được nội dung của file archive.html. Lợi dụng điều này hacker sẽ gửi các truy vấn sau để xem được file hệ thống:

[code]http://example.com/index.php?view=../../../../boot.ini[/code]
Khai thác Directory Traversal dựa trên lỗi của ứng dụng web

Với truy vấn này thì file index.php sẽ lấy nội dung của file boot.ini gửi về phía của máy khách. Biểu thức ../ dùng truy cập đến thư mục cao hơn thư mục hiện tại. Ngoài ra, hacker còn có thể mã hoá biểu thức ../ thành %2e%2e%2f, ví dụ:

[code]http://example.com/index.php?view=%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fboot.ini[/code]

Nếu như máy chủ sử dụng hệ điều hành Unix/Linux thì hacker có thể truy cập đến file passwdshadow, ví dụ:

[code]http://example.com/index.php?view=../../../../etc/passwd[/code]
Khai thác Directory Traversal dựa trên lỗi của ứng dụng web
[code]http://example.com/index.php?view=../../../../etc/shadow[/code]
Khai thác Directory Traversal dựa trên lỗi của ứng dụng web

Sau khi xem được nội dung của 2 file này thì hacker có thể dùng công cụ John The Ripper để bẻ khóa mật khẩu.

Khai thác dựa trên máy chủ

Để khai thác lỗi Directory Traversal thì hacker còn có thể dựa vào lỗi của máy chủ. Thường thì lỗi này xuất hiện ở một số phiên bản cũ của các máy chủ như IIS, Apache. Nhưng ở các phiên bản mới hơn thì lỗi này đã được sửa.

Ví dụ hacker có thể gửi truy vấn sau để hiển thị các file và thư mục trên hệ thống:

[code]http://example.com/scripts/..%5c..%5c../Windows/System32/cmd.exe?/c+dir+c:\[/code]
Khai thác Directory Traversal dựa trên lỗi của máy chủ

Với truy vấn trên thì máy chủ sẽ gọi file cmd.execmd.exe sẽ thực hiện lệnh dir c:\

Bằng cách này hacker có thể xem được toàn bộ file và thư mục ở ổ đĩa C.

Ký tự %5c là ký tự \ nhưng đã được mã hoá. Ngoài ra hacker còn có thể mã hoá ký tự \ đến 2 lần.

[code]http://example.com/scripts/..%255c..%255c../Windows/System32/cmd.exe%3F/c+dir+c%3A%5C[/code]

No comments:

Powered by Blogger.