Professional Documents
Culture Documents
DA An Ninh Mang
DA An Ninh Mang
LỜI CẢM ƠN
Đầu tiên, tôi xin chân thành cảm ơn ban giám hiệu, quy thầy cô trường cao
đẳng CNTT hữu nghị Việt Hàn, đặc biệt là thầy cô trong khoa Khoa học máy
tính đã tận tình giảng dạy và truyền đạt cho nhóm những kiến thức quý báu
trong những năm học vừa qua.
Xin chân thành gửi lời cảm ơn đến thầy Lê Tự Thanh giảng viên khoa
Khoa Học Máy Tính đã tận tình hướng dẫn, giúp đỡ nhóm chúng tôi trong quá
trình định hướng, nghiên cứu và hoàn thiện đồ án này.
Kết quả cuối cùng là kết quả của những tháng ngày cố gắng, nỗ lực của
nhóm, sự giúp đỡ của gia đình, nhà trường, bạn bè và đặc biệt là sự hướng dẫn
tận tình của thầy Lê Tự Thanh để tôi có thể hoàn tất một cách tốt so với những
gì đã đặt ra.
Trong quá trình thực hiện đồ án, mặc dù đã có nhiều cố gắng tuy nhiên vẫn
còn có nhiều thiếu sót và hạn chế, kính mong các thầy (cô) và các bạn đóng góp
ý kiến của mình để hệ thống được hoàn thiện hơn.
Cuối cùng, một lần nữa, tôi xin cảm ơn tất cả đã giúp đỡ để có thể hoàn
thành tốt đồ án này. Xin chân thành cảm ơn!
MỤC LỤC
LỜI CẢM ƠN.......................................................................................................i
MỤC LỤC............................................................................................................ii
LỜI MỞ ĐẦU.....................................................................................................vi
1.3.1. Mã hoá, nhận dạng, chứng thực người dùng và phần quyền sử
dụng................................................................................................................5
1.3.1.1. Mã hoá..........................................................................................5
2.3.1 Dạng tấn công vượt qua kiểm tra đăng nhập....................................17
3.2 Đối với web server (dành cho quản trị mạng):.....................................23
3.3 Đối với database server (dành cho quản trị mạng):..............................23
3.8 Một số công cụ quét và kiểm tra lỗi SQL Injection hiệu quả...............26
KẾT LUẬN........................................................................................................28
LỜI MỞ ĐẦU
Cùng với sự phát triển của công nghệ thông tin, công nghệ mạng máy tính
và sự phát triển của mạng internet ngày càng phát triển đa dạng và phong phú.
Các dịch vụ trên mạng đã thâm nhập vào hầu hết các lĩnh vực trong đời sống xã
hội. Các thông tin trên Internet cũng đa dạng về nội dung và hình thức, trong đó
có rất nhiều thông tin cần được bảo mật cao hơn bởi tính kinh tế, tính chính xác
và tính tin cậy của nó.
Bên cạnh đó, các hình thức phá hoại mạng cũng trở nên tinh vi và phức tạp
hơn. Do đó đối với mỗi hệ thống, nhiệm vụ bảo mật được đặt ra cho người quản
trị mạng là hết sức quan trọng và cần thiết.
Những vụ tấn công nhằm vào tất cả các máy tính có mặt trên Internet, các
máy tính của công ty lớn, các trường đại học, các cơ quan nhà nước, các tổ chức
quan sự, nhà băng... Một số vụ tấn công có quy mô khổng lồ (có tới 100.000
máy tính bị tấn công ). Hơn nữa, nhưng con số này chỉ là phần nổi của tảng
băng. Một phần rất lớn các vụ tấn công không được thông báo, vì nhiều lý do,
trong đó có thể kể đến nỗi lo bị mất uy tín, hoặc đơn giản những người quản trị
hệ thông không hay biết những cuộc tấn công đang nhằm vào hệ thông của họ.
Với những công cụ tự động tìm lỗi hổng tuy giúp rất nhiều cho những nhà
lập trình web nhưng vẫn không thể ngăn chặn toàn bộ vì công nghệ web đang
phát triển nhanh chóng (chủ yếu chú trọng đến yếu tố thẩm mĩ, yếu tố tốc độ...)
nên dẫn đến nhiều khuyết điểm mới phát sinh. Sự tấn công không nằm trong
khuổn khổ vài kĩ thuật đã phát hiện, mà linh động và tăng lên tùy vào những sai
sót của nhà quản trị hệ thống cũng như của những người lập trình.
Chính vì vậy, thông qua việc nghiên cứu phương pháp tấn SQL Injection
nhóm chúng tôi mong muốn góp một phần nhỏ vào việc nghiên cứu và tìm hiểu
về các vấn đề an ninh mạng giúp cho việc học tập và nghiên cứu.
Nhóm 12 xin chân thành cảm ơn sự hướng dẫn của ThS. Lê Tự Thanh đã
trực tiếp hướng dẫn đồ án và giúp nhóm có thể hoàn thành đồ án này.
Sau đây là nội dung đồ án:
Mất dữ liệu tích hợp: dữ liệu bị sửa chữa, thay thế khi truyền trên mạng.
Mất dữ liệu bảo mật: những người không có quyền cũng có thể đọc được
dữ liệu.
Từ chối dịch vụ: dịch vụ bị ngưng trệ bởi sự tấn công của Hacker.
Mất khả năng điều khiển: những người có quyền sử dụng dịch vụ không
thể tương tác được với dịch vụ.
Người sử dụng thường cố gắng tìm ra những lỗ hổng của phần mềm hoặc
là cấu hình lại hệ thống nhằm bảo đảm an toàn thông tin. Trong một số trường
hợp Hacker không muốn cho truy suất hệ thống bằng cách xây dựng một loạt
các thủ tục nhằm mục đích đưa ra thông báo “từ chối dịch vụ”.
Việc tấn công vào mạng sử dụng thông báo từ chối truy cập được thực hiện
bằng cách khiến cho phần mềm dịch vụ bị quá tải bởi phải xử lý quá nhiều yêu
cầu. Khi đó hệ thống sẽ trở nên rất bận và sẽ thiếu thời gian để làm việc khác do
đó buộc phải từ chối truy cập dịch vụ.
Tuy có nhiều cách để xâm nhập vào mạng nhưng một trong những cách dễ
dàng nhất là chặn dòng dữ liệu trao đổi giữa các thành viên trong mạng. Do
thông tin được truyền trong mạng dưới dạng văn bản thuần tuý nên việc rình bắt
thông tin sẽ giúp cho Hacker lấy được mật khẩu của mạng một cách dễ dàng.
Còn kiểu tấn công mạng nữa hay được sử dụng là giả dạng bằng cách giả
vờ là một người sử dụng có thẩm quyền của mạng thông qua việc giả lập địa chỉ
IP. Điều đáng nói ở đây là trong hầu hết các trường hợp, việc bảo đảm độ tin cậy
chỉ dựa trên một phía (qua password, hoặc PIN) mà những thông tin này lại rất
dễ bị sao chép. Do vậy để đảm bảo độ tin cậy, việc thiết lập độ tin cậy phải được
thực hiện từ hai phía bằng việc sử dụng một thẻ thông minh (smart card) kết hợp
với PIN (Personal Identity Number) nhằm tăng mức độ an toàn của mạng.
Một cách khác là tạo ra những phần mềm thông minh để truy xuất đến một
mạng đích nào đó thông qua việc lấy các thông tin thải loại ở trong sọt rác hoặc
trong đĩa mềm bỏ đi của người quản trị mạng. Kiểu này chỉ được áp dụng khi
mà Hacker liên quan khá mật thiết đến người điều hành mạng và do đó cũng rất
dễ truy tìm ra Hacker khi mạng bị tấn công.
Còn một cách để Hacker xâm nhập vào mạng là sử dụng một tập hợp các
thông tin dễ ghi nhớ. Rất nhiều mạng sử dụng tên miền rất dễ nhớ như:
System01.Domain.Org. Bằng việc truy xuất qua server quản lý hệ tên miền
(DNS: Domain Name System), Hacker có thể thâm nhập vào mạng rất dễ dàng
bằng cách hướng yêu cầu của người sử dụng đến một server khác và lấy trộm
những thông tin cần thiết. Do đó để đảm bảo rằng người sử dụng truy xuất đúng
server cần phải bổ xung cả việc kiểm tra độ tin cậy đối với server. Điều này
được thực hiện bằng cách sử dụng chứng chỉ số trên server.
Để tránh việc gói tin bị thay thế khi truyền trên mạng, bắt buộc gói tin phải
được tích hợp trước khi truyền thông qua việc bổ xung một thông điệp băm.
Việc mã hoá của thông điệp này giúp cho thông điệp bảo đảm được độ chính
xác.
Trong hầu hết các trường hợp những cuộc tấn công vào mạng thành công
không phải do kỹ thuật mà do con người. Thay cho sử dụng kỹ thuật để đột phá
vào mạng, Hacker sẽ thử liên hệ với người nắm giữ thông tin mà họ cần,điều
khiển họ thông qua việc khai thác những thói quen của họ và như thế những
người này sẽ không thông báo về những thông tin bị rò gỉ bởi chính họ cho cấp
có thẩm quyền.
1.2 Các hình thức tấn công mạng hiện nay.
1.2.1. Quá trình thăm dò tấn công
Hình 1.2 Quét trộm đối với cổng không hoạt động
Tính không từ chối (Non-repudiation): là cơ chế người thực hiện hành động
không thể chối bỏ những gì mình đã làm, có thể kiểm chứng được nguồn gốc
hoặc người đưa tin.
1.3.1.2. Các giải thuật mã hoá
Giải thuật băm (Hashing Encryption)
Là cách thức mã hoá một chiều tiến hành biến đổi văn bản nhận dạng
(cleartext) trở thành hình thái mã hoá mà không bao giờ có thể giải mã. Kết quả
của tiến trình hashing còn được gọi là một hash (xử lý băm), giá trị hash (hash
value), hay thông điệp đã được mã hoá (message digest) và tất nhiên không thể
tái tạo lại dạng ban đầu.
Trong xử lý hàm băm dữ liệu đầu vào có thể khác nhau về độ dài, thế
nhưng độ dài của xử lý Hash lại là cố định. Hashing được sử dụng trong một số
mô hình xác thực password. Một giá trị hash có thể được gắn với một thông điệp
điện tử (electronic message) nhằm hỗ trợ tính tích hợp của dữ liệu hoặc hỗ trợ
xác định trách nhiệm không thể chối từ (non-repudiation).
Hình 1.7 Giải thuật mã hóa không đồng bộ/không đối xứng
Các giải thuật
o RSA (Ron Rivest, Adi Shamir, and Leonard Adleman).
o DSA (Digital Signature Standard).
o Diffie-Hellman (W.Diffie and Dr.M.E.Hellman).
1.3.1.3. Chứng thực người dùng
Là quá trình thiết lập tính hợp lệ của người dùng trước khi truy cập thông
tin trong hệ thống. Các loại chứng thực như:
Username/password: Là loại chứng thực phổ biến nhất và yếu nhất của
chứng thực, username/password được giữ nguyên dạng chuyển đến Server.
kỳ kiểm tra lại các định danh của kết nối sử dụng cơ chế bắt tay 3 bước và thông
tin bí mật được mã hóa sử dụng MD5. Hoạt động của CHAP như sau:
Sử dụng public/private key (bất cứ dữ liệu nào được mã hóa bằng public
key chỉ có thể giải mã bằng private key). Sử dụng “công ty thứ 3” để chứng
thực. Được sử dụng phổ biến trong chứng thực web, smart cards, chữ ký điện tử
cho email và mã hóa email.
- Nhược điểm
Triển khai PKI (Public Key Infrastructure) kéo dài và tốn kém.
Smart cards làm tăng giá triển khai và bảo trì.
Dịch vụ CA tốn kém.
Sinh trắc học
Có thể dùng các phương pháp sau: mống mắt/võng mạc, vân tay, giọng nói.
Ưu điểm của phương pháp này rất chính xác, thời gian chứng thực nhanh, tuy
nhiên giá thành cao cho phần cứng và phần mềm, việc nhận diện có thể bị sai
lệch.
Kết hợp nhiều phương pháp (Multi-factor)
Sử dụng nhiều hơn một phương pháp chứng thực như: mật khẩu/ PIN, smart
card, sinh trắc học, phương pháp này nhằm tạo sự bảo vệ theo chiều sâu với
nhiều tầng bảo vệ khác nhau.
Ưu điểm: làm giảm sự phụ thuộc vào password, hệ thống chứng thực
mạnh hơn và cung cấp khả năng cho Public Key Infrastructure (PKI).
Nhược điểm: tăng chi phí triển khai, tăng chi phí duy trì, chi phí nâng
cấp
1.3.2. Bảo mật máy trạm
Sự kiểm tra đều đặn mức bảo mật được cung cấp bởi các máy chủ phụ
thuộc chủ yếu vào sự quản lý. Mọi máy chủ ở trong một công ty nên được kiểm
tra từ Internet để phát hiện lỗ hổng bảo mật. Thêm nữa, việc kiểm tra từ bên
trong và quá trình thẩm định máy chủ về căn bản là cần thiết để giảm thiểu tính
rủi ro của hệ thống, như khi firewall bị lỗi hay một máy chủ, hệ thống nào đó bị
trục trặc.
Hầu hết các hệ điều hành đều chạy trong tình trạng thấp hơn với mức bảo
mật tối thiểu và có rất nhiều lỗ hổng bảo mật. Trước khi một máy chủ khi đưa
vào sản xuất, sẽ có một quá trình kiểm tra theo một số bước nhất định. Toàn bộ
các bản sửa lỗi phải được cài đặt trên máy chủ, và bất cứ dịch vụ không cần thiết
nào phải được loại bỏ. Điều này làm tránh độ rủi ro xuống mức thấp nhất cho hệ
thống.
Việc tiếp theo là kiểm tra các log file từ các máy chủ và các ứng dụng.
Chúng sẽ cung cấp cho ta một số thông tin tốt nhất về hệ thống, các tấn công
bảo mật. Trong rất nhiều trường hợp, đó chính là một trong những cách để xác
nhận quy mô của một tấn công vào máy chủ.
1.3.3. Bảo mật truyền thông
Tiêu biểu như bảo mật trên FTP, SSH..
Bảo mật truyền thông FTP
FTP là giao thức lớp ứng dụng trong bộ giao thức TCP/IP cho phép truyền
dữ liệu chủ yếu qua port 20 và nhận dữ liệu tại port 21, dữ liệu được truyền dưới
dạng clear-text, tuy nhiên nguy cơ bị nghe lén trong quá trình truyền file hay lấy
mật khẩu trong quá trình chứng thực là rất cao, thêm vào đó user mặc định
Anonymous không an toàn tạo điều kiện cho việc tấn công tràn bộ đệm.
Biện pháp đặt ra là sử dụng giao thức S/FTP (S/FTP = FTP + SSL/TSL) có
tính bảo mật vì những lí do sau:
o Sử dụng chứng thực RSA/DSA .
o Sử dụng cổng TCP 990 cho điều khiển, cổng TCP 989 cho dữ liệu.
o Tắt chức năng Anonymous nếu không sử dụng.
o Sử dụng IDS để phát hiện tấn công tràn bộ đệm.
o Sử dụng IPSec để mã hóa dữ liệu.
Bảo mật truyền thông SSH
SSH là dạng mã hóa an toàn thay thế cho telnet, rlogin..hoạt động theo mô
hình client/server và sử dụng kỹ thuật mã hóa public key để cung cấp phiên mã
hóa, nó chỉ cung cấp khả năng chuyển tiếp port bất kỳ qua một kết nối đã được
mã hóa. Với telnet hay rlogin quá trình truyền username và password dưới dạng
cleartext nên rất dễ bị nghe lén, bằng cách bắt đầu một phiên mã hóa.
Khi máy client muốn kết nối phiên an toàn với một host, client phải bắt đầu
kết nối bằng cách thiết lập yêu cầu tới một phiên SSH. Một khi server nhận
dược yêu cầu từ client, hai bên thực hiện cơ chế three-way handshake trong đó
bao gồm việc xác minh các giao thức, khóa phiên sẽ được thay đổi giữa client và
server, khi khóa phiên đã trao đổi và xác minh đối với bộ nhớ cache của host
key, client lúc này có thể bắt đầu một phiên an toàn
1.3.4. Các công nghệ và kỹ thuật bảo mật
Bảo mật bằng firewall
Là một hàng rào giữa hai mạng máy tính, nó bảo vệ mạng này tránh khỏi
sự xâm nhập từ mạng kia, đối với những doang nghiệp cỡ vừa là lớn thì việc sử
dụng firewall là rất cần thiết, chức năng chính là kiểm soát luồng thông tin giữa
mạng cần bảo vệ và Internet thông qua các chính sách truy cập đã được thiết lập.
Firewall có thể là phần cứng, phần mềm hoặc cả hai. Tất cả đều có chung
một thuộc tính là cho phép xử lý dựa trên địa chỉ nguồn, bên cạnh đó nó còn có
các tính năng như dự phòng trong trường hợp xảy ra lỗi hệ thống.
thể. Khi xem xét lựa chọn một firewall cần tập trung tìm hiểu tập các chức năng
của firewall như tính năng lọc địa chỉ, gói tin..
Bảo mật bằng VPN (Virtual Private Network)
VPN là một mạng riêng ảo được kết nối thông qua mạng công cộng cung
cấp cơ chế bảo mật trong một môi trường mạng không an toàn. Đặc điểm của
VPN là dữ liệu trong quá trình truyền được mã hóa, người sử dụng đầu xa được
chứng thực, VPN sử dụng đa giao thức như IPSec, SSL nhằm tăng thêm tính bảo
mật của hệ thống, bên cạnh đó tiết kiệm được chi phí trong việc triển khai.
các phần mềm thư điện tử kiểu mới còn có thể hiển thị các email dạng sống
động tương thích với kiểu tệp HTML.
o Gửi: giao* thức SMTP (TCP 25)
- Nhận: giao thức POP3/IMAP (TCP 110/143)
Lợi ích của thư điện tử như tốc độ di chuyển cao, chi phí rẻ và tiện lợi. Tuy
nhiên có những vấn đề về bảo mật, spam mail, sự lây lan của virus, trojan..
Bảo vệ hệ thống email
Sử dụng S/MIME nếu có thể
Cấu hình Mail Server tốt, không bị open relay
Ngăn chặn Spam trên Mail Server
Cảnh giác với email lạ
Bảo mật ứng dụng Web
o Web traffic: Sử dụng giao thức bảo mật SSL/TSL để mã hóa thông tin
giữa Client và Server, hoạt động tầng Transport, sử dụng mã hóa không đối
xứng và MD5, sử dụng Public Key để chứng thực và mã hóa giao dịch giữa
Client và Server và TSL bảo mật tốt hơn.
Vấn đề đặt ra là trong quá trình chứng thực cả Client và Server đều phải
cần triển khai PKI, ảnh hưởng đến Performance, việc triển khai tiềm tàng một số
vấn đề: phương thức triển khai, cấu hình hệ thống, lựa chọn phần mềm.
o Web Client: Trong mô hình client/server, máy client là một máy trạm mà
chỉ được sử dụng bởi 1 người dùng với để muốn thể hiện tính độc lập cho nó.
Các điểm yếu của Client như JavaScript, ActiveX, Cookies, Applets.
o Web Server: Server cung cấp và điều khiển các tiến trình truy cập vào
tài nguyên của hệ thống. Vai trò của server như là một nhà cung cấp dịch vụ cho
các clients yêu cầu tới khi cần, các dịch vụ như cơ sở dữ liệu, in ấn, truyền file,
hệ thống... Các lỗi thường xảy ra trong WEB Server: lỗi tràn bộ đệm, CGI/
Server Script và HTTP, HTTPS
ứng dụng website và các thông báo lỗi của hệ quản trị cơ sở dữ liệu để "tiêm
vào" (inject) và thi hành các câu lệnh SQL bất hợp pháp (do người viết phần
mềm ứng dụng họ không lường trước ). Hậu quả của nó rất tai hại vì nó cho
phép những kẻ tấn công có thể thực hiện các thao tác xóa, hiệu chỉnh, … trực
tiếp trên ứng dụng như là 1 người quản trị, do có toàn quyền trên cơ sở dữ liệu
của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy.
- Lỗi này thường xảy ra trên các ứng dụng website có dữ liệu được quản lí
bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2,
Sysbase.
2.3 Các dạng tấn công SQL Injection.
PCó bốn dạng thông thường bao gồm:
Vượt qua kiểm tra lúc đăng nhập (Aauthorization bypass)
Sử dụng câu lệnh SELECT
Sử dụng câu lệnh INSERT
Sử dụng các stored-procedures
- Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng
nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực
hiện tiếp.
Hình 2.3 Tấn công vượt qua kiểm tra đăng nhập
- Thoạt nhìn, đoạn mã trong trang execlogin.asp dường như không chứa bất
cứ một lỗ hổng về an toàn nào. Người dùng không thể đăng nhập mà không có
tên đăng nhập và mật khẩu hợp lệ. Tuy nhiên, đoạn mã này thực sự không an
toàn và là tiền đề cho một lỗi SQL injection. Đặc biệt, chỗ sơ hở nằm ở chỗ dữ
liệu nhập vào từ người dùng được dùng để xây dựng trực tiếp câu lệnh SQL.
Chính điều này cho phép những kẻ tấn công có thể điều khiển câu truy vấn sẽ
được thực hiện.
- Ví dụ: Nếu hacker nhập vào chuỗi ' OR 1=1 Câu truy vấn sẽ là:
SELECT * FROM T_USERS WHERE USR_NAME ='' OR 1=1 and
USR_PASSWORD= ‘' OR 1=1
1.Kiểm tra USR_NAME =‘’ đúng hay sai ?--> Sai
2.Kiêm tra 1=1 đúng hay sau --> Đúng
3. Kiểm tra USR_PASSWORD =‘’ đúng hay sai ?--> Sai
4.Kiêm tra 1=1 đúng hay sau --> Đúng
P (1) or (2) -> Đúng , (3) or (4) -> Đúng
Câu truy vấn này là hợp lệ và sẽ trả về tất cả các bản ghi của T_USERS và
đoạn mã tiếp theo xử lí người dùng đăng nhập bất hợp pháp này như là người
dùng đăng nhập hợp lệ.
- Tương tự như vậy, hacker có thể lợi dụng và làm những điều tồi tệ hơn
trên chính website của bạn …
2.3.2 Tấn công sử dụng câu lệnh SELECT.
- Dạng tấn công này phức tạp hơn. Để thực hiện được kiểu tấn công này, kẻ
tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ
hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công.
- Xét một ví dụ rất thường gặp trong các website về tin tức. Thông thường,
sẽ có một trang nhận ID của tin cần hiển thị rồi sau đó truy vấn nội dung của tin
có ID này. Ví dụ:
http://www.mysite.com/shownews.asp?ID=123
Lúc này Hacker sẽ thêm dấu nháy đơn ‘ sau link, nếu có lỗi thì site sẽ báo
như thế này:
<%
strSQL = "INSERT INTO TableName VALUES(' " &
strValueOne & " ', ' " _
& strValueTwo & " ', ' " &
strValueThree & " ') "
Hình 2.5 Một đoạn mã ví dụ tấn công bằng câu lệnh Insert.
2.3.4 Dạng tấn công Stored – Procedures
- Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng
được thực thi với quyền quản trị hệ thống 'sa'.
- Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: ' ; EXEC xp_cmdshell
‘cmd.exe dir C: '.
- Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt
server. Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe.
Nhưng những attacker khôn khéo vẫn có thể nhìn thấu được kiểu phòng
chống như thế này. Nó có thể tránh được những tấn công đơn giản như là thêm
dấu ‘(dấu nháy) vào cuối đường dẫn. Vì phương pháp tìm kiếm ứng dụng bị lỗi
của những tấn công như thế dựa vào những dấu hiệu trả về của ứng dụng hoặc
trực tiếp từ database. Ta có thể chỉ đưa ra những thông báo chung chung hoặc
định hướng trở lại trang ban đầu(redirect). Trong trường hợp này, công việc tìm
kiếm lỗi và xác định mục tiêu trở nên cực khó đối với attacker.
Tuy nhiên attacker luôn tạo ra những công nghệ tìm kiếm lỗi tinh vi hơn,
tốt hơn, để gián tiếp xác định dấu hiệu trả về. Tấn công kiểu này còn được gọi là
“Blind SQL Injection”
3.5 Phòng chống từ bên ngoài.
Giải pháp này sẽ dùng tường lửa đặc biệt để bảo vệ bạn khỏi những ứng
dụng dùng việc truy cập database với mục đích xấu. Chúng ta cần lưu ý rằng
attacker tương tác với ứng dụng web thông qua một trình duyệt với kết nối từ
xa. Sau đó, ứng dụng gởi yêu cầu đến database. Như vậy chúng ta có thể ngăn
chặn các tấn công giữa attacker với ứng dụng, giữa ứng dụng với database và
ngay cả trên chính bản thân database đó.
Một số phương pháp phòng chống có thể thực hiện như:
Những bộ lọc, bộ quét và những điểu khiển truy cập cơ sở dữ liệu sẽ làm
cho ứng dụng web khó bị tấn công hơn.
3.6 Cải thiện dữ liệu nhập vào.
Cách phòng chống thực sự để chống lại SQL Injection là kiểm tra và làm
đúng các câu truy vấn. Như chúng ta đã đề cập, lỗi này là do ứng dụng không
kiểm tra dữ liệu nhập vào của người dùng. Do đó người dùng có thể thay đổi,
chỉnh sửa, tham số hoặc thêm cả một thực thể truy vấn vào câu lệnh. Vì thế mỗi
dữ liệu nhập của người dùng cần được theo dõi và có những ràng buộc nhất
định.
Thứ nhất, ứng dụng cần phân loại các kiểu dữ liệu nhập vào. Ví dụ, nếu
ứng dụng yêu cầu dữ liệu nhập vào là kiểu số thì khi ứng dụng nhận dữ liệu
nhập vào không nên chấp nhận các kiểu khác ngoại trừ kiểu số. Một số hàm
kiểm tra trong PHP:
is_numeric($str) : kiểm tra $str có phải kiểu số hay không
is_int($str) :kiểm tra kiểu interger
is_float($str) :kiểm tra kiểu số thực
…
Thứ 2, nếu dữ liệu nhập vào không rõ kiểu gì thì ít nhất cũng phải xác định
những kiểu không được phép có thể được gọi. Trong trường hợp này chúng ta sẽ
phải lọc các dấu nháy, lệnh, các kí tự đặc biệt. Một vài việc lọc dữ liệu có thể
thực hiện trên toàn bộ ứng dụng( như không bao giờ lưu dữ liệu có dấu ‘ vào cơ
sở dữ liệu) và trên một vài kiểu dữ liệu nhập vào( như không có dấu “,” trong
địa chỉ mail).VD:
magic_quotes_gpc
GPC=GET,POST,COOKIE) Hàm sẽ kiểm
tra các dữ liệu thuộc 3 loại trên và khi phát
hiện có các dấu ‘ (single-quote), ” (double
quote),
<?php
echo get_magic_quotes_gpc(); // 1
Trong khi viết một cơ sở dữ liệu hướng ứng dụng, hay khi triển khai một
ứng dụng mã nguồn mở cần chú ý đến các vấn đề như thế và thiết kế để xác
minh đúng đầu vào. Biện pháp này sẽ giúp bảo vệ bạn từ các tấn công SQL
Injection không trở thành mồi ngon cho các attacker.
Hiểu biết về cách phòng chống này là rất quan trọng nếu bạn đang triển
khai một ứng dụng thương mại. Chỉ cần nhớ rằng các nhà phát triển có khả năng
vướng lỗi khi lập trình và bạn sẽ phải thực hiện các bước để sửa các lỗi đó. Và
cần làm điều này ngay cả khi chưa có những lỗ hổng được công khai cho ứng
dụng đó
3.7 Một số lời khuyên khác:
- Bạn cần tắt tất cả các thông báo lỗi không cần thiết của web server.
Hacker có thể lợi dụng chính các thông báo lỗi này để khai thác thông tin của hệ
thống, phục vụ cho một cuộc tấn công SQL Injection.
- Bạn cần bật các chế độ ghi log đầy đủ để phục vụ việc điều tra phát hiện
cuộc tấn công và giải quyết sự cố.
- Bạn cần thường xuyên theo dõi và cập nhật phiên bản cho platform của
website (hệ điều hành, web server, database server…).
3.8 Một số công cụ quét và kiểm tra lỗi SQL Injection hiệu quả.
Acunetix Web Vulnerability Scanner:Một phiên bản thương mại của chương
trình tìm kiếm các lỗ hổng bảo mật trên các ứng dụng Web. Acunetix WVS tự
động kiểm tra các ứng dụng Web để tìm kiếm các lỗ hổng bảo mật như SQL
Injection, hay Cross-Site Scripting, tìm kiếm những chính sách đối với mật khẩu
đăng nhập cũng như các phương thức xác thực vào Web Site. Với giao diện đồ
họa thân thiện, những Report đầy đủ cho phép bạn kiểm tra những vấn đề trên
máy chủ và ứng dụng Web. Để tìm hiểu rỏ hơn các bạn có thể truy cập vào
http://www.acunetix.com/vulnerability-scanner/ để tải về.
N-Stealth: Là một phiên bản thương mại, ứng dụng cho việc tìm kiếm các
lỗ hổng bảo mật trên máy chủ Web. Phần mềm tự động update thường xuyên
hơn các phần mềm miễn phí như Whisker/libwhisker hay Nikto, nhưng nhiều lỗi
mới trên Web cũng không phát hiện kịp thời và nhanh chóng. Phần mềm bao
gồm hơn 30.000 lỗ hổng có thể Scan và khai thác trực tiếp, cùng với hàng tá
những cập nhật hàng ngày. Dễ dàng triển khai kết hợp với những Scan lỗ hổng
bảo mật như: SQL Injection, Nessus, ISS Internet Scanner, Retina, SAINT và
Sara, bao gồm các tính năng khác. N-sealth là phiên bản chỉ dành riêng cho
Windows và không thể download Source .
Trang chủ: http://www.nstalker.com/products/fre…d-free-edition
KẾT LUẬN
An ninh mạng và những phương pháp tấn công trên Internet đang phát triển
rất nhanh chóng, ngày càng hoạt động phức tạp và quy mô , làm tổn hại và tạo ra
một cái nhìn “không tích cực” cho các ứng dụng mạnh mẽ của Internet , gây tổn
thất nghiêm trọng đối với các ứng dụng và hoạt động Internet.
Đối với SQL Injection, là phương pháp tấn công phổ biến nhất hiện nay,
được các Hackers sử dụng khá nhiều để tấn công các trang website.
Đồ án đã nêu được các hình thức tấn công phổ biến của SQL Injection. Đưa
ra các vấn đề thực tế và phương pháp phòng chống được hiệu quả. Tuy nhiên,
qua thời gian nghiên cứu đề tài kết hợp với các kiến thức đã học ở nhà trường đã
giúp em tìm hiểu các khía cạnh của vấn đề. Song do thời gian và trình độ có hạn
nên chắc chắn khóa luận của em không tránh khỏi những thiếu sót.
Em rất mong nhận được sự quan tâm đóng góp ý kiến và chỉ bảo của thày
cô.
Em xin chân thành cảm ơn các thầy!