Vào một ngày đẹp trời, bất ngờ trang Web của bạn xuất hiện dòng chữ “Checked by…” hay “Hacked by…” tại trang chủ và bạn không biết lý do từ đâu?
Ngày nay, việc xây dựng một Website, Diễn đàn hay Blog cá nhân là rất dễ dàng vì có nhiều mã nguồn mở được xây dựng sẵn như WordPress, Blogger, vBulletin, Xenforo… Hay những Framework mạnh mẽ như CodeIgneter, Laravel, YI giúp việc tạo ra một trang Web trở nên đơn giản hơn rất nhiều. Nếu như bạn lựa chọn việc sẽ sử dụng mã nguồn mở hay Framework để tự tay làm ra trang web của mình từ lúc bắt đầu cấu hình, xây dựng cơ sở dữ liệu rồi phát triển thì không nói làm gì, trong trường hợp bạn lấy những mã nguồn diễn đàn, blog cá nhân đã được tùy chỉnh, thiết kế giao diện và xây dựng sẵn cơ sở dữ liệu thì sẽ có một điều mà bạn cần quan tâm đó là “Liệu những bộ mã nguồn mở được chia sẻ công khai đó có an toàn?”. Mình đã gặp rất nhiều trường hợp những trang Web sử dụng mã nguồn mở (được chia sẻ tại các Diễn đàn IT) bị tấn công (chiếm quyền điều khiển hay thay đổi giao diện) và nguyên nhân là trong những mã nguồn đó đã được chèn sẵn Shell Script – những tệp tin có thể quản lý, thực thi lệnh trên Server. Shell thường được giấu theo 3 kiểu:- Giấu nguyên Shell vào một thư mục (tất nhiên sẽ không để nguyên ngoài thư mục root – chứa index).
- Chèn một đoạn Shell Code vào một tệp nào đó.
- Chèn Shell Code trong cơ sở dữ liệu (trường hợp này thường gặp ở mã nguồn xây dựng Diễn đàn vBulletin).
Phương pháp 1: Tìm theo tên Shell
Tìm theo tên Shell thì có thể ai cũng nghĩ ra được nhưng hãy xem cách tìm tên của Juno_okyo nhé Xin giới thiệu với các bạn công cụ này, cực kì hữu ích – EverythingCác bạn có thể tải miễn phí tại đây http://www.voidtools.com/download.phpĐây là một công cụ tìm kiếm dành cho Windows, tốc độ tìm kiếm cực kì nhanh. Sau khi cài đặt, ở lần chạy đầu tiên các bạn sẽ phải chờ để Everything khởi tạo cơ sở dữ liệu các tệp tin và thư mục trên máy bạn (chỉ khoảng 30 giây – 1, 2 phút tùy vào máy bạn). Sau đó việc tìm kiếm chỉ diễn ra trong 1 giây (thậm chí là chưa tới 1 giây ). Hãy thử và cảm nhận nhé! Chúng ta đi vào chủ đề chính đã nào, sau khi mở Everything lên, bạn nhập từ khóa như sau:
“E:\wamp\www\3.8.7\”Trong đó E:\wamp\www\3.8.7\ là đường dẫn tới thư mục chứa mã nguồn mà bạn cần tìm kiếm Shell. Sau đó chúng ta sẽ sử dụng Black List – danh sách đen chứa tên những con Shell phổ biến. Bạn có thể copy danh sách bên dưới để thử
r57|c99|c100|byg|shell|telnet|alucarNếu may mắn thì bạn sẽ thấy Everything không tìm được gì, còn nếu trong mã nguồn bị chèn Shell thì bạn sẽ thấy kết quả giống như này nè
Phương pháp 2: Tìm theo từ khóa nằm trong “Shell Code”
Đây là cách mã nhiều người cũng biết, nhưng tất nhiên bài viết này sẽ hướng dẫn theo cách tìm của Juno_okyo Ở phương pháp thứ 2 này, mình xin giới thiệu với các bạn công cụ mang tên là FileSeek, công cụ này có cả phiên bản miễn phí và trả phí, nhưng theo đánh giá của mình thì phiên bản miễn phí là đủ dùng rồi . Các bạn có thể tải FileSeek tại địa chỉ:http://www.binaryfortress.com/Data/Download/?package=fileseek&noinstall=1&log=103Sau khi cài đặt, các bạn mở FileSeek lên và nhập đường dẫn tới thư mục chứa mã nguồn cần tìm Shell ở ô Path(s), sau đó điền *.php vào ô Include Files có nghĩa là chúng ta chỉ tìm những tệp tin có đuôi là “php”. Về nguyên lý tìm kiếm của phương pháp này đó là chúng ta tìm kiếm dựa trên những hàm hoặc chuỗi thường gặp trong một con Shell. Danh sách những từ khóa mà các bạn có thể sử dụng để tìm:
- eval(
- base64_encode(
- base64_decode(
- gzinflate(base64_decode(
- gzinflate(str_rot13(base64_decode(
- str_rot13(gzinflate(base64_decode(
- $_F=__FILE__;
- readdir(
- ini_get(‘disable_functions’)
- ini_get(‘safe_mode’)