*Bài viết nguồn từ NhatAnh'S BLog, bài viết nay bao gồm kinh nghiệm của mình đã tích lũy được trong thời gian tìm hiểu và làm về vbb + một số các thủ thuật mà mình đã học được từ các đàn anh và tổng hợp lại!

MÌNH XIN VIẾT NGUYÊN VĂN BÀI VIẾT ĐÓ CHO CÁC BẠN THAM KHẢO VÀ ĐÓNG GÓP Ý KIẾN CHO TUT THÊM HOÀN THIỆN!


--------------------------------------------------------

Trước mình có từng làm VBB nhưng năm nay 12 rồi nên mình phải close hết. Sau một thời gian tìm hiểu mình cũng có được một chút kinh nghiệm về bảo mật căn bản cho vbb.

Hôm nay mình sẽ chia sẻ với các bạn một số cách có thể giúp bạn hạn chế local attack cho VBB, có gì các bạn comment góp ý cho mình nhé!


Local attack ngày càng phổ biến, để bảo vệ website của bạn được an toàn theo mình dựa trên 2 yếu tố sau:

- Sever của host bạn phải được config thật tốt.

--> Bạn nên tham khảo ý kiến trước khi chọn mua hosting, hosting tốt chiếm một phần khá lớn trong việc đàm bảo an toàn cho website của bạn. Tất nhiên rồi để đảm bảo an toàn theo cách này thì còn tùy theo túi tiền của bạn nữa...đâu phải ai cũng có điều kiện (Chính mình là một ví dụ )

- Cách config, bảo mật website của bạn.

--> Đây mới là cái mà chúng ta cần phải mày mò, tìm hiểu nhiều để tích lũy kinh nghiệm ...

Về Local attack mình chỉ nói đơn giản đó là một cách tấn công nhờ công cụ là webshell . Chỉ cần có đưa con webshell trên sever (Bằng một cách nào đó) hacker có thể can thiệp trái phép vào các hosting trên sever đó. Tùy vào mức độ bảo mật mà hacker có thể can thiệp vào source và database trên host, thậm trí có thể chiếm quyền ROOT của sever.

Vậy chúng ta tự bảo vệ mình ra sao, chưa nói tớ vấn đề config của sever, ta có ít nhất 2 bước để phòng ngự:
- Tuyệt chiêu vẫn là CHMOD. Nếu biết chmod hợp lí, mức độ bảo mật sẽ được nâng lên đáng kể!
- Thứ 2 là thay đổi cấu trúc, tên folder - files mặc định của web, thay đổi path config
CHMOD là gì ???

Mình xin trích đoạn một số khái niệm về căn bản CHMOD như sau: (Tài liệu sưu tầm)

Trích dẫnCHMOD định nghĩa đơn giản chính là cụm từ viết tắt của Change Mode - Một lệnh đặc biệt chỉ dùng trên các máy chủ hệ Unix (Linux, Solaris, True64...) dùng để thay đổi quyền hạn của một người bất kỳ đối với một tập tin, thư mục bất kỳ trên một website cụ thể. Bằng cách thay đổi chmod, bạn đồng thời gán một quyền lực cho một người nào đó đối với các tập tin, thư mục trong cấu trúc website của bạn.

Giá trị chmod luôn được biểu thị bằng một cụm gồm 3 chữ số (***) đại diện cho 3 người gồm: User (Owner - Chủ sở hửu) - Group (Nhóm cộng tác) - Other (Guest - Tất cả mọi người còn lại) và gồm các giá trị gồm 1 (Execute - Thực thi), 2 (Write - Ghi), 4 (Read - Đọc)

Ví dụ 1: chmod: 124 <=> Chủ sở hửu : 1 - Nhóm cộng tác : 2 - Mọi người : 4


Chủ sở hửu có quyền gọi thực thi tập tin, thư mục
Nhóm cộng tác có quyền ghi nội dung vào tập tin, thư mục
Mọi người có quyền xem nội dung tập tin, thư mục

Ví dụ 2: chmod: 412 <=> Chủ sở hửu : 4 - Nhóm cộng tác : 1 - Mọi người : 2

Chủ sở hửu có quyền xem nội dung tập tin, thư mục
Nhóm cộng tác có quyền gọi thực thi tập tin, thư mục
Mọi người có quyền ghi nội dung vào tập tin, thư mục

CHMOD 644, 666, 755, 777 là như thế nào?

Như trên đã trình bày, các giá trị chmod luôn là 1, 2, 4. Điều này đồng nghĩa với việc nếu bạn muốn cấp nhiều quyền lực hơn cho một người bất kỳ đối với tập tin, thư mục của bạn, bạn sẽ phải cộng các số lại với nhau. Kết quả ta sẽ có các giá trị:

1=Quyền gọi thực thi
2=Quyền ghi nội dung
3=1 + 2=Quyền gọi thực thi + Quyền ghi nội dung
4=Quyền xem nội dung
5=4 + 1=Quyền xem nội dung + Quyền gọi thực thi
6=4 + 2=Quyền xem nội dung + Quyền ghi nội dung
7=4 + 2 + 1=Quyền xem nội dung + Quyền ghi nội dung + Quyền gọi thực thi

Như vậy, khi bạn có giá trị 7, quyền lực của bạn sẽ là tuyệt đối đối với tập tin, thư mục đó. Và ngược lại, khi bạn có giá trị 1, bạn sẽ có quyền lực thấp nhất.

Và cũng như trên đã nói, chmod không đứng riêng lẻ mà luôn đi thành cụm 3 chữ số để biểu thị cho quyền lực của User - Group - Other.

Kết quả ta có các giá trị:


111, 112, 113, 114, 115, 116, 117, 121, 122, 123, 124, 125, 126, 127, 131, 132, 133, 134, 135, 136, 137, 141, 142, 143, 144, 145, 146, 147, 151, 152, 153, 154, 155, 156, 157, 161, 162, 163, 164, 165, 166, 167, 171, 172, 173, 174, 175, 176, 177, 211, 212, 213, 214, 215, 216, 217, 221, 222, 223, 224, 225, 226, 227, 231, 232, 233, 234, 235, 236, 237, 241, 242, 243, 244, 245, 246, 247, 251, 252, 253, 254, 255, 256, 257, 261, 262, 263, 264, 265, 266, 267, 271, 272, 273, 274, 275, 276, 277, 311, 312, 313, 314, 315, 316, 317, 321, 322, 323, 324, 325, 326, 327, 331, 332, 333, 334, 335, 336, 337, 341, 342, 343, 344, 345, 346, 347, 351, 352, 353, 354, 355, 356, 357, 361, 362, 363, 364, 365, 366, 367, 371, 372, 373, 374, 375, 376, 377, 411, 412, 413, 414, 415, 416, 417, 421, 422, 423, 424, 425, 426, 427, 431, 432, 433, 434, 435, 436, 437, 441, 442, 443, 444, 445, 446, 447, 451, 452, 453, 454, 455, 456, 457, 461, 462, 463, 464, 465, 466, 467, 471, 472, 473, 474, 475, 476, 477, 511, 512, 513, 614, 515, 516, 517, 521, 522, 523, 524, 525, 526, 527, 531, 532, 533, 534, 535, 536, 537, 541, 542, 543, 544, 545, 546, 547, 551, 552, 553, 554, 555, 556, 557,, 561, 562, 563, 564, 565, 566, 567, 571, 572, 573, 574, 575, 576, 577, 611, 612, 613, 614, 615, 616, 617, 621, 622, 623, 624, 625, 626, 627, 631, 632, 633, 634, 635, 636, 637, 641, 642, 643, 644, 645, 646, 647, 651, 652, 653, 654, 655, 656, 657, 661, 662, 663, 664, 665, 666, 667, 671, 672, 673, 674, 675, 676, 677, 711, 712, 713, 714, 715, 716, 717, 721, 722, 723, 724, 725, 726, 727, 731, 732, 733, 734, 735, 736, 737, 741, 742, 743, 744, 745, 746, 747, 751, 752, 753, 754, 755, 756, 757, 761, 762, 763, 764, 765, 766, 767, 771, 772, 773, 774, 775, 776, 777

Tất cả các giá trị trên đều là giá trị đúng cho CHMOD và đương nhiên bạn có quyền gán các giá trị này lên tập tin, thư mục bất kỳ trong cấu trúc website của bạn.

Theo mặc định của đại đa số các server, sau khi bạn upload file, các file này sẽ được gán giá trị 644 tức User có quyền Xem, ghi nội dung, Group và Other chỉ có quyền xem. CHMOD 666 sẽ cho phép mọi người có quyền xem và ghi nội dung vào tập tin, thư mục đó. CHMOD 755 thường được gán cho các chương trình CGI (Các file .cgi, .pl) để cho phép các chương trình này hoạt động. CHMOD 777 cho phép mọi người có toàn quyền trên tập tin, thư mục.

Trong hầu hết trường hợp, tác giả các chương trình CGI, PHP sẽ hướng dẫn bạn cách chmod tập tin, thư mục để chương trình có thể hoạt động chính xác. Nếu gặp lỗi, hãy liên hệ với quản trị server nơi bạn host website để được trợ giúp do mỗi server sẽ có thể có những cách config khác nhau.
Về CHMOD cho vbb, theo kinh nghiệm của mình thì sẽ làm như sau:

Trước hết tuyệt đổi đừng cmod 777


Cmod foler

- /public_html/ là 710 (Nhớ là 710 chứ không phải 701 nhé!)
- Các folder khác là 701

- Folder chứa file config cmod là 101

Làm vậy có tác dụng gì:


-Attacker không thể view được cấu trúc website của bạn. (Nếu change cả các path mặc định trong cấu trúc website nữa thì attack sẽ khó mà view dc file của ta!)

-Khi bạn không đặt index thì người khác cũng không thể view được site bạn dưới chế độ Index Off

- Dù attacker biết được folder chứa file config của chúng ta ở đâu thì cũng không thể view được bất cứ 1 files nào trong đó cả! (Nên kết hợp cả việc rename file config đi nữa thì đúng là tuyệt - attacker khó lòng mà mò ra cho nổi!

Chmod files

- Chúng ta sẽ cmod tất cả các files là 404 (Trừ trường hợp có files bắt buộc phải chmod khác 404 mới chạy được! Lúc đó đành chịu thôi)
- File config chúng ta chmod là 100
- File htacess thì chmod 444 (Để bảo vệ cấu hình!)

Làm vậy có tác dụng gì ???

Webshell sẽ không thể ghi đè hay sửa đổi nội dung của các file được chmod 404 => Không thể chèn mã độc vào được! (Nhưng hình như xóa được thì phải, bị xóa thì đành chịu khó up lại thui)

File config chmod 100 --> chỉ có quyền Owner được phép thực thi files, còn tất cả đều disable --> thì dù cho hacker có biết vị trí files config cũng chẳng thể view source file được!

Các files đều CHMOD 404 --> lỡ source của chúng ta dính webshell thì cũng không thể run shell được vì không một nhóm nào có quyền thực thi nôi dung files

Vậy khi run shell nó sẽ báo lỗi như sau:
Not Acceptable
An appropriate representation of the requested resource /webshell.php could not be found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Vậy là coi như xong bước dạo đầu trong việc security - Có lẽ CHMOD vậy là đủ.

Tới vấn đề thứ 2 ---->

Thay đổi cấu trúc, tên folder - files mặc định của web, thay đổi path config

Bây giờ các bạn hay để ý cấu trúc foler cơ bản của host mà nhà cung cấp cho bạn:
/home/username/public_html/

Với usename là user của bạn (Thường max là 8 kí tự - và trùng với 8 kí tự đầu của main domain)

Tùy theo sever config thế nào mà attacker có hay không thể tìm được user của bạn!

Nhưng xét trường hợp attacker đã tìm được đúng folder của host bạn rồi, phải làm thế nào để attacker phải bất lực!

Thử nghĩ xem, khi bạn có 1 domain là http://sitecuaban.com
Link forum của bạn là: http://sitecuaban.com/forum
Thật quá đơn giản để đoán ra được foler chứa source forum của bạn là

/home/username/public_html/forum

Nếu không có gì thay đổi ta có thể đoán được files config của bạn:
/home/username/public_html/forum/includes.config.php

Thật quá dễ dàng phải không nào...

Bạn thấy một số website thường để link forum dạng như:

http://forum.sitecuaban.com/

Bạn đoán ra tác dụng của nó rùi chứ, link như vậy thì ta sẽ không thể đoán được folder chứa source forum của bạn nằm ở đâu!

Giả sử bây giờ ta đặt folder cho subdomain đó là:

/home/username/public_html/n/h/a/t/a/n/h/f0zum

Ngay cả khi chưa thay đổi path config mặc định, đó path files config của bạn sẽ là
/home/username/public_html/n/h/a/t/a/n/h/f0zum/includes/config.php

Attacker có webshell trên sever nhưng khó lòng mà mò ra được path để view files, hết kiên nhẫn attacker của chúng ta sẽ nản --> đây có thể gọi là chiến thuật tạo mê cung bằng nhiều lớp folder đè lên nhau --> làm cho hacker nau nản! (

Chú ý: Tất cả các folder trống các bạn để file index.html rỗng vào! (Hoặc có thể để 1 trang giả lỗi HTTP 404 cũng dc

Đó mới là bước dạo đầu, cách tạo folder kiểu như trên các bạn nên làm ngay khi cài đặt forum, chứ đừng cài xong mới thay đổi để tránh phải sửa chữa lằng nhằng

Tiếp tục là xử lí 4 files này: classcore.php ; config.php ; init.php (Trong includes ) và file diagnostic.php (trong admincp) ngoài ra còn có một số files khác như global.php ... (Tóm lại cứ đọc hết tut nhé ) :

Ta hãy tận dụng triệt để những gì mà ta có thể làm để bảo vệ file config (Vì hacker cũng sẽ dùng mọi thủ đoạn để lấy được file config của chúng ta)

Đầu tiên là file config.php
Ta sẽ đổi tên 2 folder là admincpmodcp vì đó là 2 folder quan trọng! (Tại sao thì các bạn biết rùi!)
Mở nó ra tìm:
$config['Misc]['admincpdir]=admincp';
$config['Misc]['modcpdir]=modcp';
Thay admincp modcp thành tên folder mà các bạn đã đổi!

Thủ đoạn vô biên --> change rùi nhưng ta cứ create 2 folder admincp và modcp giả rùi đặt cái gì vô đó để lừa tình những thằng nào gà gà (Lừa thế nào thì là do bạn)

Tiếp nào....

Mặc định trong vbb vị trí file config.php sẽ là
./inludes/config.php

Ngu gì mà để nguyên thế này nhỉ, ta sẽ nhét nó vô chỗ khác, và rename nó luôn, vậy cách làm thế nào:
File chứa vị trí của file config trong vbb là:
./includes/config.php

Files chứa vị trí của config.phpclass_core.php diagnostic.php

Ta mở file class_core.php ra find dòng thứ 2533:
include(CWD . '/includes/config.php');

Điền lại đường dẫn files config. Ví dụ mình đổi file config.php thành nhatanh.php Và cho nó vào folder nhatanh_secret (ngang hàng với folder incudes). Thì sẽ điền lại như sau:

include(CWD . '/nhatanh_secret/nhatanh.php');

Vẫn ở file class_core.php tìm tiếp

if (file_exists(CWD. '\includes\config.php'))

Thay lại giống như trên!

Tiếp tục làm tương tự với files diagnostic.php

Tìm:

$ignored_files=array('/includes/config.php',


Thay lại đường dẫn cho đúng!

Có vẻ vẫn chưa ổn lắm nhỉ... tăng thêm tính thủ đoạn một chút, nhớ cái trò mê cung folder chông lên nhau chứ

Mình sẽ để files config như sau:
. '/nhatanh_secret/h/a/he/he/nhatanh.php

Thích giống mê cung hơn chút nữa thì trong mỗi folder mình lại tạo thêm vài folder rỗng để lừa nó

Note: Tất cả các folder này chmod hết là 101 ( Chú ý cmod từ folder trong cùng lần lượt ra ngoài, fille config phải được cmod đầu tiên --> folder con --> các folder cha nếu không là cmod xong folder cha sẽ chả thấy cái gì bên trong nữa mà cmod ) Vậy thì sau khi open folder ngoài cùng (ở đây là folder nhatanh_secret ra attacker sẽ không thấy một folder hay file nào bên trong cả --> họ sẽ không thể biết folder tiếp theo là h và nếu có mò được 1 folder thì mò tới folder thứ 2 --> Thứ 3 thời gian sẽ tính theo cấp số nhân! --> Nản là cái chắc!

Nhưng cần thận hơi nữa thì chúng ta sẽ làm tiếp như sau .... ...trình độ có hạn thủ đoạn vô biên (Cái câu này của bọn hacker nói mới đúng )

File class_core.php là files chứa path của files config --> Chúng ta giấu config nhưng thằng nào khôn nó sẽ view class_core.php trước thì sao!

Files chứa path của file class_core.php là file init.php

require_once(CWD . '/includes/class_core.php');


Thay đổi tương tự giống như khi đổi file config (Tất nhiên là đổi cả vị trí lẫn tên của nó cho an toàn!)

Và tương tự như vậy ..

File chưa vị trí của file init.php của chúng ta là trong các files global.php và file image.php (Nằm ngang hàng với inex.php của forum!
Các files global.php nằm ở trong folder chứa index của forum, folder modcp folder archive

Tương tự như cách di chuyển và rename file config ở trên chúng ta mở các files global.php tìm dòng:

require_once(CWD . '/includes/init.php');


Sửa ./includes/init.php thành path của files init.php sau khi ta di chuyển!

Mở files image.php tìm:

require_once(CWD . '/includes/init.php');


Sửa tương tự như các files global.php

Thêm chút thủ đoạn nữa cho nó vô biên (Cũng lại để lừa gà  --> Tất cả các files sau khi đổi tên và di chuyển --> chúng ta hãy cứ copy lại các file mặc định của nó vào (Như files config, class_core..v.v) đúng vị trí, liên kết với nhau như thật, tất nhiên là không để nội dung thật vào --> CỐt để đánh lừa những kẻ máu ăn ngay mà!

.END TUT.

Trích dẫnTUT BY: NHATANH
TUT WRITE FOR NHATANH'S BLOG
[Là thành viên Viet4room.com mới thấy được links => ]
All rights reserved

Hix viết dài quá, viết cả buổi chiều, đã thế trình độ còn non kém chằng biết có sai chỗ nào không! Mọi người đọc kĩ vào nhé phát hiên chỗ nào có vấn đề thì báo ngay cho mình nhé!

--------------------------------------------------

BÀI VIẾT RẤT HỮU ÍCH CHO CÁC BẠN MỚI TẬP LÀM VBB - ĐÂY LÀ BƯỚC ĐẦU ĐỂ CÁC BAN Có THỂ HIỂU VỀ BẢO MẬT CĂN BẢN KHI BẮT ĐẦU LÀM FORUM HAY WEBSITE!
CHÚC CÁC BẠN THÀNH CÔNG!