Bài hack này chỉ dành cho mục đích giáo dục, để những người săn lỗi mới có thể khai thác theo phương pháp tương tự và tiết lộ các vấn đề bảo mật một cách có trách nhiệm cho chủ sở hữu của trang web.
Đại dịch Covid-19 đã chuyển mọi thứ từ offline sang online, do đó, các trường học cần một trang web để quản lý dữ liệu liên quan đến học sinh của họ, bao gồm các hoạt động của họ, bài tập, học phí, điểm,… Do đó mình sẽ sử dụng trang web https://ugtfdxlm.com làm ví dụ.
Mình mở trang web và bắt đầu truy cập các liên kết khác nhau có trên trang web đó với burp đang chạy nền. Nó chủ yếu là một trang web tĩnh với các trang .html do đó không thể tìm thấy gì nhiều trong các trang đó. Cuối cùng, mình bắt đầu dùng burp để thu thập thông tin trên tên miền hiển thị nhiều tài nguyên có trong trang web. Mình tìm được một số trang php nhưng lại không có bất kỳ thông tin hấp dẫn nào.
Cách mình hack trang web của một trường học
Lỗ hổng 1
Sau đó, mình thấy một thư mục con mà burp crawler đã tìm thấy, chẳng hạn như xhjc, do đó URI trở thành https://ift.tt/JexqXtM. Mình đã mở nó ra và đó cũng là một trang php có chức năng là lấy số nhập học duy nhất và DOB của sinh viên làm đầu vào và hiển thị chi tiết học phí liên quan đến sinh viên đó. Đây có vẻ là nơi dễ bị khai thác. Mình đã nhập một số nhập học ngẫu nhiên và DOB và gửi nó, việc này sẽ gây ra lỗi vì các số đó là ngẫu nhiên. Nhưng điều này tạo ra một yêu cầu GET, ví dụ như yêu cầu đó là https://ugtfdxlm.com/xhjc?stud_id=87263&dob=2011–01–23.
Nhìn thấy loại URL này, bản năng của mình mách bảo là hãy thêm payload tính toán của SQLi trong yêu cầu, tức là https://ugtfdxlm.com/xhjc?stud_id=87263’+oR+1=1+#&dob=2011–01–23 và gửi nó . Lỗi đã biến mất và điều này có nghĩa là trang web dính lỗi SQLi. Mình đã khai thác nó nhiều hơn một chút và đã có thể kết xuất cơ sở dữ liệu về học phí của những sinh viên còn lại.
Các chi tiết bao gồm thông tin nhạy cảm của học sinh như số nhập học của họ, tên, tên cha, DOB, số điện thoại di động, chi tiết học phí,…
Rõ ràng là mình sẽ không khai thác lỗ hổng này nhiều hơn vì đạo đức của mình không cho phép và cũng sẽ không lạm dụng thông tin này. Nhưng mình có thể làm gì khác với lỗ hổng này? Đây là câu hỏi thường gặp ở những người mới. Với lỗ hổng bảo mật này, giờ đây mình có thể tải payload reverse shell của riêng mình lên máy chủ, thực thi nó và toàn bộ máy chủ sẽ nằm trong tầm kiểm soát của mình hoặc hacker. Ngoài ra, nếu người dùng có đặc quyền của lệnh INSERT INTO thì mình có thể chèn các hàng mới hoặc thậm chí cập nhật các hàng, chẳng hạn như làm cho học phí bằng 0, nhưng tất cả điều này là phi đạo đức. Sau đây là điểm CVSS sẽ được gán cho lỗ hổng này:
Lỗ hổng 2
Trên cùng một trang, mình nghĩ sẽ thêm một số thẻ HTML trong tham số GET chẳng hạn như https://ift.tt/ptbZsko HTMLi</h1>&dob=2011–01–23 và gửi nó.
Mình đã có thể giả mạo nội dung trang và chứng minh rằng mình có thể chèn HTML vào trang web. Sau đây là điểm CVSS sẽ được gán cho lỗ hổng này:
Lỗ hổng 3
Vì URL https://ugtfdxlm.com/xhjc?stud_id=87263&dob=2011–01–23 chấp nhận thẻ, do đó nó cũng dễ bị tổn thương bởi lỗ hổng XSS. URL sẽ trở thành https://ugtfdxlm.com/xhjc?stud_id=<script>Hacked</script>&dob=2011–01–23.
Hacker có thể sử dụng lỗ hổng này để thêm biểu mẫu của riêng mình yêu cầu DOB và số lượng sinh viên nhập học và khi nộp hồ sơ, hacker có thể lấy những chi tiết đó trong máy chủ bằng cách sử dụng javascript. URL có thể được gửi đến cha mẹ và họ có thể trở thành nạn nhân của một vụ lừa đảo. Đó là lý do tại sao HTMLi và XSS cũng là những lỗ hổng nghiêm trọng. Điểm CVSS sẽ được gán cho lỗ hổng này:
Lỗ hổng 4
Vì mình đã tìm thấy tất cả các lỗ hổng có thể có liên quan đến yêu cầu GET của URL, nên không còn lỗ hổng nào khác để kiểm tra trên miền cz các trang khác là tĩnh. Và vì đây là một trang web cơ bản, do đó, có khả năng sẽ có một lỗi/cấu hình sai trên trang web, mình đã thử nghiệm tính năng Click jacking trên trang web. Và nó thực sự hoạt động cz tiêu đề X-frame bị thiếu.
Sau khi tìm thấy những lỗ hổng này, mình đã viết một email cho họ, có trong phần liên hệ của trang web giải thích cho họ mức độ nghiêm trọng của những lỗ hổng này, nhưng họ không trả lời lại, nếu không, mình đã giúp họ vá những lỗ hổng này. Cơ sở dữ liệu mà mình nhận được có thông tin nhạy cảm, hacker cũng có thể sử dụng thông tin này cho mục đích lừa đảo vì hầu hết các bậc cha mẹ cũng không biết khái niệm nhiều về an ninh mạng.
Dù sao thì mình chỉ muốn chia sẻ rằng bất kỳ thứ gì trong tên miền công cộng dễ bị hack đều có nguy cơ rủi ro cao, bạn không bao giờ biết thông tin nào có thể bị sử dụng sai theo cách nào.
Ngoài ra, các trường học cũng nên biết mức độ nghiêm trọng của loại dữ liệu dễ bị hack này, và nên trang bị thêm kiến thức về an ninh mạng.