Jun 9, 2008
87 Views

Prevent mysql read file exploit

Written by

Dạo này đa số anh em exploit method local hack thông qua mysql ,điều này rất nguy hiểm vì nếu set sai permission (hoặc permiss cần thiết để secure thì server ko support ) –> site ra đi

Cách thức chống đỡ hình thức tấn công này
1. Nhìn tổng quát vấn đề:
Mysql là một hệ quản trị cơ sở dữ liệu khá phổ biến ,nói chung chia làm 4 loại:

* MySQL Standard includes the standard storage engine, as well as the InnoDB storage engine, which is touted as a “transaction-safe, ACID-compliant database” with some additional features over the standard version.
* MySQL Pro is the commercial version.
* MySQL Max includes the more technologically advanced features that are available during early access programs.
* MySQL Classic is the standard storage engine without the InnoDB engine. This is another commercial version.

Trong các function của mysql ? đâu là nguy cơ bảo mật mà chúng ta đang đề cập đến ?
Mysql có 3 hàm có khả năng đọc và viết là Load_file() ,load data infile (load local data infile ,tuỳ ver) và dumpfile
Việc out file thì hiếm gặp nên des ko bàn đến ,ở đây chỉ chú trọng việc ngăn chặn local qua mysql = cách readfile
Đầu tiên là xử lý hàm load_file()
hãy xem sơ qua cú pháp của hàm này:
LOAD_FILE(file_name)
Công dụng :đọc nội dung một file và trả về như là chuỗi ,khá nguy hiểm ,hàm này được mysqlAB thêm vào để tăng thêm power của mysql giúp cho người dùng dễ sử dụng hơn ,nhưng sự tiện dụng này lại khá nguy hiểm
Giở manual của mysql ra xem ,ta thấy có một số điều kiện tối quan trọng để hàm này work tốt

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.

File privilege là gì ,mời anh em xem qua table sau:

Privilege Column Context

Phân tích qua nhu cầu của một user bình thường ,cho dù họ dùng công nghệ gì đi nữa (java,php,asp,cfm,..) cũng rất hiếm có khả năng load file qua mysql –> điều này chỉ có người có dụng ý đặc biết làm thôi ,điều mấu chốt ở đây ,ta tìm được một privilege quan trọng
Như vậy ,để vô hiệu hoá hàm này ta chỉ cần disable privile FILE cho mọi user ,kể cả root của mysql
phù ,vậy là giải quyết xong 1 subproblem thứ I
Vấn đề thứ II : Load data infile
Hàm này có speed nhanh hơn rất nhiều so với load file ,anh em có thể xem cú pháp trong manual của mysql
Theo mặc định ,mysql được complie với option –enable-local-infile
mà hấu hết mấy ku cpanel đều dính
Để disable function này ,việc đầu tiên chúng ta cần shutdown mysql đi
sau đó boot lại với option –local-infile=0 ,khi client nào cố gắng load file sẽ nhận được thông báo

ERROR 1148: The used command is not allowed with this MySQL version

hy vọng qua tut này anh em có thể hiểu hơn phần nào về kỹ thuật load file và cách phòng chống

Article Categories:
IT & Network
    http://linholiver.com

    https://linholiver.com/diary/about/