*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ự:
CHMOD là gì ???- 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
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)
Về CHMOD cho vbb, theo kinh nghiệm của mình thì sẽ làm như sau: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.
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:
Vậy là coi như xong bước dạo đầu trong việc security - Có lẽ CHMOD vậy là đủ.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.
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:
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)/home/username/public_html/
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à
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
Thật quá dễ dàng phải không nào.../home/username/public_html/forum/includes.config.php
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à:
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
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! (/home/username/public_html/n/h/a/t/a/n/h/f0zum/includes/config.php
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à admincp và modcp vì đó là 2 folder quan trọng! (Tại sao thì các bạn biết rùi!)
Mở nó ra tìm:
Thay admincp và modcp thành tên folder mà các bạn đã đổi!$config['Misc]['admincpdir]=admincp';
$config['Misc]['modcpdir]=modcp';
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à
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:./inludes/config.php
File chứa vị trí của file config trong vbb là:
Files chứa vị trí của config.php là class_core.php và diagnostic.php./includes/config.php
Ta mở file class_core.php ra find dòng thứ 2533:
Đ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 . '/includes/config.php');
Vẫn ở file class_core.php tìm tiếpinclude(CWD . '/nhatanh_secret/nhatanh.php');
Thay lại giống như trên!if (file_exists(CWD. '\includes\config.php'))
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:
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ó. '/nhatanh_secret/h/a/he/he/nhatanh.php
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!
THỦ THUẬT