Thứ Năm, 21 tháng 3, 2019

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ụng Cyberpanel thay thế cho các Control Panel miễn phí, có phí để quản lý hosting...các thứ.

Thấy cũng tò mò nên mình có setup thử con VPS với Cyberpanel và tìm xem có gì hay ho không? Mục đích cũng để làm quen với nó cho biết với mọi người và kế đến là dòm ngó xem nó có gì hay hơn, dở hơn các panel khác không?

Mò mẫm thì thấy ngoài những cái mới, sài cũng lẹ hơn không ôm đồm, ỳ ạch  như VirtualMin, Webmin, VestaCP, KloxoMR, (đổi lại là thời gian phát triển của các panel trên lâu năm và an toàn hơn)...Nhưng tại thời điểm mình thử thì Cyberpanel tồn tại khá nhiều điểm yếu chết người về bảo mật, mình cũng report cho vendor những điểm yếu này đã được fix ở các version hiện tại.

Mình liệt kê ra một điểm yếu nhất, nguy hiểm nhất của Cyberpanel trước đây là ở mảng phân quyền những tập tin nhạy cảm của hệ thống (vd tập tin settings.py của Cyberpanel ) thật sự cẩu thả, cẩu thả đến mức chỉ cần các bạn có một user bất kỳ trên các server cài Cyberpanel thì các bạn có đủ quyền để nắm được:

- Tài khoản Root quản lý toàn bộ CSDL của hệ thống clients.
- Tài khoản root quản lý toàn bộ CSDL của hệ thống Cyberpanel

=> Vốn dĩ có tới tài khoản này là vì:
-  Cyberpanel sử dụng MariaDB để quản lý toàn bộ CSDL của các website trên hệ thống ở port:3306
-  Cyberpanel sử dụng MySQL để quản lý thông tin quản trị, domain, hosting, người dùng host, tài khoản FTP,.. ở Port:3307

Khỏi nói các bạn cũng có thể hình dung ra việc một người dùng nào đó mua host và có luôn quyền quản lý cái server đó của mình nó nguy hiểm ra sao rồi.

Ngoài trường hợp update hash:salt để chiếm quyền thì Mình cũng thử xem thuật toán mã hóa của các tài khoản hosting cũng như của admin trên Cyberpanel thì thấy khả năng có thể brute-force những hash password đó là khả thi nếu các bạn muốn có mật khẩu dạng text của target.

Thuật toán mã hóa nằm ở: https://github.com/usmannasir/cyberpanel/blob/v1.7.4/plogical/hashPassword.py

def hash_password(password):
    # uuid is used to generate a random number
    salt = uuid.uuid4().hex
    return hashlib.sha256(salt.encode() + password.encode()).hexdigest() + ':' + salt
.
Tức là chỉ cần có hash pass + salt thì có thể dùng hashcat với một option nhỏ để brute-force là: sha256($salt.$pass)

Đó chỉ là 1 trong những điểm yếu nguy hiểm nhất mà mình lấy để liệt kê ra đây làm ví dụ cho bài viết này, sau khi Cyberpanel đã fix nó, bằng cách phân quyền lại những tập tin có chứa những info nhạy cảm đó.

Kết luận:
- Cái gì mới ra và miễn phí thường không thật sự hoàn thiện và nó cần thời gian, cần đóng góp để hoàn thiện.
- Trước khi áp dụng công nghê hay công cụ nào đó cho hệ thống đang ổn định thì bạn nên kiểm thử nó xem có an toàn hay không.
- Hãy đóng góp cho nhà phát triển nếu bạn thấy những điểm yếu bảo mật nguy hiểm, có thể sẽ không có donate hay bounty đâu, nhưng nếu bạn thích thì hãy cứ làm thôi.

P/s: Mình trích lời của một người anh từng gởi cho mình: "Lòng tốt như thứ nước hoa quý. Có ai đem cho nó mà chẳng giữ được trên tay mình vài giọt thơm."

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 =]]

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...