Web App Hacking: Sensitive Data Exposure – Insecure Error Handling

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 đó.

Untitled-1.jpg

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ả.

Untitled-2.jpg

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.

Untitled-3.jpg

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ĩ.

Untitled-4.jpg

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ó.

Untitled-5.jpg

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.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s