SQL Injection Lab
Nội dung của phần LAB của module 14 – SQL Injection thể hiện rất rõ phương châm “Hack để bảo mật hơn !”, module này bao gồm chuyên về những phương thức và kỹ năng thực hành thâm nhập hệ thống như : quét lỗi bảo mật, truyền các lệnh thực thi trái phép, xâm nhập hệ thống máy chủ Web của hacker để người quản trị có cái nhìn tổng quan từ phía những hacker để thực hiện chế độ bảo mật cho Web site của mình một cách tốt hơn .
Vì lý do các lỗi bảo mật về SQL Injection thì rất nhiều các ứng dụng Web bị mắc phải .Do đó trong giới hạn của tài liệu này tôi lấy một ví dụ điển hình về lỗi SQL Injection đó là lỗi ứng dụng Web ASP (Active Server Pages) làm ví dụ để hướng dẫn trong phần LAB của module này .
i sử dụng . Thoạt nhìn, đoạn mã trong trang “login.asp” dường như không chứa bất cứ một lổ hổng bảo mật nào .Người sử dụng không thể đăng nhập hệ thống khi không có username và password hợp lệ .Tuy nhiên, đoạn mã này thực sự sự không an toàn và là tiền đề cho một lỗi SQL Injection .Đặc biệt, chổ sơ hở là chổ dữ liệu nhập (truyền) vào từ người sử dụng lại được dùng xây dựng, thực thi trục tiếp câu lệnh SQL .Chính điều này cho phép hacker có thể điều khiển câu truy vấn sẽ được thực hiện . Ví dụ : nếu người sử dụng nhập chuỗi sau vào trong cả 2 ô nhập dữ liệu username / password của trang “client.htm” là : ‘ OR 1=1 -- .Lúc này câu truy vấn sẻ được gọi lên và thực thi yêu cầu vùa được gửi tới: Và câu truy vấn này là hợp lệ với các điều kiện của ứng dụng Web và sẻ trả về tất cả các table ghi của USERINFO và đoạn mã tiếp theo xử lý người sử dụng đăng nhập bất hợp pháp này như là một người sử dụng hợp lệ . Ví dụ về bypass : Đăng nhập sai username / password . Web Server từ chối đăng nhập . Đăng nhập bằng chuỗi ‘ OR 1=1 -- . Web Server chấp nhận đăng nhập trái phép trên . Dạng tấn công sử dụng câu lệnh INSERT : Hình thức tấn công kiểu này sẽ giúp cho hacker sử dụng các câu lệnh SQL truy vấn tương tác trực tiếp lên cơ sở dữ liệu của ứng dụng Web thông qua các lỗi do người phát triển ứng dụng vô tình mắc phải . Ta có thể xem xét trên một ví dụ điển hình, hacker có thể đưa thêm thông username / password vào cơ sở dữ liệu của dụng Web bằng câu INSERT một cách bình thường .Trong khi trước đó cơ sở dữ liệu của ứng dụng Web chưa hề có thông tin về username / password mà hacker vứa tạo ra . Trong trường hợp này, ta sẽ sử dụng 2 trang .Một trang HTML để hiển thị form nhập dữ liệu và một trang ASP dùng để xử lý thông tin nhập từ phía người sử dụng . Ví dụ : nếu hacker nhập một chuỗi sau vào trong ô nhập dữ liệu username của trang “client2.htm” là : ‘;INSERT INTO USERINFO VALUES(‘ATTACK’,’P@SSW0RD’);-- .Lúc này câu truy vấn sẻ được gọi lên và thực thi yêu cầu vừa được gửi tới: Và câu truy vấn này là hợp lệ với các điều kiện của ứng dụng Web và sẻ được đưa thêm các thông tin mà hacker vừa truyền vào đến table ghi của USERINFO và lúc này tất nhiên hacker đã tự tạo cho mình được username / password trong cơ sở dữ liệu của ứng dụng Web .Lúc này hacker đương nhiên hợp pháp đăng nhập vào hệ thống bằng username của mình như một người hợp lệ . Ví dụ về INSERT : Sử dụng câu lệnh “’;INSERT INTO USERINFO VALUES(‘ATTACK’,’P@SSW0RD’);--” . Ứng dụng Web từ chối đăng nhập vì sai username / password . Lúc này thực hiện đăng nhập bằng username : ATTACK và password: P@SSW0RD . Ứng dụng Web chấp nhận yêu cầu đăng nhập trên vì username / password có trong cơ sở dữ liệu của ứng dụng Web . Và đây là cơ sở dữ liệu của table USERINFO trước và sau khi bị hacker sử dụng câu lệnh INSERT . Dạng tấn công sử dụng câu lệnh Stored – Procedures : Dạng tấn công bằng Stored – Procedures gây tác hại lớn hơn nhiều so với hai dạng tấn công trên nếu ứng dụng được thực thi với quyền quản trị hệ thống cơ sở dữ liệu “SA” (System Administrator) . Một ví dụ điển hình, nếu hacker truyền vào câu lệnh như sau có thể tạo thêm, thay đổi toàn bộ giao diện của cả một Website thông qua Stored – Procedures : “’;EXEC MASTER..XP_CMDSHELL “ECHO YOU – ARE – HACKED !!!> C:\HEYMAN.TXT”;--” . Trong trường hợp này, ta vẫn sẽ sử dụng 2 trang .Một trang HTML để hiển thị form nhập dữ liệu và một trang ASP dùng để xử lý thông tin nhập từ phía người sử dụng . Ví dụ : nếu hacker nhập một chuỗi sau vào trong ô nhập dữ liệu username của trang “client2.htm” là : ’;EXEC MASTER..XP_CMDSHELL “ECHO YOU – ARE – HACKED !!!> C:\HEYMAN.TXT”;-- .Lúc này câu truy vấn sẻ được gọi lên và thực thi yêu cầu vừa được gửi tới trực tiếp lên XP_CMDSHELL của toàn bộ hệ thống của máy chủ Web chứ không riêng gì ứng dụng Web . Và câu truy vấn này là hợp lệ với các điều kiện của ứng dụng Web và sẻ được thực thi trực tiếp vào XP_CMDSHELL của toàn bộ hệ thống máy chủ Web có chứa ứng dụng Web bị lỗi SQL Injection này .Lúc này hacker đương nhiên hợp pháp được quyền tương tác lên máy chủ Web thông qua ứng dụng Web bị lỗi SQL này một cách hợp lệ . Ví dụ về Stored – Procedures : Sử dụng giao diện của ứng dụng Web bị lỗi SQL Injection . Hacker sử dụng câu lệnh “’;EXEC MASTER..XP_CMDSHELL “ECHO YOU – ARE – HACKED !!!> C:\HEYMAN.TXT”;--” .Đưa vào ô nhập username và gửi yêu cầu tới ứng dụng Web . Ứng dụng Web sẽ từ chối vì username này không hợp lệ . Và đây là file “HEYMAN.TXT” được tạo ra trong ổ C:\ của máy chủ Web . Dạng tấn công sử dụng Shutting down : Đây là dạng tân công mà khi các hacker không còn cách nào khác để xâm nhập trái phép vào hệ thống máy chủ Web thông qua ứng dụng Web bị lỗi . Lúc này hacker sẽ truyền vào ô nhập username một đoạn như sau : ‘;SHUTDOWN WITH NOWAIT; -- .Để yêu cầu tắt toàn bộ hệ thống máy chủ Web . Trong trường hợp này, ta vẫn sẽ sử dụng 2 trang .Một trang HTML để hiển thị form nhập dữ liệu và một trang ASP dùng để xử lý thông tin nhập từ phía người sử dụng . Ví dụ : nếu hacker nhập một chuỗi sau vào trong ô nhập dữ liệu username của trang “client2.htm” là : ’;SHUTDOWN WITH NOWAIT;-- .Lúc này câu truy vấn sẻ được gọi lên và thực thi yêu cầu vừa được gửi tới trực tiếp lên toàn bộ hệ thống của máy chủ Web chứ không riêng gì ứng dụng Web . Và câu truy vấn này là hợp lệ với các điều kiện của ứng dụng Web và sẻ được thực thi trực tiếp vàohệ thống máy chủ Web . Lúc này hacker đương nhiên hợp pháp được quyền tương tác lên máy chủ Web như tắt hệ quản trị cơ sở dữ liệu Microsoft SQL Server trên máy chủ thông qua ứng dụng Web bị lỗi SQL này một cách hợp lệ . Ví dụ về Shutting down : Sử dụng giao diện của ứng dụng Web bị lỗi SQL Injection . Hacker sử dụng câu lệnh “’; SHUTDOWN WITH NOWAIT;--” .Đưa vào ô nhập username và gửi yêu cầu tới ứng dụng Web . Ứng dụng Web sẽ từ chối vì username này không hợp lệ . Và đây là hệ quản trị cơ sở dữ liệu bị hacker shutdown . Sử dụng công cụ khai thác và tìm kiếm lổ hổng của SQL Server : Trong phần này tôi sẻ giới thiệu với các bạn một số công cụ cần thiết để khai thác, tìm kiếm các lổ hổng của Microsoft SQL Server . Bên cạnh các công cụ trên, tôi cũng giới thiệu tới các bạn một số công cụ dùng để crack password của Microsoft SQL Server . Mục đích : Để các bạn có khái niệm cơ bản về các công cụ khai thác và tìm kiếm lổ hổng được các hacker sử dụng . Và có được cái nhìn từ phía hacker để phòng tránh những lỗi tương tự sẽ xảy ra với hệ thống của mình sau này . Công cụ Shadow Database Scan ver 1.0.0.63 : Giới thiệu với các bạn đây là công cụ quét, thăm dò và tìm kiếm các lổ hổng bảo mật của nhiều hệ quản trị cơ sở dữ liệu trong đó có Micosoft SQL Server . Công cụ này sử dụng bằng giao diện nên rất thuận tiện cho người dùng . Ta bắt đầu với Shadow Database Scan . Tạo một phiên quét thăm dò à . Chọn Complete Scan à Next à . Chọn Add host à . Điền thông số Website ta muốn thăm dò à . Chọn Next à . Chọn Scan à . Chờ đợi thông số quét được trả về của chương trình à . Đây là những lỗi mà chương trình quét thăm dò và phát hiện ra trên ứng dụng Web . Quá trình quét thăm dò hoàn tất . Công cụ THCsql ver 0.1 – Remote root Exploit : Giới thiệu với các bạn đây là một công cụ dùng để Remote root của SQL Server, có thể hiểu đây là một công cụ dùng khai thác và tìm kiếm lổ hổng từ hệ thống SQL Server và kết nối tới SQL Sever đó bằng cổng sau (backdoor) . Và lưu ý rằng công cụ này chỉ chạy trong môi truong DOS, nên các bạn khi muốn sử dụng công cụ phải chuyển vào môi trường DOS của Windows . Ta bắt đầu với bước kiểm tra IP của SQL Server . Sử dụng công cụ THCsql để khai thác lổ hổng của SQL Server bằng câu lệnh : “thcsql ” . Như vậy ta đã có được cổng kết nối sau của SQL Server . Ta sử dụng công cụ Netcat để kết nối tới Server và cũng lưu ý Netcat cũng chỉ chạy trên môi trường DOS nên muốn sử dụng bạn phải chuyển vào môi trường DOS của Windows . Sử dụng câu lệnh sau để kết nối tới cổng sau (backdoor) của SQL Server : “nc address port” . Và đến đây ta đã có toàn quyền trên SQL Server, kiểm tra thử IP của SQL Server . Công cụ forceSQL – Crack password SA : Giới thiệu với các bạn đây là công cụ dùng để crack password của SA (tài khoản quản trị cao nhất của SQL Server) . Và cũng như công cụ trên vừa giới thiệu, công cụ này chỉ chạy trong môi trường DOS . Ta bắt đầu với bước kiểm tra IP của SQL Server . Sử dụng công cụ forceSQL để crack password SA của SQL Server bằng câu lệnh : forcesql -d . Và đến đây ta đã có thông tin ve password của SA và trong ví dụ này password của SA là NULL (rổng) . Công cụ SQLdict ver 2.1 – Crack password SA : Cũng như hai công cụ trên, công cụ này dùng để crack password SA của SQL Server . Nhưng đến đây thì công cụ này thuận tiện hơn hai công cụ trên là nó sử dụng bằng giao diện và rất thuân tiện cho người sử dụng . Ta bắt đầu với bước kiểm tra IP của SQL Server . Open chương trình crack password SQLdict 2.1 . Nhập thông tin địa chỉ IP SQL Server, user SA của SQL Sever . Open file thư viện password “word.txt” . Ta bắt đầu crack password SA của SQL Server . Đến đây ta đã có được password SA của SQL Server . Tài liệu tham khảo : O’Reilly SQL Hack . SQL Injection by Kevin Spett . SQL Hack by Airscanner . Blind SQL Injection by Kevin Spett . Tóm tắt kết quả : Như vậy ta có thể tóm tắt kết quả thu được từ bài thực hành LAB như sau . Một máy chủ Web Server luôn luôn tiềm ẩn nguy cơ bị tấn công thông qua các các ứng dụng Web bị lỗi SQL Injection .Từ ứng dụng Web bị lỗi SQL Injection, các hacker có thể có được toàn quyền trên máy chủ Web Server đang chạy ứng dụng Web bị lỗi này . Một máy chủ Web Server luôn là nơi chứa đựng các nguy cơ bị tấn công từ các dịch vụ đang chạy trên nó, tại ví dụ này nguy cơ bị tấn công là từ dịch vụ Microsoft SQL Server . Ngoài những phương pháp tấn công được các hacker sử dụng bằng tay, thì họ cũng có thể sử dụng các công cụ được giới thiệu ở trên làm công cụ hỗ trợ cho cuộc tấn công vào máy chủ Web đang chạy ứng dụng Web bị lỗi SQL Injection .
File đính kèm:
- SQL Injection Lab.doc