Thứ Tư, 13 tháng 3, 2019

Hướng dẫn bảo vệ website mã nguồn wordpress

Gần đây mình thấy khá nhiều bạn post bài bị hack, bị găm script, bị cài shell.... trong group WordPress Việt Nam và các group học lập trình khác, mình cũng muốn giúp các bạn nhưng tựu chung lại thì mình không thích trả lời đi, trả lời lại những câu hỏi mà mình đã gặp nên thôi.Hôm nay viết một bài về những hướng mà một hacker chiếm quyền website của các bạn, cách mà các hacker hay găm mã độc,...bằng chính kinh nghiệm thực tế mà mình từng sài sau bao nhiêu năm pentest :( (coi như mình tự bóp ... chính mình thôi, hơi đau xíu nhưng vẫn chịu được)


1. Mình hack các website sài mã nguồn wordpress ra sao?
2. Mình upload mã độc (shell) lên website bằng cách nào?
3. Những cách để hạn chế tối thiểu rủi ro?


Chi tiết các mục nè:

1. Mình hack các website sài mã nguồn wordpress ra sao?
Intro: Với một pentester, hacker,...Hay một người cù bất cù bơ muốn phá hoại thì hiển nhiên là họ sẽ tìm đủ mọi cách, tìm hết những điểm yếu, những sơ hở, sài lầm của victim có thể có và tận dụng nó để "thọt" cho victim thốn tới rốn mới tha và dưới đây là một vài hướng đi đó:

- Sài mã nguồn wordpress, themes, plugins cũ mà không chịu update thì hiển nhiên là có nhiều bugs, và đây là điểm yếu nhất vì có bugs thì có hàng vạn cách để tấn công chiếm quyền và phá hoại, đó là cái chung thứ nhất.

- Sài mã nguồn wordpress, themes, plugins share tràn lan trên mạng, ham rẻ, ham free, thì hiển nhiên đứa share nó cũng khuyến mãi thêm con shell, backdoor,... không ai cho không ai thứ gì, đó chính là hậu quả mà các bạn xứng đáng nhận chỉ vì tiếc ít tiền mua themes với plugins chính hãng.

- Cẩu thả trong việc quản lý website của chính các bạn, lấy ví dụ là site đang ổn định, các bạn sao lưu (backup) sau đó để nguyên cục source code đó với cái tên rất đáng yêu như public_html.zip, ten_domain.zip, backup.zip,...Tui scan ra được phát thì tui không download về tui cùi á =]]

- Sài chung mật khẩu cho tất cả =)) vấn đề này muôn thủa và không bao giờ hết đâu, nhiều bác sài có 1 cái mật khẩu cho toàn bộ hệ thống (Kể cả mấy Mod của group WordPress Việt Nam cũng được mình report cho fix vì lỗi này), từ acc admin, pass FTP, pass SSH, mail....lấy ví dụ nhẹ là tui download được source ở trên và "may mắn" thế là đàng hoàng login vào host các bạn thôi.

+ Bạn sài wordpress mới nhất, plugins và themes bản quyền cũng update mới nhất, có luôn mấy cái plugin bảo mật như ithemes,...Giấu luôn link wp-admin.Nhưng vẫn bị hack???

- Có thể bạn đang mắc những lỗi ở 2 gạch cuối phía trên cũng là nguyên nhân gây ra nguyên nhân nè.
- Có thể nơi bạn đang đặt mã nguồn của nhà cung cấp đó không nâng cấp hệ thống và bị chiếm cả con server thì bạn nằm trên đó có làm được gì khác nữa đâu.
- Update mới nhất thì đâu có nghĩa là mã nguồn nó an toàn và không có bugs đâu? mình tìm thấy 0day thì các bạn vẫn húp cháo như thường thôi.
- Cài càng nhiều themes, càng nhiều plugins thì càng tăng thêm rủi ro về bảo mật cho chính các bạn, cái nào cần thì cài thôi đừng có ôm hết vào, ôm rơm rặm bụng đấy.




2. Mình upload mã độc (shell) lên website bằng cách nào?
Intro: Bỏ qua hết các mục tìm lỗi, khai thác lỗi,... và đây là lúc mình có đủ info, đủ quyền để làm cái mình muốn làm với site của các bạn nè.


+ Theo lẽ thường thì mình sẽ upload bằng các hướng sau đây, đối với trường hợp vào được Dashboard nhé:

- Upshell dựa vào phần quản lý plugins: Phần này có thể dùng 2 cách như bên dưới.
-- Edit, chỉnh sửa nội dung source code của các plugins mà các bạn đang có sẵn, thay hay chèn thêm source shell của mình.
-- Upload luôn cái plugins mới lên và cài đặt như thường, tất nhiên trong cái plugins.zip đó có luôn mấy con shell của mình rồi.

- Upshell dựa vào phần quản lý Themes: Phần này cũng y như ở trên và có thể dùng 2 cách như bên dưới.
-- Edit, chỉnh sửa nội dung source code của các Themes mà các bạn đang có sẵn, thay hay chèn thêm source shell của mình.
-- Upload luôn cái Themes mới lên và cài đặt như thường, tất nhiên trong cái Themes.zip đó có luôn mấy con shell của mình rồi.

+ Phải luôn nhớ rằng KHÔNG NHẤT THIẾT cứ phải login được vào Dashboard mới upload được mã độc, upload được shell.
- Có nhiều lỗ hổng có thể trực tiếp execute command trên chính source code của các bạn, nếu website của bạn tồn tại lỗ hổng đó.
- Tính luôn tình huống bạn sài chung mật khẩu và mình vào thẳng FTP để làm việc mình cần làm luôn.
- Nên có thể đây là câu trả lời cho những bạn đã áp dụng cài plugin bảo mật, giấu link wp-admin,... vẫn bị hacker chơi ú à :(.


3. Những cách để hạn chế tối thiểu rủi ro?
Intro: Đây chỉ là những gợi ý mang tính tương đối dựa vào những cách thông thường mà các pentester, hacker hay sử dụng thôi, còn những tình huống đụng cao nhân thì đành chấp nhận build lại hệ thống thôi bạn.


+ Dựa vào những điểm thông thường mà mình viết ở mục 1 & 2 có thể đúc kết ra những hướng hạn chế như sau:

- Sài wordpress, themes, plugins, download trực tiếp từ trang chủ và mua bản quyền để hạn chế tối đa rủi ro bị găm mã độc.
- Luôn luôn update mã nguồn wordpress, themes, plugins đừng có chần chừ trì hoãn làm gì vì biết đâu hacker nó đã dòm ngó bạn từ lâu và khi có cơ hội là nó hốt bạn liền ngay trong đêm rồi.
- Đừng bao giờ sài mật khẩu dễ, sài chung mật khẩu, cái này nhắc hoài mà bà con dính hoài thôi và vẫn nhắc cho vui thôi haha.
- Đừng có cẩu thả khi quản lý và có cái tư tưởng kiểu... site mình có vẹo gì đâu mà lo, mình kỹ thế bố nó cũng méo hack được cần gì update,...Nhiều khi nó vào găm shell mấy tháng trước rồi mà bác không biết đấy :(

+ Riêng với wordpress mình gợi ý một vài hướng như sau để cải thiện thêm về bảo mật và hạn chế rủi ro ngoài những cách ở trên:

- Đơn giản là đặt cái mật khẩu để bảo vệ thư mục wp-admin/ không cần giấu hay đổi tên làm quỷ gì cho mệt, cách này coi như giảm được 90% bị upload shell rồi, mấy đứa gà gà thì không vào được Dashboard lấy gì mà upload được shell??? Còn vẫn bị upload shell thì coi như bạn xứng đáng vì được pro nào đó để ý và chết trong tay pro cũng không nhục mấy =]] Lúc này hãy xem log để tìm hiểu cái chết ra sao mà còn né nha.
- Rồi Chặn luôn tình huống lỡ xui bị nó mò được user - pass login ở cái wp-admin phía trên và vào được Dashboard thì sao? Vào wp-config.php thêm dòng này vào:

define( 'DISALLOW_FILE_EDIT', true );

Rồi save file lại, mục đích là để chặn, không cho chỉnh sửa hay upload themes, plugins. Không có chức năng này nữa thì lấy gì để hành động đây? Vào xong ngó ngó rồi đi ra thôi :(.

- Siêng thì làm thêm vài thao tác nữa về phân quyền cho thư mục, cho file, mục đích là để hacker không có quyền write shell lên nữa là ổn lắm rồi:
-- chmod 400 cho file quan trọng như wp-config.php.
-- chmod 701, 711 cho thư mục chưa source như public_html chẳng hạn.

- Cuối cùng là chọn mặt gởi vàng, kiếm một nhà cung cấp dịch vụ hosting, vps, server có uy tín với thương hiệu lâu năm, ít phốt mà trao thân gởi code để giảm thiểu rủi ro bị thông từ tầng hệ thống. Cái này thì dành cho 10% còn lại đó là các pro sài khà khà.

Hết.
P/s: Chúc các bạn may mắn =]]

2 nhận xét:

Cyberpanel và những lỗ hổng bảo mật đã fix.

Tầm đầu tháng 1/2019 mình thấy đi group nào chuyên về thiết kế website, bán hosting,...Của facebook cũng có những comment khuyên nhau sử dụn...