Tải bản đầy đủ (.docx) (37 trang)

Tìm hiểu về tấn công leo thang đặc quyền (Privilege Escalation) trên Oracle và thực nghiệm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (690.51 KB, 37 trang )

HỌC VIỆN KĨ THUẬT MẬT MÃ
KHOA AN TỒN THƠNG TIN
****************

BÁO CÁO BÀI TẬP LỚN MƠN:
AN TỒN CƠ SỞ DỮ LIỆU
Đề tài: Tìm hiểu về tấn cơng leo thang đặc quyền
(Privilege Escalation) trên Oracle và thực nghiệm
Giảng viên: Ts. Trần Thị Lượng
Sinh viên thực hiện: Đỗ Minh Hiếu
Đinh Thị Thu
Trần Văn Nam
Nguyễn Thị Tuyền
Hà Nội, tháng 12 năm 2021


MỤC LỤC
DANH MỤC HÌNH VẼ

4

Lời mở đầu

5

CHƯƠNG 1

7

TỔNG QUAN TẤN CƠNG LEO THANG ĐẶC QUYỀN


7

1.1 Giới thiệu về tấn cơng leo thang đặc quyền

7

1.2 Các dạng leo thang đặc quyền

8

1.2.1. Leo thang đặc quyền dọc

8

1.2.2. Leo thang đặc quyền ngang

10

1.3. Các biện pháp bảo vệ hệ thống giảm thiểu leo thang đặc quyền

11

1.4 Vấn đề đặt ra:

12

CHƯƠNG 2

14


LEO THANG ĐẶC QUYỀN TRONG HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU
ORACLE

14

2.1 Giới thiệu cấu trúc Oracle

14

2.2 Quản trị trong Oracle

16

2.2.1 Phân loại User

16

2.2.2 Đặc quyền trong Oracle

18

2.3 Các loại tấn công leo thang đặc quyền trong Oracle

23

2.3.1 PL/SQL injection

23

2.3.2 Leo thang đặc quyền DBA bằng CREATE ANY VIEW


26

2.3.2.1 Cơ sở tấn công

26

2.3.2.2 Leo thang đặc quyền bằng đặc quyền CREATE ANY VIEW

27

2


2.3.3 Leo thang đặc quyền DBA bằng EXCUTE ANY PROCEDURE VÀ
CREATE PROCEDURE

30

2.3.3.1 Leo thang đặc quyền bằng đặc quyền EXCUTE ANY
PROCEDURE

30

2.3.3.2 Leo thang đặc quyền bằng đặc quyền CREATE PROCEDURE

30

2.3.4 Leo thang đặc quyền DBA bằng ORACLE INDEXES


31

KẾT LUẬN

35

TÀI LIỆU THAM KHẢO

36

3


DANH MỤC HÌNH VẼ

Hình 1. Cấu trúc 3 lớp của Oracle

Trang 13

Hình 2. Phương thức xác nhận quyền

Trang 18

Hình 3. Thiết lập điều kiện để tấn công leo thang đặc quyền với
PL/SQL injection

Trang 23

Hình 4. Thiết lập điều kiện để tấn cơng leo thang đặc quyền với


Trang 25

CREATE ANY VIEW

Hình 5. Tạo thủ tục Sproc thử nghiệm

Trang 26

Hình 6. Các bước tấn công leo thang đặc quyền với CREATE

Trang 28

ANY VIEW

Hình 7. Lược đồ logic leo thang đặc quyền CREATE ANY VIEW

Trang 29

Hình 8. Các bước tấn cơng leo thang đặc quyền bằng ORACLE

Trang 33

INDEXES

4


Lời mở đầu
Hiện nay dưới sự phát triển của công nghệ 4.0, công nghệ phần mềm đang ngày
càng phát triển, mọi dữ liệu, thơng tin quan trọng thay vì lưu trữ bằng giấy tờ như

sổ sách giờ đã được thay thế bằng cơ sở dữ liệu trên internet. Cơ sở dữ liệu và cơng
nghệ cơ sở dữ liệu đã có những tác động to lớn trong việc phát triển sử dụng máy
tính. Có thể nói rằng cơ sở dữ liệu ảnh hưởng đến tất cả các nơi có sử dụng máy
tính như: Kinh doanh (thơng tin về sản phẩm, khách hàng,…), Giáo dục (thông tin
về sinh viên, điểm,…), Thư viện (thông tin về tài liệu, tác giả, độc giả,…), Y tế
(thông tin về bệnh nhân, thuốc…),…Những thông tin này vô cùng quan trọng, sự
ngưng trệ hay hoạt động thiếu chính xác, hay bị kẻ xấu xâm nhập và khai thác một
cách trái phép sẽ gây hậu quả nghiêm trọng. Do vậy bảo vệ thông tin trong cơ sở
dữ liệu là một vấn đề cần được đầu tư nghiên cứu và triển khai ứng dụng nhất định.
Để làm được điều này, chúng ta cần phải xây dựng cơ sở dữ liệu cùng với các hệ
quản trị cơ sở dữ liệu, Oracle là một trong số đó.
Oracle là bộ phần mềm được cung cấp bởi công ty Oracle, là một trong những hệ
quản trị cơ sở dữ liệu phổ biến nhất thế giới. Để hình dung dễ dàng hơn và hiểu rõ
hơn về kỹ thuật an toàn được thể hiện trong hệ quản trị cơ sở dữ liệu, nhóm chúng
em chọn đề tài “Tìm hiểu về tấn cơng leo thang đặc quyền trong hệ quản trị
Oracle” làm đề tài bài tập lớn mơn học An tồn cơ sở dữ liệu.
Nội dung đề tài gồm 3 phần:
Chương 1. Tổng quan tấn công leo thang đặc quyền
Chương 2. Leo thang đặc quyền trong hệ quản trị cơ sở dữ liệu Oralce
Chương 3. Thực nghiệm và đánh giá
5


Nội dung đề tài đi từ khái niệm cơ bản đến cách thức để tấn công leo thang đặc
quyền trong hệ quản trị cơ sở dữ liệu Oracle giúp người đọc có cái nhìn tổng qt
về vấn đề leo thang đặc quyền cũng như quy trình thực hiện tấn cơng Oracle dựa
trên một số lỗ hổng được cơng bố.
Nhóm đề tài xin chân thành cảm ơn cô Trần Thị Lượng đề tận tình giảng dạy, giúp
đỡ tận tình để nhóm thực hiện tốt đề tài mơn an tồn cơ sở dữ liệu này. Mặc dù
nhóm đã cố gắng thực hiện đề tài này nhưng do còn hạn chế về mặt thời gian cũng

như năng lực nên đề tài khó tránh khỏi thiếu sót và khuyết điểm. Nhóm rất mong
được nhận sự thông cảm và sự đánh giá, nhận xét của q thầy cơ và sự góp ý của
các bạn để giúp đề tài được hoàn thiện hơn.
Xin cảm ơn tất cả mọi người đã tạo những điều kiện tốt nhất để chúng em hoàn
thành đề tài này!

Hà Nội, tháng 12 năm 2021
SINH VIÊN THỰC HIỆN
Đỗ Minh Hiếu
Đinh Thị Thu
Trần Văn Nam
Nguyễn Thị Tuyền

6


CHƯƠNG 1
TỔNG QUAN TẤN CÔNG LEO THANG ĐẶC QUYỀN
1.1 Giới thiệu về tấn công leo thang đặc quyền

Leo thang đặc quyền (Escalating Privilege): là một cách thức phổ biến để tin tặc
có thể truy cập trái phép vào một hệ thống được bảo vệ. Những kẻ tấn cơng thường
tìm một điểm yếu trong hệ thống phòng thủ của tổ chức và khai thác điểm yếu này
để giành quyền truy cập vào hệ thống. Trong đa số các trường hợp, điểm xâm nhập
đầu tiên sẽ không cung cấp cho tin tặc mức độ truy cập hay dữ liệu mà họ cần. Sau
đó, họ cố gắng khai thác những lỗ hổng trong hệ thống hoặc sử dụng những công
cụ cụ thể để vượt qua cơ chế cấp phép của hệ thống và giành lấy mức truy cập cao
hơn, vượt quá những gì được dự định hoặc được hưởng đối với người dùng sau đó
thu thập những dữ liệu nhạy cảm, bảo mật.
Kẻ tấn công hiện sử dụng các đặc quyền kiếm được để đánh cắp dữ liệu bí mật và

triển khai phần mềm độc hại với mục đích làm hỏng hệ điều hành, các ứng dụng
7


máy chủ và cuối cùng là danh tiếng của một tổ chức. Loại tấn công vào dữ liệu tổ
chức này có thể được thực hiện ngay cả bởi một tin tặc không tinh vi để đạt được
các đặc quyền ngày càng tăng, lý do là hầu hết các tổ chức kinh doanh không sử
dụng đủ các biện pháp bảo mật và kiểm soát.
Nâng cấp đặc quyền: là một giai đoạn quan trọng của chuỗi tấn công mạng
và thường liên quan đến việc khai thác lỗ hổng leo thang đặc quyền, chẳng hạn như
lỗi hệ thống, phần mềm định cấu hình sai hoặc kiểm sốt truy cập khơng đầy đủ.
1.2 Các dạng leo thang đặc quyền

Kẻ tấn công bắt đầu bằng cách khai thác lỗ hổng leo thang đặc quyền trong một hệ
thống hoặc ứng dụng mục tiêu, cho phép chúng ghi đè các giới hạn của tài khoản
người dùng hiện tại. Sau đó, họ có thể truy cập chức năng và dữ liệu của người
dùng khác (leo thang đặc quyền theo chiều ngang) hoặc có được các đặc quyền
nâng cao, thường là của quản trị viên hệ thống hoặc người dùng quyền lực khác
(leo thang đặc quyền dọc). Sự leo thang đặc quyền như vậy thường chỉ là một
trong những bước được thực hiện để chuẩn bị cho cuộc tấn cơng chính.
1.2.1. Leo thang đặc quyền dọc
Leo thang đặc quyền dọc (Vertical privilege escalation): còn gọi là độ cao
đặc quyền, trong đó người dùng hoặc ứng dụng đặc quyền thấp hơn truy cập vào
các chức năng hoặc nội dung dành cho người dùng hoặc ứng dụng có đặc quyền
8


cao hơn (ví dụ: người dùng Internet Banking có chức năng quản trị hệ thống và sửa
đổi cơ sở dữ liệu).Với các đặc quyền nâng cao này, kẻ tấn công có thể phá hủy tất
cả các tài nguyên trong hệ thống máy tính và ứng dụng của bạn: đánh cắp thông tin

truy cập và thông tin nhạy cảm khác, tải xuống và thực thi phần mềm độc hại, xóa
dữ liệu hoặc thực thi mã tùy ý. Tệ hơn nữa, những kẻ tấn cơng có thể sử dụng các
đặc quyền nâng cao để che dấu vết của chúng bằng cách xóa nhật ký truy cập và
bằng chứng khác về hoạt động của chúng. Điều này có khả năng khiến nạn nhân
khơng biết rằng một cuộc tấn công đã xảy ra. Bằng cách đó, tội phạm mạng có thể
ngấm ngầm đánh cắp thông tin hoặc cài đặt phần mềm độc hại trực tiếp trong hệ
thống.
Một số ví dụ leo thang đặc quyền dọc:
Trong một số trường hợp, một ứng dụng đặc quyền cao giả định rằng nó sẽ chỉ
được cung cấp với đầu vào khớp với đặc tả giao diện của nó. Kẻ tấn cơng có thể
khai thác giả định này để chạy mã trái phép với đặc quyền của ứng dụng:
+ Buffer Overflow: về bản chất cuộc tấn công tràn bộ đệm gửi q nhiều thơng tin
cho một biến nào đó trong ứng dụng, có thể gây lỗi ứng dụng. Một lỗ hổng như
tràn bộ đệm có thể được sử dụng để thực thi mã tùy ý với đặc quyền được nâng lên
Administrator.
+ Cross Zone Scripting là một kiểu tấn công leo thang đặc quyền trong đó một
trang web thay đổi mơ hình bảo mật của trình duyệt web, cho phép chạy mã độc
trên máy khách.
+ Một ứng dụng có thể thực thi các dịng lệnh Command line hoặc shell có thể có
lỗ hổng Shell Injection nếu nó sử dụng đầu vào khơng có giá trị giống như một
phần của lệnh được thực thi, kẻ tấn cơng sau đó có thể chạy các lệnh hệ thống bằng
các đặc quyền ứng dụng.
IOS jaibreaking: là sự leo thang đặc quyền của thiết bị Apple với mục đích
xóa bỏ các hạn chế phần mềm do Apple áp đặt lên có hệ điều hành iOS, iPadOS,
tvOS và watchOS. Jailbreak cho phép truy cập root trong hệ điều hành di động của
Apple, cho phép cài đặt phần mềm không được Apple chấp thuận, như tùy chỉnh và
chỉnh sửa giao diện người dùng.
9



Root (Android): là quá trình cho phép người dùng điện thoại thơng minh,
máy tính bảng hay các thiết bị sử dụng hệ điều hành android để đạt được quyền
truy cập root. Vì android sử dụng nhân linux, việc root thiết bị Android cho phép
truy cập tương tự các quyền quản trị như trên linux hoặc bất kỳ hệ điều hành nào
giống như Unix (FreeBSD, macOS). Root cung cấp quyền thay đổi hoặc thay thế
ứng dụng và cài đặt hệ thống, các ứng dụng chuyên dụng yêu cầu quyền cấp quản
trị viên hoặc các hoạt động khác mà người dùng Android khơng thể truy cập được.
Rootkit: là một loại chương trình thường được sử dụng để che giấu các tiện
ích trên hệ thống bị xâm nhập. Rootkit bao gồm cái gọi là backdoor, nó giúp cho kẻ
tấn cơng đó truy cập vào hệ thống sẽ dễ dàng hơn trong lần sau. Ví dụ, các rootkit
có thể ẩn một ứng dụng, ứng dụng này có thể sinh ra một lệnh kết nối vào một
cổng mạng cụ thể trên hệ thống. Backdoor cho phép các q trình bắt đầu bởi một
người khơng có đặc quyền, dùng để thực hiện chức năng thường dành cho các
quản trị viên.
1.2.2. Leo thang đặc quyền ngang
Leo thang đặc quyền ngang (Horizontal privilege escalation): người dùng
bình thường truy cập các chức năng hoặc nội dung dành riêng cho những người
dùng bình thường khác (ví dụ: người dùng Internet Banking A truy cập vào tài
khoản Internet Banking của người dùng B).

Một số nguy cơ leo thang đặc quyền ngang:
+ Có thể dự đốn được session ID trong HTTP cookie của người dùng
+ Session fixation
+ Cross-site scripting
+ Mật khẩu dễ đoán
+ Trộm cắp hoặc chiếm quyền điều khiển
10


+ Keystroke logging

1.3. Các biện pháp bảo vệ hệ thống giảm thiểu leo thang đặc quyền
Những kẻ tấn công sử dụng nhiều kỹ thuật leo thang đặc quyền để đạt được
mục tiêu của họ. Nhưng để cố gắng leo thang đặc quyền ở bước đầu tiên, họ
thường cần có quyền truy cập vào tài khoản người dùng ít đặc quyền hơn. Điều này
có nghĩa là tài khoản người dùng thơng thường cần bảo vệ đầu tiên, do đó cần thực
hiện các biện pháp để kiểm sốt truy cập:


Thực thi chính sách mật khẩu: mật khẩu cần phải đủ mạnh và thay đổi mật
khẩu thường xuyên để bảo mật, nhưng không gây bất tiện cho người dùng.



Tạo người dùng và nhóm chuyên biệt với quyền truy cập và quyền truy cập
tệp tối thiểu cần thiết: áp dụng quy tắc quyền tối thiểu cần thiết để giảm
thiểu rủi ro khi bất kỳ tài khoản người dùng bị xâm phạm.

Các ứng dụng cung cấp điểm vào dễ dàng nhất cho bất kỳ cuộc tấn cơng
nào, vì vậy điều quan trọng là giữ an tồn cho chúng:


Tránh các lỗi lập trình phổ biến trong các ứng dụng của bạn: tránh các lỗi lập
trình phổ biến thường bị kẻ tấn công nhắm tới như tràn bộ đệm, code
injection và đầu vào của người dùng không được xác thực



Bảo mật cơ sở dữ liệu và lọc đầu vào của người dùng: các hệ thống cơ sở dữ
liệu thường là mục tiêu tấn cơng vì nhiều ứng dụng web hiện nay và
frameworks lưu trữ tất cả dữ liệu của chúng trong cơ sở dữ liệu bao gồm cài

đặt cấu hình, thơng tin đăng nhập và dữ liệu người dùng. Chỉ với một cuộc
tấn công SQL injection, kẻ tấn cơng có thể có quyền truy cập vào tất cả
thông tin này sử dụng để cho cuộc tấn công tiếp theo.

Không phải tất cả các cuộc tấn công leo thang đặc quyền nhắm trực tiếp vào
tài khoản người dùng, đặc quyền của quản trị viên cũng có thể có được bằng cách
khai thác lỗi ứng dụng và hệ điều hành hay lỗi cấu hình. Để giảm thiểu:


Giữ cho hệ thống và ứng dụng được vá và cập nhật: Nhiều cuộc tấn cơng
khai thác lỗi đã biết, vì vậy ta cần giữ cập nhật để hạn chế tấn công

11




Đảm bảo quyền chính xác cho tất cả các tệp và thư mục: cũng như tài khoản
người dùng, các tệp và thư mục cần tuân theo quy tắc quyền tối thiểu, nếu có
gì đó khơng cần ghi hãy giữ ở chế độ đọc.



Đóng các cổng khơng cần thiết và xóa tài khoản người dùng khơng sử dụng:
cấu hình hệ thống mặc định thường bao gồm các dịch vụ không cần thiết
chạy trên các cổng mở và mỗi cổng là một lỗ hổng tiềm năng. Bạn có thể
xóa hoặc đổi tên tài khoản người dùng mặc định để tránh kẻ tấn cơng bắt đầu
dễ dàng.




Xóa và hạn chế tất các các chức năng truyền tệp: kẻ tấn công thường cần
một cách để tải xuống tập lệnh khai thác và mã độc, vì vậy hãy xem kĩ tất cả
các cơng cụ, tiện ích hệ thống cho phép truyền tập như FTP, wget, curl...
Xóa các cơng cụ bạn khơng cần và khóa những cơng cụ cịn lại, hạn chế sử
dụng chúng cho các thư mục, người dùng và ứng dụng cụ thể.



Thay đổi thông tin đăng nhập mặc định trên tất cả các thiết bị bao gồm cả
router và máy in: chỉ cần bộ định tuyến có mật khẩu mặc định của quản trị
viên hay một máy in mạng có cổng telnet đang mở có thể cung cấp cho kẻ
tấn cơng chỗ đứng.



Thường xuyên quét các hệ thống và ứng dụng để tìm lỗ hổng

Để giảm nguy cơ leo thang đặc quyền người dùng có thể sử dụng một vài
biện pháp khác:


Ngăn chặn thực thi dữ liệu



Bố trí ngẫu nhiên khơng gian địa chỉ (làm cho tấn cơng tràn bộ đệm khó
thực hiện hơn)




Sử dụng trình biên dịch bẫy tràn bộ đệm



Mã hóa phần mềm hoặc các thành phần firmware



Sử dụng hệ thống với kiểm soát truy nhập bắt buộc MAC

12


1.4 Vấn đề đặt ra:
Vậy có khả thi khơng khi khai thác những lỗi thuộc về những người dùng
không phải quản trị viên của cơ sở dữ liệu và từ đó lấy được các đặc quyền của
quản trị viên cơ sở dữ liệu? Câu trả lời là có thể làm được nhưng phụ thuộc vào
nhiều yếu tố như đặc quyền mà người dùng bị tin tặc chiếm đoạt thực sự có là gì.
Tin tặc thực sự có thể lạm dụng những đặc quyền cụ thể để khai thác được đặc
quyền của quản trị viên cơ sở dữ liệu. Một trong số đó sẽ dễ dàng để khai thác hơn
so với những đặc quyền còn lại. Những đặc quyền dễ bị khai thác nhất là đặc
quyền CREATE ANY bởi rất nhiều đặc quyền CREATE ANY cho phép kẻ khai
thác tiến tới rất gần với đặc quyền của DBA. Ngoài ra, thậm chí đặc quyền
CREATE PROCEDURE cũng có thể bị khai thác để để chiếm quyền DBA.

13


CHƯƠNG 2

LEO THANG ĐẶC QUYỀN TRONG HỆ QUẢN TRỊ CƠ SỞ DỮ
LIỆU ORACLE
2.1 Giới thiệu cấu trúc Oracle
Oracle được xây dựng trên 3 kiến trúc gồm:
+ Kiến trúc bộ nhớ (memory structure)
+ Kiến trúc process (process structure)
+ Kiến trúc về lưu trữ (storage structure)

Hình 1. Cấu trúc 3 lớp của Oracle
Lớp dữ liệu (File Systems)
Lớp dữ liệu bao gồm các tập tin dữ liệu được tổ chức lưu trữ tại các đĩa cứng của
một hoặc nhiều máy chủ khác nhau (tính phân tán của CSDL Oracle). Khi có các
u cầu truy xuất từ phía các máy trạm, các thành phần bên trong dữ liệu đã được
14


các xử lý bên dưới nạp đúng phần dữ liệu cần truy xuất trước đó từ đĩa cứng vào
bên trong bộ nhớ của máy chủ. Điều này sẽ giúp cho tốc độ truy xuất được hiệu
quả hơn.
Thông thường bên trong một CSDL Oracle sẽ có nhiều loại tập tin dữ liệu khác
nhau. Tiêu biểu là một số loại tập tin sau:
▪ Tập tin tham số (init file): là tập tin chứa các thông tin cơ sở liên quan đến
tên CSDL, vị trí của các tập tin điều khiển, các tham số ...
▪ Tập tin điều khiển (control file): là tập tin chứa các thông tin liên quan đến
ngày giờ tạo CSDL, vị trí của CSDL...
▪ Tập tin dữ liệu (database file): là tập tin chứa dữ liệu thật sự của CSDL.
▪ Tập tin lưu vết (redo log file): là tập tin chứa các hành động cập nhật dữ liệu
(thêm, sửa, huỷ) bên trong các giao tác.
Lớp xử lý bên dưới (Background processes)
Lớp xử lý bên dưới tại máy chủ sẽ đảm bảo cho mối quan hệ giữa phần CSDL vật

lý và phần hiển thị trong bộ nhớ được khớp nhau. Cũng giống như lớp dữ liệu, các
xử lý được chia ra làm nhiều loại khác nhau. Một số xử lý tiêu biểu như sau:
▪ Xử lý ghi vào CSDL (database writer): xử lý này được tự động thực hiện khi
dữ liệu trên vùng đệm của bộ nhớ máy tính bị đầy, khi đó hệ thống sẽ đọc và
ghi xuống CSDL các dịng dữ liệu bị thay đổi và sau đó giải phóng vùng
đệm bộ nhớ máy tính.
▪ Xử lý ghi vào tập tin log (log writer): xử lý này được tự động thực hiện để
ghi nhận xuống tập tin log các thơng tin dữ liệu bên trong q trình thực hiện
giao tác. Điều này sẽ làm an toàn dữ liệu hơn khi giao tác chưa kết thúc
nhưng thông tin vẫn được lưu trữ.
Lớp bộ nhớ (Memory)
Lớp bộ nhớ bao gồm nhiều thành phần khác nhau được tổ chức lưu trữ trên vùng
đệm bộ nhớ của máy tính nhằm tăng tốc độ xử lý trong Oracle, khái niệm này còn
được biết đến với một tên khác là vùng toàn cục hệ thống (System global area).
Một số vùng đệm tiêu biểu như sau:

15


▪ Vùng đệm lưu trữ CSDL (database buffer cache): là nơi lưu trữ các thông tin
dữ liệu đã được đọc từ các tập tin dữ liệu trên đĩa cứng.
▪ Vùng đệm lưu trữ các thông tin chung thường dùng (dictionary cache): là
nơi lưu trữ các bảng hệ thống của CSDL Oracle, bản thân Oracle thường
xuyên sử dụng các bảng này do đó bên trong hệ thống Oracle đã quyết định
đặt chúng trên bộ nhớ nhằm tránh đi việc đọc đĩa thường xuyên.
▪ Vùng đệm lưu trữ lệnh SQL (SQL area): là nơi lưu trữ các lệnh SQL được
thực hiện tại máy chủ mà các máy trạm truyền đến. Tại đây các lệnh sẽ được
phân tích cú pháp, kiểm tra tính đúng sai trước khi thực hiện và trả về kết
quả cho các máy trạm.
2.2 Quản trị trong Oracle

2.2.1 Phân loại User
Oracle là một hệ quản trị cơ sở dữ liệu lớn, chạy trên môi trường mạng. Để
vận hành hệ thống được tốt, có thể có nhiều người sẽ cùng tham gia vào hệ thống
với những vai trò khác nhau gọi là các user. Có thể phân ra làm một số loại user
chính sau:
▪ Database Administrators
▪ Security Officers
▪ Application Developers
▪ Application Administrators
▪ Database Users
▪ Network Administrators
Database Administrators
Do hệ thống Oracle database có thể là rất lớn và có nhiều user cùng tham gia
vào hệ thống, khi đó sẽ có một hay một số người chịu trách nhiệm quản lý hệ thống
được gọi là database administrator (DBA). Mỗi data cần ít nhất một người để thực
hiện công việc quản trị. Một database administrator có trách nhiệm thực hiện một
số cơng việc sau:
✔ Cài đặt và nâng cấp Oracle server và các công cụ ứng dụng khác.
16


✔ Phân phối hệ thống lưu trữ và lên kế hoạch lưu trữ cho hệ thống cơ sở dữ
liệu trong tương lai.
✔ Tạo những cấu trúc lưu trữ cơ bản như tablespaces phục vụ cho việc phát
triển và hoạt động của các ứng dụng.
✔ Tạo các đối tượng trong database như tables, views, indexes sử dụng cho các
ứng dụng được thiết kế.
✔ Thay đổi cấu trúc database khi cần thiết tuỳ theo các thông tin của các
application.
✔ Quản lý các users và đảm bảo bảo mật hệ thống.

✔ Đảm bảo tương thích về bản quyền, phiên bản với hệ thống Oracle
✔ Điều khiển và quản trị các user access truy xuất tới database.
✔ Quản lý và tối ưu các truy xuất tới database.
✔ Lên kế hoạch backup (sao lưu) và recovery (phục hồi) các thơng tin có trong
database.
✔ Lưu trữ các archive data.
✔ Sao lưu và khôi phục database.
✔ Cập nhật các công nghệ mới đưa ra các câu hỏi bổ ích.
Security Officers
Trong một số trường hợp, hệ thống địi hỏi chế độ bảo mật cao. Khi đó cần
đến một hay một nhóm người chun thực hiện cơng tác bảo vệ database gọi là
security officers. Security officer có thể kết nối tới database, điều khiển và quản lý
việc truy cập database của các users và bảo mật hệ thống.
Application Developers
Application developer là người thiết kế và viết các ứng dụng database.
Application developer có trách nhiệm thực hiện một số yêu cầu sau:
✔ Thiết kế và phát triển ứng dụng database.
✔ Thiết kế cấu trúc database cho từng ứng dụng.
✔ Đánh giá yêu cầu lưu trữ cho ứng dụng.
17


✔ Quy định các hình thức thay đổi cấu trúc database của ứng dụng.
✔ Thiết lập biện pháp bảo mật cho ứng dụng được phát triển.
Database Users
Database users tương tác với database thơng qua các ứng dụng và các tiện
ích. Một user điển hình có thể thực hiện được một số cơng việc sau:
✔ Truy nhập, sửa đổi, và xố huỷ các dữ liệu được phép
✔ Tạo các báo cáo đối với dữ liệu
Network Administrators

Đối với database Oracle hoạt động trên mơi trường mạng, khi đó cần có một
user thực hiện cơng việc quản trị mạng. User này có trách nhiệm đảm bảo các ứng
dụng Oracle hoạt động trên môi trường mạng được tốt.

2.2.2 Đặc quyền trong Oracle
Là quyền thực hiện một thao tác nhất định đối với cơ sở dữ liệu. Đặc quyền
có thể gán (Grant) hoặc thu hồi (Revoke) đối với người dùng.
Phân loại:
● Đặc quyền đối tượng: quyền thực hiện một thao tác cụ thể lên một schema
object cụ thể. Ví dụ như quyền thêm, xóa, sửa các hàng dữ liệu khỏi bảng.
● Đặc quyền hệ thống: quyền thực hiện một tác vụ cơ sở dữ liệu cụ thể hoặc
quyền thực hiện một loại hành động trên tất cả những đối tượng schema của
hệ thống. Ví dụ: quyền ALTER SYSTEM, quyền CREATE TABLE, quyền
DELETE ANY TABLE ...
Quyền DBA: Ngay khi tạo database, Oracle đã tạo sẵn một quyền gọi là "DBA".
Quyền này cho phép thực hiện các thao tác quản trị đối với database.
Việc phân quyền sử dụng là cần thiết trong cơng việc quản trị. Có hai user account
được tự động tạo ra ngay từ khi tạo database và được gán quyền DBA là: SYS và
SYSTEM.
❖ Tài khoản SYS
18


✔ Là tài khoản sở hữu cơ cơ dữ liệu và từ điển dữ liệu.
✔ User SYS được tạo tự động và được gán role DBA.
✔ Không nên tạo các table hay chỉnh sửa gì trong schema của user SYS.
❖ Tài khoản SYSTEM
✔ Là tài khoản được tạo khi tạo cơ sở dữ liệu, được gán role DBA.
✔ User SYSTEM thường sở hữu các bảng do Oracle cung cấp.
✔ User SYSTEM có thể tạo thêm các table và view để cung cấp thông tin quản

trị.
✔ Không nên tạo các đối tượng bằng tài khoản này.
Lưu ý: Với quyền DBA, các users này sẽ có thể can thiệp được tới các quyền của
các user khác sử dụng trong hệ thống. Vì thế, những quản trị viên database cần
thay đổi mật khẩu của mình tránh sử dụng mật khẩu mặc định do Oracle cung cấp
vì user khác có thể biết và sử dụng để truy nhập vào hệ thống một cách trái phép,
gây xáo trộn hệ thống.
2.2.3 Phương thức xác nhận quyền
Trong một số trường hợp quản trị viên database cần đến phương thức xác
nhận quyền truy nhập đặc biệt do có thể lúc đó database chưa được mở, ví dụ như
với các trường hợp shutdown hoặc startup database.
Tuỳ thuộc vào việc quản trị database trên cùng một máy hay ở máy khác mà
ta có thể sử dụng cơ chế xác nhận quyền truy nhập database bởi hệ điều hành hay
hay password files.

19


Hình 2. Phương thức xác nhận quyền
2.2.3.1 Xác nhận quyền bởi hệ điều hành
Việc xác nhận quyền bởi hệ điều hành được tiến hành theo các bước:
▪ Trong hệ điều hành Windows NT tạo một user’s group với
tên ORA_<SID>_DBA và một nhóm
khác ORA_<SID>_OPER với <SID> tương ứng với tên của instance,
hoặc ORA_DBA và ORA_OPER (khi này ta không quan tâm tới instance).
▪ Thêm một user vào group để khi truy cập vào hệ điều hành, user có thể tự
động được xác định quyền DBA.
▪ Đặt tham số REMOTE_LOGIN_PASSWORDFILE trong parameter file
là NONE.
▪ Kết nối tới database với mức quyền SYSDBA hay SYSOPER.

▪ CONNECT / AS { SYSDBA | SYSOPER }
Ghi chú:
▪ NET8 được cài đặt trên các hệ điều hành Windows 95, Windows NT để giúp
cho việc xác nhận quyền.
▪ Các phiên bản trước của Oracle sử dụng lệnh: CONNECT INTERNAL với
cú pháp: CONNECT INTERNAL/pw AS SYSDBA. Lệnh: CONNECT
INTERNAL hiện tại vẫn được sử dụng.

20


▪ Với việc xác nhận quyền truy nhập bởi hệ điều hành, ta không cần quan tâm
tới các mức quyền (privilege) thay vào đó, ta cần quan tâm tới hai quyền
được cung cấp bởi hệ điều hành là OSDBA và OSOPER.
OSOPER: là quyền cho phép user có
thể STARTUP, SHUTDOWN, ALTER DATABASE OPEN/MOUNT, ALTER
DATABASE BACKUP, ARCHIVE LOG, và RECOVER, ngoài ra cịn có thêm cả
quyền RESTRICTED SESSION.
OSDBA: là quyền cho phép user có thể có được tất cả các quyền của OSOPER,
ngồi ra cịn có thêm một số mức quyền phục vụ quản trị database là ADMIN
OPTION, và CREATE DATABASE
2.2.3.2. Xác nhận quyền bằng file mật khẩu
Oracle hỗ trợ các tiện ích password cho phép kết nối tới Oracle Server sử
dụng username và password. Việc truy cập vào database sử dụng password file
được hỗ trợ bởi lệnh GRANT.
Sử dụng file mật khẩu:
+ Tạo file mật khẩu bằng lệnh:
orapwd file=<fname> password= entries=<entries>
Với:
fname: là tên file mật khẩu

password: là mật khẩu của SYS hay INTERNAL
entries: là số lượng tối đa các quản trị viên được phép
Đặt tham số REMOTE_LOGIN_PASSWORDFILE là EXCLUSIVE hoặc
SHARED
Với:
EXCLUSIVE: chỉ một instance có thể sử dụng file mật khẩu
SHARED: nhiều instance có thể dùng file mật khẩu
21


+ Gán quyền cho user:
GRANT SYSDBA TO admin;
GRANT SYSOPER TO admin
+ Kết nối tới database theo cú pháp:
SVRMGRL>CONNECT internal/admin AS SYSDBA
Xem thông tin về các member trong file mật khẩu
Thông tin về các member trong file mật khẩu được lưu trong
view: V$PWFILE_USER. Nó cho biết có những user nào được gán
quyền SYSDBA hay SYSOPER.
Diễn giải một số cột trong V$PWFILE_USER:
+ USERNAME: Tên user
+ SYSDBA: Cột này nhận giá trị TRUE thì User này được gán quyền SYSDBA
+ SYSOPER: Cột này nhận giá trị TRUE thì User này được gán quyền SYSOPER
Khi kết nối với database theo mức quyền SYSDBA hay SYSOPER, user đó
sẽ được kết nối tới các schema mặc định, với SYSDBA thì schema mặc định
là SYS, với SYSOPER thì schema mặc định là PUBLIC.
Thay đổi mật khẩu internal
Sử dụng tiện ích ORADIM để tạo lại file mật khẩu.
C:\>ORADIM -NEW -SID sid [-INTPWD internal_pwd][SRVC svrcname]
[MAXUSERS n][STARTMODE auto, manual][-PFILE filename]

Với: sid: tên instance
internal_pwd: mật khẩu internal account
srvcname: tên service
n: số lượng tối đa file mật khẩu
auto or manual: chế độ khởi động service là: manual hay automatic
filename: cho phép sử dụng file mật khẩu không phải là mặc định
Để thay đổi mật khẩu INTERNAL ta thực hiện theo các bước sau:
22


1.

Xóa mật khẩu cũ

C:\> ORADIM -DELETE -SID sid
2.

Tạo mật khẩu mới

C:\> ORADIM -NEW -SID sid -INTPWD internal_pwd - MAXUSERS N
2.3 Các loại tấn công leo thang đặc quyền trong Oracle
2.3.1 PL/SQL injection
a) Khái niệm
PL/SQL (Procedural Language/Structured Query Language) là ngôn ngữ thủ tục
mở rộng cho Ngơn ngữ truy vấn có cấu trúc. SQL là một ngôn ngữ phổ biến cho
cả truy vấn và cập nhật dữ liệu trong hệ quản trị cơ sở dữ liệu quan hệ
(RDBMS). PL/SQL bổ sung nhiều cấu trúc thủ tục cho ngôn ngữ SQL để khắc
phục một số hạn chế của SQL. Bên cạnh đó, PL / SQL cung cấp một giải pháp
ngôn ngữ lập trình tồn diện hơn để xây dựng các ứng dụng quan trọng trên Cơ sở
dữ liệu Oracle.

PL/SQL thực thi với các quyền của người định nghĩa (thủ tục được sở hữu bởi
người dùng SYS sẽ thực thi với quyền SYS)
Từ khoá AUTHID CURRENT_USER:
+ PL/SQL được tạo bởi từ khoá AUTHID CURRENT_USER thực thi với
quyền của invoker
+ Một thủ tục được sở hữu bởi SYS nhưng được gọi bởi SCOTT sẽ thực thi
với quyền của SCOTT
PL/SQL tương tự với tiến trình Suid trong Unix world
b) PL/SQL injection
▪ Tấn công leo thang đặc quyền bằng PL/SQL là một sự kết hợp thông minh của
nhiều các hàm/ thủ tục với các lỗ hổng trong đoạn mã PL/SQL với nhau. Kỹ thuật
này rất phổ biến trong lĩnh vực bảo mật. Các DBA thường sẽ biết đến lỗ hổng này.
Với nhiều phiên bản DB vẫn giữ ngun cơng nghệ này bởi vì Oracle đã ngăn chặn
một vài cách.
23


▪ Để sử dụng được phương pháp tấn công này kẻ tấn cơng:
+ Cần có quyền tạo hoặc chỉnh sửa một hàm/ thủ tục nào đó.
+ Sau đó kẻ tấn cơng tạo một hàm với từ khố là AUTHID CURRENT_USER rồi
thực thi câu lệnh SQL mà kẻ tấn công muốn leo thang.
+ Cuối cùng là tiêm hàm đó bằng cách sử dụng một lỗ hổng SQL injection
Đoạn mã minh hoạ 2 giai đoạn tấn công PL/SQL :
1. Một hàm với đoạn mã để leo thang đặc quyền

Với hàm này kẻ tấn cơng sẽ có được đặc quyền PUBLIC trong DBA
2. Chạy các câu lệnh SQL injection nhằm khai thác dữ liệu của cơ sở dữ liệu

Code ví dụ:


24


Hình 3.
Thiết lập điều kiện để tấn cơng leo thang đặc quyền với PL/SQL injection
Hạn chế:
▪ Nếu lỗ hổng chỉ có câu lệnh SELECT thì chỉ có câu lệnh SELECT được
thực thi trong hàm injection.
+ Lý do: khi cố gắng thực thi câu lệnh DML trong một câu lệnh
SELECT bạn có thể nhận được mã lỗi sau: ORA-14551: cannot
perform a DML operation inside a query
▪ Không thể inject các câu lệnh định nghĩa dữ liệu (DDL- Data Definition
Language)
+ Lý do: khi bạn cố gắng thực thi câu lệnh DDL bạn có thể nhận về
mã lỗi sau: ORA-14552: cannot perform a DDL, commit or rollback
inside a query or DML
▪ Hàm được inject sẽ được thực thi như một hàm phụ thuộc vào ngữ cảnh bên
trong lỗ hổng SQL

25


×