Kiểm thử bảo mật tại một trường Đại học tại Việt Nam

An ninh mạng và bảo mật thông tin hiện đang là chủ đề nóng tại Việt Nam nói riêng và cả thế giới nói chung. Gần đây, nhiều vụ tấn công có tính nguy hiểm và quy mô ngày càng tăng như Vietnam Airlines bị tấn công hay Botnet Mirai gây ra trận tấn công DDos có cường độ chưa từng có đã dấy lên hồi chuông báo động về tình trạng bảo mật, an ninh mạng của các doanh nghiệp cũng như cơ quan nhà nước. Hôm nay, để đánh giá thực tế tình trạng này, tôi sẽ tiến hành kiểm thử bảo mật (penetration testing) tại một trường Đại học có tiếng về ngành An toàn thông tin tại Việt Nam.

Các công cụ kiểm thử:
Phần 1: Kiểm thử các Website của trường:

Cùng bắt đầu với trang chủ, thử kiểm tra bằng NmapNikto, thu được một số thông tin như sau:

  • OS: Linux
  • Server: Nginx (1.6.3)
  • Backend: Drupal 7
  • Open Ports: 80, 443 (http và https) Nikto scan result 1 Kết quả của Nikto không cho thấy lỗi bảo mật nào nguy hiểm, vì sử dụng mã nguồn mở Drupal được update thường xuyên. Tuy nhiên một số thông báo mà Nikto thu được cũng đáng chú ý, các file hướng dẫn mặc định cũng như cả file cài đặt install.php vẫn được giữ trên hệ thống, có lẽ quản trị viên upload mã nguồn lên và không chỉnh sửa lại. Điều này tuy không gây ra lổ hổng bảo mật, tuy nhiên có thể được hacker lợi dụng để điều tra thông tin về mục tiêu.
    Nikto scan result 2 homepage vulnerable Tiếp tục kiểm thử đối với các website khác của trường, ta cũng nhận được kết quả tương tự. Hầu hết các website được phát triển dựa trên nền tảng Drupal, chạy trên webserver Nginx, hệ điều hành Linux. Và cũng không có lỗi bảo mật nào có thể khai thác, ngoài việc Quản trị viên bất cẩn để lại các file kia (có lẽ họ không quan tâm đến vấn đề này).

Hết cái để tiếp tục vọc vạch, mình bèn thử tìm thêm một số website khác không public của trường bằng cách tra subdomain từ domain chính thì phát hiện kết quả bất ngờ.
Zone Transfer Không ngờ mình may mắn tới mức mới chỉ áp dụng kĩ thuật đầu tiên là zone transfer mà đã lấy được tất cả cài đặt domain. Thường tính năng này sẽ được tắt vì lí do bảo mật vì nó có thể là một mỏ vàng cho hacker khai thác. Theo mình đánh giá thì có thể do bên cung cấp dịch vụ domain bất cẩn hoặc do trường cần bật tính năng này để sử dụng cho một vấn đề nào đó. Dù sao mình cũng đã có ít website khác để vọc vạch, thử tiến hành tiếp xem sao.

Chà chà, có nhiều subdomain để vọc vạch, nhưng hầu hết cũng sử dụng mã nguồn mở nên không có lỗi nào. Một số domain không dùng làm website, có lẽ dùng làm app hoặc giao tiếp API, hệ thống camera gì đó (cái này mình mù nên không check được). Mà khoan, mình tìm thấy một subdomain cực kì hứa hẹn.
Vulnerable Site Có lẽ đây là một trang demo cho một sản phẩm của trường, được viết tay từ PHP từ năm 2010, hứa hẹn nhiều lỗi đây nha.

Không ngoài dự đoán, trang demo này dính ngay một lỗi Local File Inclusion trên PHP cho phép hacker đọc mọi file mà webserver có thể đọc được, từ đây mình có thể lấy toàn code chạy trên server.
Local File Inclusion Phân tích lổ hổng này: Mình thử đọc code trên trang này và phát hiện ngay đoạn code nào gây ra lổ hổng. Local File Inclusion Code

Như bạn có thể thấy ở trên, hàm fgets đọc file với tham số lấy từ request GET mà browser yêu cầu mà không hề kiểm tra gây ra lỗi, ví dụ ta request ../../../../../etc/passwd server liền đọc file này và xuất ra. (Lưu ý: để đọc file PHP hoặc file khác một các toàn vẹn, ta cần dùng thêm php://filter/read=convert.base64-encode/resource=đường-dẫn-tới-filedecode base64 ra).

Sửa chửa lổ hổng này và phòng tránh:

  • Cách 1: Cần kiểm tra đường dẫn truyền vào trước khi đưa vào hàm fgets, có thể đưa chung những file cần đọc đó vào một folder và chỉ cho đọc ở trong thư mục đó.

  • Cách 2: Lưu đường dẫn những file cần đọc trên database, và chỉ cần dùng tham số id của file đó trên database.

Mình thử thâm nhập sâu hơn lên mức server, nhưng không thành công, một phần vì lỗi này không cho phép và cũng do lổ hổng này tạo ra bởi hàm đọc fgets chứ không phải hàm include hay require.

Tổng kết: Hệ thống website của trường được bảo mật khá tốt (có lẽ vì dùng mã nguồn mở và được update thường xuyên). Tuy nhiên công tác bảo mật chưa được chú trọng, có thể thấy qua việc không xóa nhưng file mặc định hay bật tính năng zone transfer. Mong trường có thể tiếp tục bảo mật thêm những phần này.

Lưu ý: Mình chỉ kiểm thử bảo mật, và vì lí do an toàn nên đã che các thông tin cần thiết, các bạn không nên làm theo và phá hoại hệ thống website của trường.

Dây rút nhựa tp hcm