Các lỗ hổng trong phần mềm máy chủ web

Một phần của tài liệu Bài giảng An toàn ứng dụng web và cơ sở dữ liệu: Phần 1 (Trang 70 - 72)

Các lỗ hổng thƣờng gặp trong các phần mềm máy chủ web bao gồm: lỗ hổng tràn bộ đệm, lỗ hổng cho phép duyệt đƣờng dẫn và lỗ hổng trong mã hóa và chuẩn hóa.

3.1.3.1. Lỗ hổng tràn bộ đệm

Các lỗ hổng tràn bộ đệm (Buffer overflow vulnerabilities) là một trong các dạng lỗ hổng điển hình có mức nghiêm trọng rất cao. Các lỗ hổng dạng này cho phép tin tặc chèn và thực hiện mã độc từ xa, có thể giúp tin tặc giành quyền điều khiển hệ thống. Một số lỗ hổng tràn bộ đệm điển hình đã biết trong các phần mềm máy chủ web, bao gồm lỗi tràn bộ đệm trong Microsoft IIS ISAPI Extensions, lỗi tràn bộ đệm trong Apache Chunked Encoding, lỗi tràn bộ đệm trong Microsoft IIS WebDav và lỗi tràn bộ đệm trong iPlanet Search.

Lỗi tràn bộ đệm trong Microsoft IIS ISAPI Extensions là lỗi đƣợc phát hiện trong bộ xử lý ISAPI đi kèm máy chủ web Microsoft IIS 4 và 5. Các bộ xử lý ISAPI cho phép dịch và thực hiện các loại mã chƣơng trình trên máy chủ, nhƣ ASP. Một số bộ xử lý ISAPI chứa các lỗi tràn bộ đệm cho phép tin tặc khai thác hoặc sâu mạng lây lan. Điển hình là sâu Nimda và Code Red khai thác lỗi tràn bộ đệm trong các mô đun Internet Printing Protocol extension và Index Server extension vào năm 2001. Thông tin chi tiết

về lỗi này có thể tìm thấy tại các địa chỉ:

http://www.microsoft.com/technet/security/bulletin/MS01-023.mspx, hoặc http://www.microsoft.com/technet/security/bulletin/MS01-033.mspx.

Lỗi tràn bộ đệm trong Apache Chunked Encoding xảy ra trong quá trình máy chủ xử lý số nguyên có dấu đƣợc phát hiện vào năm 2002 trên máy chủ web Apache. Mã chƣơng trình có lỗi đƣợc sử dụng trên rất nhiều các bộ phận của máy chủ web. Có thể tìm thấy mô tả chi tiết về lỗi này tại địa chỉ: http://www.securityfocus.com/bid/5033/discuss.

Lỗi tràn bộ đệm trong Microsoft IIS WebDav là lỗi trong một thành phần nhân của hệ điều hành Microsoft Windows đƣợc phát hiện vào năm 2003. Đã có nhiều phƣơng pháp tấn công khai thác lỗi này đƣợc phát triển. Microsoft IIS WebDav (Web Distributed Authoring and Versioning) là thành phần máy chủ web IIS bị khai thác nhiều nhất, gây ảnh hƣởng tới nhiều ngƣời dùng. Có thể tìm thấy mô tả chi tiết về lỗi này tại địa chỉ: http://www.microsoft.com/technet/security/bulletin/MS03-007.mspx.

Lỗi tràn bộ đệm trong ngăn xếp trong bộ phận tìm kiếm của máy chủ web iPlanet (iPlanet Search) đƣợc phát hiện vào năm 2002. Bằng cách gửi yêu cầu với một tham số có độ dài lớn, tin tặc gây tràn ngăn xếp và có thể thực hiện mã độc, với quyền truy nhập của ngƣời dùng trong hệ thống cục bộ. Có thể tìm thấy mô tả chi tiết về lỗi này tại địa chỉ: http://www.ngssoftware.com/advisories/sun-iws.txt.

70 Các lỗ hổng cho phép duyệt đƣờng dẫn (Path traversal vulnerabilities) thƣờng xuất hiện khi các ứng dụng web thực hiện việc đọc, hoặc ghi vào hệ thống file dựa trên các tham số do ngƣời dùng cung cấp. Nếu các thao tác đọc, hoặc ghi vào hệ thống file không đƣợc kiểm soát chặt chẽ, nó sẽ tạo điều kiện cho tin tặc lợi dụng. Lỗ hổng dạng này có thể giúp tin tặc đánh cắp thông tin mật khẩu, log, các dữ liệu nhạy cảm, hoặc ghi đè lên các dữ liệu quan trọng. Trong trƣờng hợp xấu nhất, tin tặc có thể giành quyền kiểm soát cả ứng dụng web và hệ thống máy chủ.

Trang web với URL trên của một ứng dụng web sử dụng để trả về một ảnh cho ngƣời dùng là ví dụ minh họa cho lỗ hổng cho phép duyệt đƣờng dẫn với lƣu trình xử lý nhƣ sau:

- Tách giá trị của tham số file để có tên file ảnh

- Ghép tên file thu đƣợc vào đƣờng dẫn C:\wahh-app\images\ - Mở file theo đƣờng dẫn thu đƣợc

- Đọc nội dung của file và trả về cho máy khách.

Do trang tải ảnh không kiểm tra đầy đủ tên và đƣờng dẫn của file, khi tin tặc sử dụng chuỗi duyệt đƣờng dẫn nhƣ một phần của tên file nhƣ sau:

https://wahh-app.com/scripts/GetImage.aspx?file=..\..\windows\repair\sam

Khi đó đƣờng dẫn file là C:\wahh-app\images\..\..\winnt\repair\sam và tên file thực tế là C:\winnt\repair\sam. Tên file này cho phép đọc nội dung file sam là file lƣu danh sách ngƣời dùng và mật khẩu trong hệ điều hành Windows cung cấp cho tin tặc. Hình 3.5 biểu diễn việc khai thác lỗ hổng duyệt đƣờng dẫn để đọc file /etc/passwd chứa danh sách ngƣời dùng trên hệ điều hành Linux/Unix.

71 Biện pháp hiệu quả nhất để giảm thiểu lỗ hổng dạng này là hạn chế cho phép các thao tác đọc, ghi hệ thống file dựa trên tham số từ ngƣời dùng. Trong trƣờng hợp thực sự cần thiết thì cần thực hiện các biện pháp kiểm tra, lọc để loại bỏ các chuỗi duyệt đƣờng dẫn kiểu "..\..\" hoặc "../../" khỏi tên file. Hơn nữa, cần giới hạn việc truy nhập file trong thƣ mục chỉ định.

3.1.3.3. Lỗ hổng trong mã hóa và chuẩn hóa

Các máy chủ web thƣờng sử dụng các kỹ thuật mã hóa (encoding) để mã hóa dữ liệu (nhƣ sử dụng chuẩn base64) và các lỗi trong trong các bộ phận mã hóa và chuẩn hóa có thể tạo điều kiện cho tin tặc tấn công hệ thống. Có nhiều lỗi trong các mô đun mã hóa và chuẩn hóa đã đƣợc phát hiện, chẳng hạn nhƣ lỗ hổng cho phép liệt kê thƣ mục trong máy chủ Allaire JRun. Với URL đầu vào nhƣ sau:

trong đó %3f là mã hóa của dấu (?), là điểm bắt đầu của chuỗi truy vấn trong một URL. Thành phần diễn dịch ban đầu của máy chủ không giải mã, mà coi đó là 1 file có tên "%3f.jsp", nó chuyển thẳng cho bộ diễn dịch JSP. Bộ diễn dịch JSP chuyển %3f thành ? và không coi yêu cầu là 1 file hợp lệ, gây lỗi và trả về danh sách các file trong thƣ mục hiện thời.

Trên thực tế, hầu hết máy chủ web đƣợc trang bị bộ lọc chuỗi duyệt đƣờng dẫn ở cả dạng thƣờng và dạng mã hóa. Tuy nhiên, tin tặc có thể sử dụng một số kỹ thuật nhƣ tạo chuỗi mã hóa sai, hoặc tinh vi để vƣợt qua các bộ lọc, nhƣ trong URL minh họa sau:

Trong đó, tin tặc sử dụng chuỗi mã hóa unicode sai để biểu diễn chuỗi duyệt đƣờng dẫn "..%c0%af", hoặc "..%255c". Khi hệ thống giải mã sẽ bỏ qua lỗi mã hóa và chuyển thành ..\.

Một phần của tài liệu Bài giảng An toàn ứng dụng web và cơ sở dữ liệu: Phần 1 (Trang 70 - 72)