Web App Hacking: Sensitive Data Exposure – Insecure Error Handling

0
519

Đọc bài thứ nhất tại đây: Web App Hacking: Sensitive Data Exposure (Guideline)

Verbose Error Messages

Hiểu đơn giản, đây là kiểu thông báo lỗi nhưng lại chứa quá nhiều thông tin dư thừa, không cần thiết trong đó. Thậm chí, bên cạnh các thông báo tình trạng lỗi, còn kèm theo cả những thông tin nhạy cảm của hệ thống.

Có thể kể tên một số như:

  • Source code.
  • Thông tin đăng nhập vào hệ thống cơ sở dữ liệu.
  • Chi tiết về thông tin cấu trúc của hệ thống.

Những thông báo lỗi dạng này với người dùng thông thường, nếu trong quá trình truy cập web thì nó xuất hiện không thường xuyên. Nhưng với kẻ tấn công, không thể cứ ngồi chờ khi nào nó xuất hiện mới khai thác. Với kẻ tấn công, họ sẽ cố tình xây dựng tình huống để từ đó server trả về lỗi nhằm mục đích khai thác nhanh hơn.

How to Trigger Error Message

Với các ứng dụng web, việc đánh lừa hệ thống để từ đó truy tìm thông báo lỗi nhanh nhất vẫn là cách truyền vào một dữ liệu không mong muốn. Hiểu đơn giản hơn, đó có thể là một biến, một tham số đầu vào.

Lấy ví dụ, ứng dụng web mong muốn một biến kiểu integer (số nguyên), nhưng kẻ tấn công không làm như vậy. Hắn cho truyền vào một biến kiểu ngẫu nhiên khác integer, như một chuỗi các ký tự bất kỳ. Bằng cách này, kẻ tấn công mong muốn thu nhặt được thông tin dạng “verbose error messages”, để từ đó lấy ra các dữ liệu cần thiết nếu có.

Demo

Giả sử ta có một trang web bán các giải pháp CNTT. Ở đây, khi tôi chọn vào một sản phẩm, bạn quan sát đường link của sản phẩm đó.

Ta thấy có đánh số – có thể đoán đây là id của sản phẩm. Tiếp tục, ta thử thay đổi bằng một số khác và xem kết quả.

Như vậy, con số trong đường dẫn chính xác là id của sản phẩm đó. Nếu suy luận theo hướng đó, ta thử truyền vào một thông số ngẫu nhiên không phải là số nguyên.

Ta thấy, ngay lập tức trang web trả về lỗi. Và với dạng thông báo lỗi rườm rà như vậy, ta cần quan sát kĩ.

Trong số các thông tin lỗi, ta thấy được cả source code về cách mà ứng dụng web này thực hiện việc chuyển đổi các giá trị đầu vào để xử lý. Như vậy, rõ ràng hàm này không thể chuyển đổi một chuỗi ngẫu nhiên bất kỳ thành một số nguyên id tương ứng được.

Nếu quan sát kĩ hơn bên dưới, ta thấy được cả các thông số cấu hình hệ thống và các thông tin đăng nhập vào cơ sở dữ liệu của nó.

Nếu đã từng học và sử dụng qua môi trường Microsoft C# để phát triển các ứng dụng web, hẳn nhìn vào đây, bạn có thể đoán được hệ quản trị cơ sở dữ liệu của nó là gì sau khi nhìn vào “ID=sa” rồi. Chính xác là SQL Server của Microsoft!

Summary

Minh họa trên đây thu được kết quả từ verbose error messages của một ứng dụng web sử dụng công nghệ ASP.NET không được lập trình theo hướng bảo mật. Tuy nhiên, ta cần phải ghi nhớ, không hẳn kiểu tấn công dựa trên verbose error messages này chỉ xảy ra với ASP.NET, mà nó còn có cả ở các công nghệ khác khi sử dụng để xây dựng ứng dụng web.

Có thể bạn quan tâm:

Bài 1: Web App Hacking: Sensitive Data Exposure (Guideline)

Bài 2: Web App Hacking: Sensitive Data Exposure – Insecure Error Handling

Bài 3: Web App Hacking: Sensitive Data Exposure – Disclosure of Sensitive Files

Bài 4: Web App Hacking: Sensitive Data Exposure – Information Disclosure via Metadata

Bài 5: Web App Hacking: Sensitive Data Exposure – Underestimated Risk: Disclosure of Software Version

Bài 6: Web App Hacking: Sensitive Data Exposure – Insecure Communication Channel

Bài 7: Web App Hacking: Sensitive Data Exposure – Leakage of Cookie with Sensitive Data

Bài 8: Web App Hacking: Sensitive Data Exposure – Leakage of Sensitive Data via Referer Header

This site uses Akismet to reduce spam. Learn how your comment data is processed.