banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận bảo mật ngăn chặn local thông qua mysql  XML
  [Question]   ngăn chặn local thông qua mysql 07/09/2006 23:46:45 (+0700) | #1 | 21433
[Avatar]
baothu
Elite Member

[Minus]    0    [Plus]
Joined: 15/09/2003 02:42:15
Messages: 57
Offline
[Profile] [PM]
Mýql như chúng ta đã biết là một DBMS rất phổ biến ,chung quy chia ra 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. 

Đội ngũ phát triển Mysql vì muốn nâng cao khả năng tiện dụng của mysql mà đã đưa thêm một số function có nguy cơ tìm tàng đối với vấn đề bảo mật của server .
Chúng ta hẳn đã nghe nói đến hình thức local qua mysql ?.Xem thử một ví dụ như sau :
(giả định attacker có một mysql user có quyền tạo ,chỉnh sửa, thêm xoá DB trên sever )
Code:
use atttacker;
Create table readfile(text LONGTEXT);
Insert into readfile values(loadfile('/etc/passwd');

Result:
Select * from readfile; 

Code:
rootsmilie:0:0:root:/root:/bin/bash
binsmilie:1:1:bin:/bin:/sbin/nologin
daemonsmilie:2:2:daemon:/sbin:/sbin/nologin
admsmilie:3:4:adm:/var/adm:/sbin/nologin
lpsmilie:4:7:lp:/var/spool/lpd:/sbin/nologin
syncsmilie:5:0:sync:/sbin:/bin/sync
shutdownsmilie:6:0:shutdown:/sbin:/sbin/shutdown
haltsmilie:7:0:halt:/sbin:/sbin/halt
mailsmilie:8:12:mail:/var/spool/mail:/sbin/nologin
newssmilie:9:13:news:/etc/news:
uucpsmilie:10:14:uucp:/var/spool/uucp:/sbin/nologin
operatorsmilie:11:0:operator:/root:/sbin/nologin
gamessmilie:12:100:games:/usr/games:/sbin/nologin
gophersmilie:13:30:gopher:/var/gopher:/sbin/nologin
ftpsmilie:14:50:FTP User:/var/ftp:/sbin/nologin
nobodysmilie:99:99:Nobody:/:/sbin/nologin
vcsasmilie:69:69:virtual console memory owner:/dev:/sbin/nologin
rpmsmilie:37:37::/var/lib/rpm:/sbin/nologin
netdumpsmilie:34:34:Network Crash Dump user:/var/crash:/bin/bash
nscdsmilie:28:28:NSCD Daemon:/:/sbin/nologin
identsmilie:100:101::/home/ident:/sbin/nologin
sshdsmilie:74:74smilierivilege-separated SSH:/var/empty/sshd:/sbin/nologin
rpcsmilie:32:32smilieortmapper RPC user:/:/sbin/nologin
mailnullsmilie:47:47::/var/spool/mqueue:/sbin/nologin
smmspsmilie:51:51::/var/spool/mqueue:/sbin/nologin
pcapsmilie:77:77::/var/arpwatch:/sbin/nologin
xfssmilie:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
cannasmilie:39:39:Canna Service User:/var/lib/canna:/sbin/nologin
wnnsmilie:49:49:Wnn Input Server:/var/lib/wnn:/sbin/nologin
mysqlsmilie:101:102:MySQL server:/var/lib/mysql:/bin/bash
namedsmilie:25:25:Named:/var/named:/sbin/nologin

Một số bạn tự hỏi rằng : Quái? Sao server được hardening cẩn thận rồi ,php : safe_mod on ,đã set open_basedir ,disable function tá lả mà nó vẫn local được ? .Rất có thể admin quản trị server đã bỏ quên ,chưa chăm sóc đến anh chàng mysql này. Vậy vấn đề của chúng ta là tìm ra các nguy cơ từ tính tiện dụng của mysql , đứng ở góc nhìn của customer (đặt trường hợp bạn quản trị một server cung cấp shared host) xem họ có cần thiết phải sử dụng các chức năng đó hay ko ,và Attacker sẽ làm gì khi họ có được một mysql user ,sau đó ta sẽ triển khai giải pháp hạn chế ,ngăn ngừa nguy cơ này.
Ta hãy xem xét qua các function của mysql . Vậy trong các function này ,cái nào có nguy cơ bảo mật nhất ?
Mysql có 3 hàm có khả năng thao tác file là load_file() ,load data infile và dumpfile.
Trước tiên hãy xem qua hàm load_file();
Hàm này có cú pháp như sau :
LOAD_FILE(file_name)  

Công dụng của hàm này là đọc và trả về giá trị của file như một chuỗi . Xem manual page của mysql ,bạn sẽ thấy hàm này cần vài điều kiện để có thể thực thi
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.
 

Đầu tiên ,user (mysql) phải có File Privilege ,kế đến fiel này phải readable by all. Đây là 2 chìa khoá để ta chốt cổng ,không cho attacker chui vào smilie) . Hãy đặt mình dưới góc độ của một customer thuê host bình thường ,khi họ muốn thao tác file có thể xảy ra 2 trường hợp :
1 dùng php or perl ,cgi ,asp để manipulate
2 là dùng Ftp để chỉnh sửa trực tiếp
Vậy thì File privilege hoàn toàn không cần thiết cho một user bình thường sử dụng .Để ngăn chặn nguy cơ từ hàm load_file() này ,bạn đơn giản chỉ việc disable file privilege của toàn bộ user trong mysql .
Kế đến ta xem xét tiếp chức năng load data infile;
Hàm này có cú pháp như sau :
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,...)]
 

(bài viết này giả định bạn đã có kiến thức về mysql ,ở đây ta ko bàn đến cú pháp hay cách dùng hàm)
Hàm này cũng có công dụng tương tự load_file() nhưng run với tốc độ khá nhanh . Ngoài ra còn có thêm từ khoá "Local" .Trong trường hợp từ khóa local được thêm vào query . Mysql sẽ đọc file trên client và gửi nó về server. Đa số server hiện nay đều set trên localhost nên việc có hay ko local cũng ko quan trọng lắm .Hãy xem sơ qua điều kiện để hàm này có thể thi hành :
For security reasons, when reading text files located on the server, the files must either reside in the database directory or be readable by all. Also, to use LOAD DATA INFILE on server files, you must have the FILE privilege 

Vẫn chiếc chìa khoá vàng File privilege ,bạn có thể ngăn chặn được khả năng readfile từ mysql .
Việc dumpfile hiếm server nào cho phép nên ta không bàn tới
Kết luận :
Mysql là một DBMS thực sự mạnh mẽ vì tính tiện dụng và sức mạnh của nó nhưng vì một số hàm tiện dụng quá lại trở thành mối nguy cơ tiềm tàng cho attacker lợi dụng . Hy vọng sau bài viết nho nhỏ này ,bạn có thể nâng cao mức bảo mật của hệ thống .Các thiếu sót mong được mọi người góp ý
thân
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|