1. Trước tiên mình sẽ nói sơ qua về các phương án tấn công 1 site joomla phổ biến hiện nay:
a. Tấn công chiếm quyền admin
- Bruteforce (Đối với những webmaster thiếu kinh nghiệm phướng pháp này rất hữu hiệu. Mình đã thử trên 1 server có 15 site joomla thì kết quả rất bất ngờ là mình brute và chiếm quyền admin được 8 site, 8/15 một con số không hề nhỏ)
- Bug, exploit (cái này joomla dính khá nhiều)
- Local attack (Tấn công từ site bảo mật kém hơn đặt cùng server)
b. Up shell sau khi chiếm được quyền admin
* Shell là gì: Shell có thể hiểu là 1 công cụ dùng để chạy lệnh phục vụ cho việc tấn công website, hoặc có thể hiểu nó là mã độc cũng được
Các phương pháp upshell cho joomla phổ biến nhất hiện nay
- Up shell thông qua việc sửa giao diện
- Up shell thông qua phần quản lý hình ảnh
- Up shell thông qua việc cài đặt plugin
- Up shell thông qua việc cài đặt modules
- Up shell bằng addon Http Live Headers của firefox
Trên đây là 3 cách tấn công chủ yếu mà các attacker hay dùng
Vậy để phòng chống attacker và cũng là bản thân mình đã trải nghiệm cả 3 phướng pháp trên thì mình rút tỉa được một só phương án bảo mật sau:
2. Bảo mật cho joomla
a. Chống bruteforce
* Đổi tên admin, không đặt username để login vào admincp là admin
Cái này rất nhiều người mắc phải, như vậy các attacker sẽ rất thuận tiện khi brute force vì chỉ việc dò pass mà thôi
*- Thay đổi thói quen đặt mật khẩu
Có thể nói vấn đề đặt mật khẩu là một vấn đề muôn thủa, trong quá trình check site thì mình thấy hết sức bất ngờ. Nhiều người đặt pass chỉ đơn giản thế này: 123456, admin, admin123 ......
Thậm chí có người đặt pass là số điện thoại, ngày tháng năm sinh... trong khi những thông tin đó không khó để có thể khai thác đối với attacker.
Vậy các bạn hãy đặt pass đủ độ dài và phức tạp 1 chút, bao gôm chữ thường, chữ in hoa, chữ số, ký tự đặc biệt thì bảo đảm không ai có thể làm gì được pass của bạn
* Đặt lớp đăng nhập thứ 2 cho admincp
Phần này với những ai sử dụng diretadmin và cpanel đều có rồi các bạn google để xem cách làm nhé.
* Đổi đường dẫn truy cập vào admincp
- Các bạn tạo 1 thư mục quantri
trong thư mục quan trị các bạn tạo file index.php với nội dung
Mã:
<?php $admin_cookie_code="1234567890"; setcookie("JoomlaAdminSession",$admin_cookie_code,0,"/"); header("Location:../administrator/index.php"); ?>
Mã:
RewriteCond %{REQUEST_URI} ^/administrator RewriteCond %{HTTP_COOKIE} !JoomlaAdminSession=1234567890 RewriteRule .* - [L,F]
Từ bây giờ, mỗi khi cập vào địa chỉ "http://domainname/administrator/" sẽ gặp thông báo lỗi. Muốn vào phần quản trị của Joomla! thì phải truy cập vào địa chỉ mới là "http://domainname/quantri/"
Thay tên thư mục "quantri" bằng tên khác tùy ý và phải nhớ tên này.
Sau khi truy cập vào địa chỉ "http://domainname/" thì trình duyệt sẽ ghi nhớ Cookie nên từ lúc này trở đi có thể truy cập thẳng vào địa chỉ "http://domainname/administrator/". Do đó nếu sử dụng máy tính công cộng thì sau khi sử dụng xong phải xóa Cache của trình duyệt nếu không người khác cũng có thể truy cập vào Admin của Joomla!.
b. Chống upshell
* Xóa các templates không sử dụng
Cá templates nào không dùng thì các bạn nên xóa nó khỏi host
* Đặt file htaccess chống run shell trong các thư mục chỉ chứa ảnh, thư mục upload
Trong các thư mục chỉ chứa ảnh, thư mục upload các bạn đặt file .htaccess với nội dung sau
Mã:
<Files ~ "\.(inc|sql|php|cgi|pl|php4|php5|asp|aspx|jsp|txt|kid|cbg|nok|shtml)$"> order allow,deny deny from all </Files>
* Không cho phép cài đặt plugins, modules, sửa templates
Cái này rất đơn giản các bạn chỉ cần chmode file configuration.php, thư mục plugins, thư mục modules, thư mục templates
Sau khi là hết các bước trên mình đảm bảo không ai có thể upshell và run shell trên site bạn được
c. Chống local attack
Local attack là gì: Local attack có thể hiểu là phương pháp tấn công từ 1 site bảo mật kém hơn nằm cùng server với site mục tiêu. Hay nói đơn giản hơn là attacker trèo tường từ nhà thằng hàng xóm sang nhà mình
Mục đích của local attack là view file config của ta vì thế công việc của ta sẽ là chống không cho attacker view được file config
Để làm được điều này ta chỉ cần chmod
Ở đây mình sẽ không nói kỹ về chmod các bạn có thể tìm hiểu thêm trên google, mình sẽ chỉ đưa ra các kiểu chmod an toàn thôi
* Chmod
- Chmod thư mục public_html về 710
- Chmod file configuration.php về 400
- Chmod thư mục modules, plugins/content, Templates và thư mục theme đang dùng về 501 hoặc 511
-
- Các thư mục upload chmod 755 tuyệt đối tránh chmod 777
- Chmod .htaccess về 400
* Bảo vệ file config
Thêm đoạn sau vào .htaccess
Mã:
<files configuration.php> order allow,deny deny from all </files>
Giả sử Website Joomla của bạn được đặt trong thư mục “ten-mien-cua-ban.com/public_html”
- Tạo 1 file quyle.org bên ngoài public_html và chép nội dung của file configuration.php vào rồi save lại, sau đó chmod về 400
- sửa file “configuration.php” thay thế file cũ nhưng chứa nội dụng sauxóa hết nội dung và thay bằng:
Mã:
<?php require( '/ten-mien-cua-ban.com/quyle.org' ); ?>
- chmod file configuration.php về 400
- Đặt htaccess bảo vệ file configuration.php như ở trên
+ /ten-mien-cua-ban.com/quyle.org: đường dẫn đến file config mới tạo
+ file quyle.org các bạn có thể đổi thành tên gì cũng đc
+ Khi bạn cần thay đổi các thiết lập cho Joomla hãy thực hiện bằng tay đối với file “quyle.org”
3. Upgrade
- Thường xuyên cập nhật phiên bản cho joomla
- Check bug và exploit thường xuyên
Có 2 trang chuyên public bug và exploit các bạn có thể tham khảo
Exploits Database by Offensive Security
1337day Inj3ct0r Exploit Database : vulnerability : 0day : shellcode by Inj3ct0r Team
- Hạn chế sử dụng plugins, modules, templates không rõ nguồn gốc
- Backup dữ liệu thường xuyên
- Thêm rule sau vào htaccess
Mã:
php_flag register_globals off
Done.
p/s: Bài viết có tham khảo trên internet + kinh nghiệm bản thân
Đăng nhận xét Blogger Facebook