Bạn ghé thăm diễn đàn lần đầu? hãy đăng ký ngay bây giờ để tham gia.
  • Đăng nhập:

Chào mừng bạn đến với ITVNN FORUM - Diễn đàn công nghệ thông tin.

Nếu đây là lần đầu tiên bạn tham gia diễn đàn, xin mời bạn xem phần Hỏi/Ðáp để biết cách dùng diễn đàn. Để có thể tham gia thảo luận bạn phải đăng ký làm thành viên, click vào đây để đăng ký.


  • Partner Area
    • ITVNN HOSTING - Thiết kế website, Cung cấp Domain, Hosting, VPS Việt Nam Anh Hùng - Thông tin truyền thông
kết quả từ 1 tới 2 trên 2
Tăng kích thước phông chữ Giảm kích thước phông chữ
  1. #1
    Tuxedo's Avatar

    Trạng thái
    Offline
    Tham gia ngày
    Sep 2009
    Thành viên thứ
    77
    Giới tính
    Bài gởi
    53
    Level: 30 [?]
    Experience: 282,947
    Next Level: 300,073
    Cảm ơn 0
    Cảm ơn 0 lần / 0 Bài viết

    Default Bảo mật dành cho root server  

    MySQL là một DBMS ( Database Management System - hệ thống quản trị cơ sở dử liệu ) gồm 4 loại ver:
    * MySQL Standard bản chuẩn.
    * MySQL Pro là bản thương mại
    * MySQL Max là phiên bản nâng cao tích hợp những chức năng cao cấp.
    * MySQL Classic : không tích hợp InnoDB engine.

    Để cho thuận tiện, nhà sản xuất đã tích hợp thêm một số function có thể gây xâm hại đến bảo mật hệ thống. Như ở bài trước, thì một vào function trog số này đã được lợi dụng để thực hiện local attack ( tấn công cục bộ trên cùng máy chủ ).

    Giả dụ hacker có quyền tạo, edit , delete, thêm / xóa DB trên server, hacker có thể tốn công qua kịch bản :
    - Tạo 1 db
    - Tạo một table mới.
    - Thực hiện chuỗi câu lệnh :

    use atttacker;
    Create table readfile(text LONGTEXT);
    Insert into readfile values(loadfile('/etc/passwd');

    Và kết quả là :

    Select * from readfile;

    root:0:0:root:/root:/bin/bash
    bin:1:1:bin:/bin:/sbin/nologin
    daemon:2:2:daemon:/sbin:/sbin/nologin
    adm:3:4:adm:/var/adm:/sbin/nologin
    lp:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:5:0:sync:/sbin:/bin/sync
    shutdown:6:0:shutdown:/sbin:/sbin/shutdown
    halt:7:0:halt:/sbin:/sbin/halt
    mail:8:12:mail:/var/spool/mail:/sbin/nologin
    news:9:13:news:/etc/news:
    uucp:10:14:uucp:/var/spool/uucp:/sbin/nologin
    operator:11:0:perator:/root:/sbin/nologin
    games:12:100:games:/usr/games:/sbin/nologin
    gopher:13:30:gopher:/var/gopher:/sbin/nologin
    ftp:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody99:Nobody:/:/sbin/nologin
    vcsa:69:69:virtual console memory owner:/dev:/sbin/nologin
    rpm:37:37::/var/lib/rpm:/sbin/nologin
    netdump:34:34:Network Crash Dump user:/var/crash:/bin/bash
    nscd:28:28:NSCD Daemon:/:/sbin/nologin
    ident:100:101::/home/ident:/sbin/nologin
    sshd74rivilege-separated SSH:/var/empty/sshd:/sbin/nologin
    rpc:32:32ortmapper RPC user:/:/sbin/nologin
    mailnull:47:47::/var/spool/mqueue:/sbin/nologin
    smmsp51::/var/spool/mqueue:/sbin/nologin
    pcap:77:77::/var/arpwatch:/sbin/nologin
    xfs:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
    canna:39:39:Canna Service User:/var/lib/canna:/sbin/nologin
    wnn:49:49:Wnn Input Server:/var/lib/wnn:/sbin/nologin
    mysql:101:102:MySQL server:/var/lib/mysql:/bin/bash
    named:25:25:Named:/var/named:/sbin/nologin

    Một số người có thể tự hỏi rằng sao hacker có thể làm được điều đó trong khi đã cố gắng bảo mật cho server bằng cách bật safe mode, disable function, disable open_basedir, cài thêm nhiều mod security cho server. Thật ra đây có thể là do người quản trị quên hoặc đã không cẩn thận trong quá trình cấu hình cũng như thiết lập lại hệ thống. Mỗi người quản trị cần phải đặt mình vào vị trí của người dùng shared - host để đánh giá :
    + "khách hàng có cần sử dụng những fuction đó không ?"
    + "hacker có thể làm gì nếu sở hữu được quyền kiếm soát bất kỳ 1 user trong MySQL"

    Sau khi trả lời 2 câu hỏi đó, rất có thể bạn sẽ tìm được câu trả lời cho vấn đề bảo mật của mình.
    Nhìn lại cách thức attack local qua MySQL, hacker sử dụng load_file() để tấn công. Cấu trúc chung của hàm này là LOAD_FILE(file_name) . Hàm này được sử dụng với mục đích chính là đọc 1 file và trả về nội dụng dưới dạng chuỗi ký tự. Theo manual của MySQL :

    " To use this function, the file must be located on the server host, you must specify the full pathname to the file, and you must have the FILE privilege. The file must be readable by all and its size less than max_allowed_packet bytes. "

    Như trên ta thấy để có thể đọc được file qua MySQL thì account phải có quyền FILE privilege và file muốn đọc phải có quyền read ( đc phép đọc ). Dựa vào đó ta có 2 cách để ngăn chặn việc truy xuất file trái phép :
    + chmod file: không có quyền read ở nhóm group và world, cách chmod tôi hay áp dụng là 401 ( |r--|---|--x| ), để thực hiện chỉnh sửa file bạn nên thực hiện trong Control Panel hoặc qua FTP.
    + cấm FILE privilege của tất cả các user trong MySQL.

    -- Kịch bản 2 Thông qua hàm load data infile :
    Trước khi vào đề thì mình xin nói sơ qua về hàm load data:
    Hàm load data local trong MySQL lâu nay đc khai thác để attack local khá nhiều và cũng không ít srv dính lỗi này, thậm chí là rất phổ biến với các shared hosting vốn đòi hỏi yêu cầu về độ bảo mật cao.
    Hàm này cho phép tải nội dung của một file ở bên trong srv "local" hoặc client host.
    Theo mặc định thì đều được biên dich với tùy chọn --enable-local-infile. Để tắt tùy chọn này bạn dùng command để đăng nhập vào mysql với quyền root rồi dùng câu lệnh --local-infile=0 hoặc edit file my.cnf trong /etc
    -----------------
    [mysqld]
    ...(other stuff)
    local-infile=0
    [mysql]
    ...(other stuff)
    local-infile=0
    --------------------
    Sau đó shutdown và chạy lại MySql.
    ----------------------------------------
    shell> mysqladmin shutdown
    shell> cd /usr/libexec
    shell> mysqld
    ----------------------------------------

    Khi đó nếu dùng hàm này sẽ có thông báo lỗi:
    ERROR 1148: The used command is not allowed with this MySQL version

    Ok vào đề thôi

    "LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [FIELDS
    [TERMINATED BY 'string']
    [[OPTIONALLY] ENCLOSED BY 'char']
    [ESCAPED BY 'char']
    ]
    [LINES
    [STARTING BY 'string']
    [TERMINATED BY 'string']
    ]
    [IGNORE number LINES]
    [(col_name,...)] "

    Hàm này cũng giống như load_file() nhưng tốc độ thực hiện câu lệnh nhanh hơn. Ở đâu có thêm phạm vi "local", "local" ở đây có thể là localhost như /home/vietchuye/public_html/index.php hoặc client host như http://www.ddcntt.vn/index.php. Với nhu cầu dùng thông thường để setup và chạy trên localhost thì rõ ràng hàm này là không cần thiết.
    Để sử dụng được hàm này thì file để đọc cần phải ở trong thư mục chứa database hoặc phải được phép read ở nhóm "world" và user MySQL phải có quyền FILE privilege.
    Qua 2 kịch bản trên ta thấy FILE privilege chính là chìa khóa để giải quyết vấn đề attack local qua MySQL.

    Tóm lại : MySQL là một hệ quản trị cơ sở dữ liệu rất mạnh mẽ và hữu dụng nhưng nó cũng có nhiều chức năng không cần thiết làm nảy sinh những nguy cơ tiềm ẩn về bảo mật hệ thống. Qua bài viết này tôi không có hy vọng có thể giúp các bạn khắc phục triệt để được vấn nạn local attack qua MySQL này nhưng hy vọng các bạn có thể tự cho mình những kinh nghiệm cho vấn đề bảo mật hệ thống server, phục vụ tốt cho công việc của các bạn.
    trên đây là bài mình sưu tầm được, nhưng lưu ý là không phải chỉ có mỗi cách này

    mình sẽ post tiếp các hướng dẫn sau về bảo mật

  2. #2
    hackerkinhcan_lha's Avatar

    Trạng thái
    Offline
    Họ tên
    Phan Thanh Tâm
    Tham gia ngày
    Sep 2009
    Thành viên thứ
    2
    Giới tính
    Bài gởi
    136
    Level: 35 [?]
    Experience: 726,167
    Next Level: 824,290
    Cảm ơn 9
    Cảm ơn 17 lần / 14 Bài viết

    Default

    Cái này chính là local via sql
    Nice post


 

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Trả lời: 0
    Bài mới gởi: 23-05-2016, 08:29 AM
  2. Hướng dẫn IT cấu hình máy chủ Server toàn phần
    By hkcvietnam in forum Thủ thuật, mẹo vặt
    Trả lời: 2
    Bài mới gởi: 23-05-2016, 08:08 AM
  3. Cho Em Hỏi Về Thư Mục Root
    By universare in forum Hỏi đáp & Thảo luận
    Trả lời: 2
    Bài mới gởi: 31-05-2011, 01:33 AM
  4. Thư mục validation trong root folder vbb 4
    By ca rot in forum Hỏi đáp & Thảo luận
    Trả lời: 4
    Bài mới gởi: 16-05-2011, 06:17 AM
  5. HDD server, RAM server, Raid controller ...
    By nbkhanh1982 in forum Tư vấn - Thị trường
    Trả lời: 0
    Bài mới gởi: 05-07-2010, 03:46 PM

Tags for this Thread

Bookmarks

Quuyền Hạn Của Bạn

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể chỉnh sửa bài viết
  •