Path Traversal Attack là gì?

Path Traversal Attack là gì?

1.  Giới thiệu.

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. Path traversal là một khai thác HTTP cho phép hacker 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. Nếu như truy cập thành công thì hacker có thể xem được các file, thư mục bị giới hạn và thực thi được các câu lệnh trên server mắc lỗi này đều không kiểm tra đầu vào dữ liệu được gửi từ client. Path Traversal hay còn được biết với một số tên khác như “dot-dot-slash”, “directory traversal”,”directory clumbing” và “backtracking”

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

Máy chủ web cung cấp hai mức cơ chế bảo mật chính:

  • Access Control Lists (ACLs)
    thumuc

 

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

 

 

Access Control List

Trên web server thì người dùng chỉ được phép truy cập vào thư mục, file mà người quản trị chỉ định trước gọi là Access Control List . Tại đậy thì người dùng có thể làm một số thao tá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 web server.

Chỉ mục gốc

Chỉ mục đặc biệt trên file hệ thống máy chủ mà người dùng bị hạn chế sử dụng. Người dùng không thể truy cập bất cứ thứ gì trong chỉ mục này.

Ví dụ: bạn dùng WAMP là web server thì thư mục gốc là C:\wamp\www. 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 List. 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 thư mục nguy hiểm cho hệ thống như cmd.exe trên Windows hay passwd trên Linux/UNIX

Nếu như web server bị lỗi Path 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, thư mục bị hạn chế của hệ thống.

Để khai thác lỗi Path traversal thì hacker thường khai thác dựa trên:

  • Ứng dụng trên web server
  • Lỗi của web server

2.    Những gì hacker 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 path traversal, hacker 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 hacker xem những file bị giới hạn hay nguy hiểm hơn là hacker 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. hacker 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 Path 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. Hacker 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. Hacker 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 Path 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 Path 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 hacker 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 hacker thực hiện được những lệnh khác nhau.

3.   Làm thế nào để kiểm tra lỗ hổng Path 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 Path 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 Path Traversal, Web Vulnerability Scanner còn tìm ra những SQL Injection, Cross-site Scripting và những lỗ hổng khác.

4.    Ngăn ngừa tấn công Path 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.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">