Với khả năng phát tệp tin đa phương tiện từ nhiều nguồn khác nhau và dễ dàng tùy biến như thêm Logo vào trình phát hay thay đổi giao diện cho phù hợp với trang, do đó GKPlugin được yêu thích và sử dụng tại nhiều trang xem phim trực tuyến hiện nay. Và việc nó được phát triển trên nền JWPlayer – là một player được ưa chuộng đã giúp GKPlugin trở nên phổ biến hơn.
Trong quá trình phân tích mã nguồn GKPlugins, K-20 đã phát hiện ra lỗ hổng cho phép tải và đọc nội dung tệp tin mã nguồn bất kì của Website sử dụng plugin này.
Video PoC
Phân tích chi tiết
Theo như video trên, chúng ta nhận thấy lỗ hổng này khá giống Local File Include (LFI). Tuy nhiên nó có tên goi là Arbitrary File Download, cho phép kẻ tấn công có thể dễ dàng tải tệp tin mã nguồn bất kì từ trang web thay vì đọc trực tiếp trên trang thông qua hàm include như LFI.Lỗ hổng được phát hiện tại tệp plugins_player.php trong quá trình phân tích mã nguồn GKPlugin:
Ta thấy tham số truyền vào “?f” là đường dẫn tệp tin, với việc sử dụng hàm header với “Content-Type: application/octet-stream” và dùng hàm readfile để đọc nội dung tệp thì trình duyệt sẽ hiển thị hộp thoại cho phép người dùng tải về tệp tin bất kì nằm trên máy chủ. Việc người dùng có thể tải xuống tệp tin mã nguồn là rất nguy hiểm khi có thể để lộ những thông tin nhạy cảm như tài khoản đăng nhập Cơ sở dữ liệu hay đăng nhập vào trang quản trị viên và đây thực sự là một sơ suất của lập trình viên.
Chúng ta thấy tuy tệp được tải xuống là plugins_player.php nhưng nội dung chính là từ crossdomain.xml – tham số mà chúng ta đã gửi đi: