Lựa chọn ngôn ngữ
VNCDN Products
CDN
SECUMAIL Products
Other Products

Tên Miền

Solutions

Email: contact@vnetwork.vn

Hotline: (028) 7306 8789

Tôi đã hack thành công 40 website trong 7 phút như thế nào?

31/07/2019
Tôi đã hack thành công 40 website trong 7 phút như thế nào?

Đây là kinh nghiệm được chia sẻ từ Georgios Kontantopoulos, một sinh viên ngành điện và máy tính ở Hy Lạp. Bạn đọc có thể tham khảo cũng như có thể biết được các sơ hở của người coder và những lỗ hổng có thể tồn tại trong hệ thống của mình

Tôi bắt đầu học về bảo mật thông tin và hacking từ mùa hè năm ngoái. Hiện tại, tôi vẫn đang tiếp tục nâng cao kỹ năng hacking và học thêm nhiều điều mới về việc “làm máy tính hoạt động theo cách mà người khác chưa bao giờ nghĩ tới”.

Thực tế, kinh nghiệm của tôi luôn giới hạn trong môi trường giả lập và tôi tự cho mình là 1 hacker mũ trắng, không bao giờ xen vào chuyện của người khác. Tuy nhiên, hôm nay tôi sẽ kể chi tiết về cách mà tôi đã hack vào một máy chủ đang được lưu trữ 40 websites.

Lưu ý: để hiểu những chi tiết dưới đây cần phải có kiến thức về khoa học máy tính

Tôi được một người bạn “trao phó sứ mệnh” tìm hiểu sâu hơn về độ bảo mật trong hệ thống anh ta vì có một số thông tin cho rằng website của anh ấy có một lỗi về XSS. Đây là một vấn đề quan trọng nên tôi cần được sự đồng ý của anh ấy để kiểm tra ứng dụng web và máy chủ host của nó. Câu trả lời là có.

Việc làm đầu tiên của tôi là tìm hiểu thông tin về đối tượng của mình càng nhiều càng tốt và cố gắng không gây chú ý cho họ. Ở bước này tôi bắt đầu quét khoảng 2 phút.

Kết quả là có khá nhiều cổng đang mở trên Server. Nhận thấy cổng FTP (21) và SMB (139/445) đang mở, chúng ta có thể đoán được máy chủ được dùng để host file và chia sẻ file, đồng thời cũng được sử dụng như là một webserver (cổng 80/443 và proxies 8080/8081). Chúng ta cũng có thể cân nhắc đến việc kiểm tra các cổng UDP nếu như các thông tin thu được từ bước trên chưa đủ. Công duy nhất ở đây mà chúng ta có thể tương tác là 80/443.

Để không phí thời gian, tôi chạy gobuster để tìm kiếm những file thú vị trên webserver, đồng thời cũng tìm thông tin thủ công.

Nhận được là đường dẫn /admin là một công cụ của admin để những người dùng đã xác thực có thể chỉnh sửa trên webserver. Nó yêu cầu thông tin đăng nhập mà chúng tôi không có cả tên người dùng lẫn mật khẩu nên đành bỏ qua. 

3 phút trôi qua vô ích

Trở lại website, tôi thấy nó yêu cầu đăng nhập. Thế nên, tôi đã tạo tài khoản đăng nhập bằng một email rác, sau khi bấm xác nhận được gửi đến trong email. Website đã được chuyển hướng đến trang Profile và thông tin cũng được cập nhật tại đây.

Thấy giao diện website có vẻ được tùy biến (custom), tôi quyết định thử tấn công theo kiểu Unrestricted File Upload (Upload file không an toàn). Ở Terminal, tôi đã tạo ra một file như sau:

Và upload file lên server và BINGO! File exploit.php đã được tải lên thành công trên máy chủ. Tất nhiên là nó không có thumbnail nhưng điều đó cũng có nghĩa là file của tôi đã được lưu ở đâu đó trên server.

Thiết nghĩ sau khi upload file lên server sẽ xảy ra quy trình kiểm tra phần mở rộng (file extension), thay thế chúng thành định dạng như .jpeg, .jpg để tránh việc thực thi đoạn mã từ xa nếu có kẻ muốn tải mã độc lên.

Chúng ta đã có một webshell sẵn sàng hoạt động

Thấy rằng server sử dụng perl script, tôi đã lấy một đoạn dịch ngược mã perl từ Cheatsheet, sau đó thiết lập IP/ Port và nhận được quyền truy cập thấp (đoạn này không có ảnh chụp).

5 phút trôi qua mà chỉ được quyền truy cập rất thấp 

Điều khiến tôi ngạc nhiên là một máy chủ không chỉ có 1 mà có tới 40 websites được lưu trữ. Tiếc là tôi đã không lưu lại ảnh chụp của từng website nhưng danh sách có kiểu như này: 

Đến đây thì bạn hiểu rồi đấy. Tôi có thể đọc được TOÀN BỘ code backend của tất cả các trang đang được host trên server. Ngoài ra, ở trong thư mục cgi-admin/pages, tất cả các kịch bản perl đều kết nối tới cơ sở dữ liệu MySQL với quyền root. Cũng như, thông tin đăng nhập cũng lộ rõ dưới dạng không được mã hóa (cleartext). Ví dụ như username/password là root:pwned42.

Chắc chắn rằng server này đang sử dụng MariaDB và tôi phải đọc về vấn đề này trên GitHub trước khi tiến hành truy cập vào dữ liệu. Sau cùng, tôi thực thi đoạn mã:

Và thế là chúng ta đã ở trong Database của người dùng root. Chỉ sau 7 phút, tôi đã có quyền đọc và chỉnh sửa nội dung của 35 cơ sở dữ liệu.

Ranh giới giữa Black Hat và White Hat là đây, sẽ là tổn thất rất lớn nếu có kẻ tấn công, có thể kể đến như:

- Lấy tất cả nội dung trên cơ sở dữ liệu, khi đó các thông tin, dữ liệu của 35 công ty sẽ bị rò rỉ ra ngoài.

- Xóa dữ liệu của 35 cơ sở dữ liệu

- Cài backdoor để có thể truy cập mọi lúc dưới tên apache cùng với cronjob.

Cần lưu ý là quy trình MySQL chạy dưới quyền root. Tôi thử chạy \!whoami để giành quyền root nhưng không thành công.

Điều gì có thể xảy ra?

Sau khi báo cáo kết quả, tôi được phép tấn công sâu hơn nữa. Lúc này, tôi nhớ đến cổng SMB đang mở, nghĩa là sẽ có một thư mục chung mà người dùng cùng để file ở đâu đó. Sau vài lần duyệt qua, quyệt lại thì đây là kết quả mà tôi tìm được trong thư mục /home/samba/secured. 

Trong thư mục này có rất nhiều file của từng người dùng trong công ty hosting, như:

- File .psd, .ai (các bản thiết kế, bí mật của công ty)

- Các file cookies sqlite

- Hóa đơn

- Ebook lậu

- Thông tin truy cập Wifi SSIDs

Với những thông tin này, hacker có thể:

- Truy cập vào mạng nội bộ công ty và thực hiện đủ kiểu tấn công.

- Đánh cắp dữ liệu để rao bán hoặc công bố chúng

Đòn chí mạng

Sau một hồi lượn lờ, tôi quyết định “bắt con cá lớn” chiếm quyền truy cập root. Sau khi tham khảo từ Cheatsheet, tôi bắt đầu tìm kiếm file.

Vận dụng hầu hết các kỹ năng có thể nhưng tôi vẫn không thể tìm được gì nữa. Rồi tôi chợt nhớ ra. Với các thử thách CTF (Capture the Flag) trước đây, hệ thống thường xuyên được cập nhật và thỉnh thoảng có lỗi cần phải thiết lập lại. Trên thực tế, người ta KHÔNG cập nhật hệ thống.

Tôi kiểm tra bản Linux mà hệ thống đang dùng. 

Và bản kernel của server Linux là một phiên bản cũ.

Đồng thời, tôi cũng tiến hành kiểm tra bản kernel có bị lỗ hổng hay không bằng kịch bản dưới đây. 

Kết quả là: Chiếm quyền root như tôi đã nghĩ nhưng không ngờ lại dễ dàng đến thế.


Game Over

Tôi đã viết ngay 1 email trình bày chi tiết về các bước cùng với những tác động của từng bước mà tôi đã làm. Hôm sau, bạn tôi đã liên lạc lại và thông báo rằng lỗi được được fix. Khép lại một “câu chuyện” thú vị!

Giải pháp phòng thủ 

Với những lỗ hổng như vậy thì cái giá phải trả khi dữ liệu, website bị hack không chỉ dừng lại về mặt tài chính mà bạn phải bỏ ra, mà còn có những hệ lụy đi kèm khác mà có khi chính bạn cũng không thể lường trước được.

Để giảm nguy cơ không mong đợi này, trước hết, hãy bảo vệ website của bạn khỏi sự tấn công từ tin tặc bằng cách cải thiện khả năng bảo mật. Với những công nghệ bảo mật hiện đại như WAF, Multi CDN,… , website của bạn sẽ được bảo vệ toàn diện cũng như giúp tăng trải nghiệm của người dùng website đó.

Phòng bệnh còn hơn chữa bệnh” việc thực hiện bảo mật tối đa cho website nên được chú trọng và thực hiện càng sớm càng tốt. Liên hệ ngay với VNETWORK để được tư vấn và hỗ trợ nhé!

Tổng hợp