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

NGHIÊN CỨU VÀ XÂY DỰNG CÁC BIỆN PHÁP BẢO MẬT TRƯỚC TẤN CÔNG SQL INJECTION

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 (1.26 MB, 65 trang )

HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA AN TỒN THƠNG TIN

NGHIÊN CỨU VÀ XÂY DỰNG CÁC BIỆN PHÁP
BẢO MẬT TRƯỚC TẤN CÔNG
SQL INJECTION

Sinh viên thực hiện:

Giảng viên hướng dẫn:

Nghiêm Đức Hải – AT160516
Vũ Huy Đồn – AT160512
Nguyễn Văn Điệp – AT160511
Nhóm 98
TS. Nguyễn Đào Trường
Khoa Công nghệ thông tin – Học viện Kỹ
thuật mật mã


Thực tập cơ sở

GVHD:TS.Nguyễn Đào Trường

MỤC LỤC

NHẬN XÉT VÀ CHO ĐIỂM CỦA GIÁO VIÊN
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................


.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................


Thực tập cơ sở

GVHD:TS.Nguyễn Đào Trường


.................................................................................................................................
.................................................................................................................................
.................................................................................................................................


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

LỜI MỞ ĐẦU

1. Tính cấp thiết của đề tài.
Sự phát triển vượt bậc của công nghệ web đã đem lại rất nhiều thuận lợi
cho người sử dụng cũng như các nhà phát triển. Nhưng cùng với sự phát triển
này thì các ứng dụng web cũng trở thành mục tiêu ưu thích của những kể tấn
cơng. Các hình thức tấn cơng rất đa dạng như thay đổi nội dung của trang web,
tấn công từ chối dịch vụ khiến cho việc truy cập trang web không thể thực hiện
hoặc rất khó thực hiện, chiếm quyền điều khiển trang web... Mục tiêu của các
hacker cũng rất khác nhau, có thể tấn cơng xuất phát từ thiện chí, nhằm tìm ra
những điểm yếu và thông báo cho nhà quản trị hệ thống. Nghiêm trọng hơn là
tấn công để phục vụ cho các mục đích xấu như tống tiền trang web, lấy cắp
những dữ liệu nhạy cảm như thông tin về thẻ tín dụng, mua hàng thơng qua tài
khoản của người khác... Trong các hình thức tấn cơng thì tấn cơng bằng cách
chèn mã lệnh (injection) là phổ biến. Tấn công website bằng kỹ thuật SQL
injection từ lâu đã là mối quan tâm bảo mật hàng đầu của các nhà phát triển web
và chủ sở hữu website. Giờ đây, các cuộc tấn cơng này ngày càng trở nên khó
phát hiện và ngăn chặn hơn. Số lượng các vụ tấn công nhằm vào cơ sở dữ liệu
(CSDL) web đã lên tới một con số kỷ lục. Tháng 7 năm 2006, theo số liệu thống

kê của hãng bảo mật SecureWorks cho biết đã phát hiện tới 8.000 vụ tấn công
lên các cơ sở dữ liệu mỗi ngày. Như vậy, con số này. đã tăng thêm trung bình từ
100 đến 200 vụ tấn cơng một ngày so với con số của 3 tháng đầu năm 2006. Con
số này được SecureWorks thống kê từ hệ thống các cơ sở dữ liệu của hơn 1.300
khách hàng đang sử dụng các giải pháp dịch vụ bảo mật của hãng này.
-6-


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

SecureWorks cho biết tin tặc - chủ yếu sử dụng các máy tính tại Nga, Trung
Quốc, Brazill, Hungary và Hàn Quốc và đều dùng chung một phương pháp có
tên SQL Injection trong những vụ tấn cơng vào các cơ sở dữ liệu. Một trong
những vụ tấn cơng SQL Injection nổi tiếng nhất chính là vụ tấn công vào
CardSystems Solutions-một hãng chuyên lưu trữ cơ sở dữ liệu thanh tốn thẻ tín
dụng. Tin tặc đã sử dụng giải pháp. tấn công SQL Injection để chiếm quyền điều
khiển hệ thống cơ sở dữ liệu của CardSystems và chuyển tồn bộ cơ sở dữ liệu
ra ngồi. Đã có khoảng 40 triệu thẻ tín dụng rơi vào tay chúng gây ra thiệt hại
hàng triệu USD. SQL Injection là kiểu tấn cơng có mục tiêu rất cụ thể và thường
là mục tiêu đơn lẻ cho mỗi một vụ tấn cơng. Chính vì thế mà những vụ tấn cơng
như thế này thường không gây được sự chú ý rộng rãi như virus hay sâu máy
tính. Âm thầm như thế nhưng thiệt hại của những vụ tấn công này lại rất lớn.
Nếu như một máy chủ cơ sở dữ liệu bị tin tặc chiếm quyền kiểm sốt thì sẽ có
một khối lượng rất lớn thơng tin cá nhân tài chính của người dùng sẽ rơi vào tay
chúng. Và nếu thành cơng thì có thể nói nguồn thơng tin mà tin tặc thu được cịn
nhiều hơn rất nhiều so với tấn cơng phishing. Tin tặc không phải mất công giả
mạo để lừa người sử dụng cung cấp thơng tin cá nhân tài chính. Tỉ lệ thành công

của các vụ tấn công SQL Injection thường rất cao.
Vào tháng 6 năm 2011, Công ty bảo mật web Armorize thông báo đã phát
hiện một kiểu tấn công mới với cách thức SQL injection hàng loạt. Kiểu tấn
công mới này lợi sử dụng hình thức đơn giản của mạng ngang hàng (peer-topeer) để làm cho mạng bị tổn hại khó có thể gỡ xuống. Về mặt lịch sử, các cuộc
tấn công web hàng loạt rất đơn giản: Mã được viết bằng ngơn ngữ truy vấn có
cấu trúc (SQL) được gửi đến cơ sở dữ liệu web phụ trợ (back-end) nhờ sử dụng
một lỗ hổng trong mã của website. Khi lỗ hổng bảo mật nằm trong một ứng

-7-


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

dụng thông thường, cuộc tấn công có thể làm hại hàng ngàn website cùng một
lúc. Trong phiên bản mới nhất của kiểu tấn cơng, thay vì chèn vào các website
một đoạn mã lệnh tĩnh đơn nhất trỏ trình duyệt truy cập đến một số website tải
về mã độc hại, những kẻ tấn công tạo ra một đoạn mã lệnh động dẫn khách truy
cập tới máy chủ web đã bị xâm nhập từ trước. Kỹ thuật mới làm cho việc lập
danh sách đen (blacklisting) khó khăn hơn nhiều. Trên thực tế do sự phát triển
mạnh mẽ từng giờ, từng ngày của công nghệ thông tin cho nên các kiểu tấn công
của các hacker cũng ngày càng tỉnh vi, phức tạp và khó ngăn chặn. Xuất phát từ
những lý do trên, nhóm em chọn đề tài “ tấn cơng kiểu SQL injection tác hại và
phịng chống” làm đề tài nghiên cứu.
2. Mục tiêu đề tài.
Giúp chúng ta có thể hiểu hơn về các ứng dụng website, các mối đe dọa
về vấn đề an tồn thơng tin khi chúng ta làm việc trên ứng dụng web hàng ngày,
hiểu rõ hơn về các kỹ thuật tấn công và bảo mật web.

Xác định được nguyên nhân,nhận diện chính xác đối tượng động cơ,cách
thức của kể tấn công xâm nhập vào cơ sở dữ liệu.Xác định mục tiêu,mối nguy
hiểm thường trực về an ninh ứng dụng web của các tổ chức.
Hiểu rõ khái niệm sql injection và phương thức hoạt động của các hacker
thông qua lỗ hổng này.
Biết sử dụng phương pháp và các công cụ cơ bản để kiểm tra an ninh bảo
mật trên ứng dụng web nhằm có cách phịng chống hiệu quả.
3. Đối tượng nghiên cứu.
Tìm hiểu kỹ thuật tấn cơng sql injection. Cách bảo mật phịng thủ kiểu
tấn công này một cách tổng quan.
4. Phương pháp nghiên cứu.
Tiếp cận ngôn ngữ truy vấn SQL.
-8-


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

Nghiên cứu các kiểu tấn công sql injection và cách phòng chống chúng.
5. Ý nghĩa khoa học và thực tiễn của đề tài
Theo tài liệu Hacking Exposed Web đánh giá mức độ phổ biến của
phương pháp tấn cơng sql injection là rất cao(8/10), bởi vì nó cũng khá đơn giản
để thực hiện, là một trong những lỗ hổng bảo mật phổ biến nhất, xác suất gặp lỗi
này khá cao và các tác động của SQL injection tới hệ thống là rất nguy
hiểm(9/10). Chính vì thế, nên tổng thế nguy cơ này được đánh giá 9/10.Dễ tấn
công, phổ biến, gây ra hậu quả nghiêm trọng, đó là lý do inject nằm ở vị trí đầu
bảng top 10 lỗ hổng bảo mật của OWASP. Đây thật sự là một lỗ hổng về bảo mật
rất đáng được quan tâm.

Dựa vào lỗi SQL injection, hacker có thể làm được những việc sau:
- Có thể thêm, sử, xóa cơ sở dữ liệu của đối tượng bị tấn cơng theo ý
muốn.
- Có thể tạo một backdoor cho những lần tấn công sau.
- Có thể đánh sập hồn tồn một hệ thống.
- Có thể sử dụng như một phương pháp tấn công DoS.
Các cuộc tấn công SQL injection thường nhắm đến các cơ sở dữ liệu
mang tính thương mại, các website của các thành phố thậm chí là các website
của chính phủ, hầu hết các website bị tấn công đều thuộc loại đáng tin cậy, hợp
pháp và an toàn tuyệt đối trong mắt người dùng.
Xuất phát từ thực tế trên việc nghiên cứu đề tài này là hoàn toàn cấp thiết.
6. Bố cục nội dung
Lời mở đầu
Chương 1: Cơ sở lý thuyết
-9-


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

Chương 2: Các cách tấn công phổ biến và cách phòng chống sql injection
Chương 3: Kết quả thực nghiệm
Tài liệu tham khảo

-10-


Thực tập cơ sở

Trường

GVHD:TS.Nguyễn Đào

CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
1.1 Tổng quan về web và an ninh web
1.1.1 Khái niệm về ứng dụng web
Ứng dụng Web là một ứng dụng máy chủ/máy khách sử dụng giao thức
HTTP để tương tác với người dùng hay hệ thống khác. Trình duyệt Web dành
cho người dùng như Internet Explorer hoặc Firefox hay Chrome,... người dùng
gửi và nhận các thông tin từ máy chủ Web thông qua việc tác động vào các trang
Web. Các ứng dụng Web có thể là trang trao đổi mua bán, các diễn đàn, gửi và
nhận email, games online,...
Với công nghệ hiện nay, website không chỉ đơn giản là một trang tin cung
cấp các bài tin đơn giản. Những ứng dụng web viết trên nền web không chỉ được
gọi là một phần 4 của website nữa, giờ đây chúng được gọi là phần mềm viết
trên nền web. Có rất nhiều phần mềm chạy trên nền web như Google Word (xử
lý các file văn bản), Google spreadsheets (xử lý tính bảng tính), Google
Translate (từ điển, dịch văn bản),...
Ngày nay, ứng dụng web phát triển rất cao, gần như bây giờ người ta đều
sử dụng ứng dụng web như xem phim online, nghe nhạc online, chia sẻ mạng xã
hội (facebook, zing), chơi games online, ngân hàng trực tuyến,... và bắt đầu xuất
hiện những Hacker muốn thu lợi ích về phần mình từ các ứng dụng web.

-11-


Thực tập cơ sở
Trường


GVHD:TS.Nguyễn Đào

Hình 1.1 Cấu trúc hệ thống của ứng dụng web
Hình 1.1 đưa ra một kiến trúc hệ thống cho các ứng dụng web ngày nay. Kiến
trúc này bao gồm ba tầng: Web Browser (trình duyệt web), đóng vai trị là giao
diện người dùng; Web Application Server (máy chủ ứng dụng web) có chức
năng quản lý logic nghiệp vụ (business logic); và Database Server quản lý các
dữ liệu được lưu trữ. Web Application Server nhận đầu vào dưới dạng chuỗi từ
hai tầng còn lại: đầu vào do người dùng cung cấp từ trình duyệt và tập kết quả từ
cơ sở dữ liệu. Nó chuyển những đầu vào này thành đầu ra dưới dạng chuỗi cho
các tầng khác: các câu truy vấn cho Database Server và các văn bản HTML cho
trình duyệt máy khách. Web Application Server xây dựng mã “động”, vì thế mà
mã cho tồn bộ ứng dụng web không tồn tại ở bất cứ nơi nào tại bất kỳ một thời
điểm nào cho bất kỳ một thực thể nào điều chỉnh. Luồng dữ liệu giữa các tầng
làm nảy sinh vấn đề kiểm tra đầu vào (input validation) cho các Web Application
Server: nó phải kiểm tra và/hoặc chỉnh sửa các chuỗi đầu vào trước khi tiếp tục
xử lý chúng hay biến đổi chúng thành đầu ra để đưa đến tầng khác thực thi. Lỗi
kiểm tra hay các đầu vào chưa được xử lý có thể gây ra những vấn đề bảo mật
của ứng dụng web.
-12-


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

1.1.2 Các vấn đề liên quan đến ứng dụng web
-


Nguồn gốc của ứng dụng web: Các ứng dụng web được phát triển từ
nhiều nguồn khác nhau, nên các lỗ hổng, các lỗi bảo mật cũng đa dạng.
Tuy vậy các ứng dụng web chủ yếu được phát triển từ các nguồn chính
sau đây:
• Người lập trình tự phát triển ứng Web (Sử dụng các ngôn ngữ kịch bản
để tạo ứng dụng, phát triển rộng rãi mà ít quan tâm đến vấn đề phát
triển ứng dụng an toàn. Thiếu đội ngũ lập trình với kỹ năng nhận biết
phát triển ứng dụng tránh các lỗi bảo mật)
• Sử dụng ứng dụng Web từ mã nguồn mở( Thưởng không theo dõi và
cập nhật các bản vá lỗi bảo mật.)
• Phát triển ứng dụng Web từ một ứng dụng mở khác (Trường hợp này
thường không kiểm tra lỗi bảo mật ứng dụng cũ trước khi phát triển

tiếp, nên vẫn tồn tại các lỗi bảo mật)
- Sự phát triển đa dạng của ứng dụng Web: Ngày nay với sự phát triển
không ngừng của Internet, các ứng dụng Web cũng phát triển đa dạng trên
nhiều lĩnh vực: Cổng thông tin điện tử, báo tin tức điện tử, giao dịch tài
chính ngân hàng, thị trường chứng khốn, trang thơng tin điện tử doanh
nghiệp.
1.1.3 Các vấn đề về bảo mật web
Khi mà ứng dụng web phát triển rất nhanh về mọi mặt, khả năng ứng
dụng một cách rộng rãi thì vấn đề bảo mật cho ứng dụng web cũng được chú
trọng hơn. Mặc dù không thể phủ nhận những cải tiến nâng cao đáng kể hiện
nay, nhưng vấn đề về bảo mật trong ứng dụng Web vẫn khơng ngừng tăng lên.
Ngun nhân có thể xuất phát từ các đoạn mã không phù hợp. Nhiều điểm yếu
nghiêm trọng hay các lỗ hổng cho phép hacker xâm nhập thẳng và truy cập vào
cơ sở dữ liệu tách lấy dữ liệu nhạy cảm. Nhiều cơ sở dữ liệu chứa thông tin giá
trị (như chi tiết cá nhân, thông tin tài chính) khiến chúng trở thành đích nhắm
thường xuyên của hầu hết hacker. Mặc dù hoạt động tấn công phá hoại website
-13-



Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

doanh nghiệp vẫn diễn ra thường xuyên, nhưng bây giờ tin tặc thích tăng cường
khả năng truy cập dữ liệu nhạy cảm nằm trên trình chủ chứa database hơn vì lợi
nhuận khổng lồ từ các vụ mua bán dữ liệu đem lại.

Hình 1.2 Mơ hình hoạt động của ứng dụng web
Trong khung hoạt động mô tả ở trên, bạn có thể thấy thật dễ dàng cho một
hacker truy cập nhanh chóng thơng tin nằm trên cơ sở dữ liệu chỉ với một chút
sáng tạo. Nếu may mắn hơn chúng có thể gặp lỗ hổng xuất phát từ sự cẩu thả
hay lỗi người dùng trên các ứng dụng Web.
Như đã nói, website phụ thuộc vào cơ sở dữ liệu để phân phối thông tin
được yêu cầu cho người dùng. Nếu ứng dụng Web khơng an tồn (như có lỗ
hổng, gặp phải một kiểu kỹ thuật hacking nào đó), tồn bộ cơ sở dữ liệu chứa
thơng tin nhạy cảm sẽ gặp nguy hiểm nghiêm trọng.

-14-


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

Một số hacker có thể chèn mã độc hại vào ứng dụng Web có lỗ hổng để

lừa đảo người dùng và dẫn họ tới website phishing. Kỹ thuật này được gọi là
Cross-site Scripting, có thể được dùng ngay cả khi bản thân Web Server và nơi
chứa cơ sở dữ liệu khơng có lỗ hổng nào.
Một cuộc nghiên cứu gần đây chỉ ra rằng 75% các cuộc tấn công mạng
được thực hiện ở mức ứng dụng Web.Website và các ứng dụng Web liên quan
luôn phải sẵn sàng 24/7 để cung cấp dịch vụ theo yêu cầu khách hàng, yêu cầu
từ phía nhân viên, nhà cung cấp và nhiều người liên quan khác. ZF Tường lửa,
SSL không thể bảo vệ ứng dụng Web trước mọi hoạt động hacking, đơn giản vì
truy cập vào website phải để ở chế độ public để bất kỳ ai cũng có thể ghé thăm
website được. Tất cả hệ thống cơ sở dữ liệu hiện đại (như Microsoft SQL Server,
Oracle, MySQL) đều có thể truy cập qua một số cổng cụ thể (như cổng 80, 443).
Nếu muốn, một người nào đó có thể kết nối trực tiếp tới cơ sở dữ liệu một cách
hiệu quả khi vượt qua cơ chế bảo mật của hệ điều hành. Các cổng này để mở
nhằm cho phép liên lạc với hoạt động giao thông mạng hợp pháp, và do đó cũng
hình thành nên lỗ hổng lớn nguy hiểm.
Các ứng dụng Web thường truy cập dữ liệu cuối như cơ sở dữ liệu khách
hàng, điều khiển dữ liệu có giá trị và do đó rất khó để có thể tuyệt đối an toàn.
Lúc này truy cập dữ liệu thường khơng kèm script cho phép đóng gói và truyền
tải dữ liệu. Nếu một hacker nhận ra điểm yếu trong một script, anh ta có thể dễ
dàng mở lại lưu lượng sang khu vực khác và chia lẻ bất hợp pháp chi tiết cá
nhân người dùng, dù đôi khi không hề chủ tâm làm điều đó.
Hầu hết ứng dụng Web đều là tự tạo, do đó ít có được các kiểm tra trình
độ hơn so với phần mềm cùng loại. Do đó các ứng dụng tùy biến thường dễ bị
tấn cơng hơn. Có thể nói ứng dụng Web là một cổng vào (gateway) của cơ sở dữ
liệu, nhất là các ứng dụng tùy biến. Chúng không được phát triển với mức bảo
mật tốt nhất vì khơng phải qua các kiểm tra bảo mật thơng thường. Nói chung,
bạn cần trả lời câu hỏi: “ Phần nào trên website chúng ta nghĩ là an tồn nhưng
lại mở cửa cho các cuộc tấn cơng ? ” và “ Dữ liệu nào chúng ta đem vào một
ứng dụng khiến nó thực hiện một số điều khơng nên làm ? ”.Đó là cơng việc của
phần mềm rà sốt lỗ hổng Web. Hiện nay, hacker có rất nhiều cách tấn công một

ứng dụng web từ các kỹ thuật cơ bản cho đến những kỹ thuật đòi hỏi kỹ thuật và
công nghệ cao cao. Các công cụ (tool) hỗ trợ ra đời ngày càng nhiều, hỗ trợ rất
nhiều cho người quản trị mạng, tìm ra những lỗ hổng để có bản vá lỗi kịp thời
nhưng đồng thời nó cũng là một con dao hai lưỡi.

-15-


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

Hacker có thể dùng những tool này để phát hiện những lỗ hổng của một
ứng dụng web và từ đó sẽ có cách tấn cơng tương ứng vào lỗ hổng này gây ra rất
nhiều tổn thất.
Vì vậy việc nghiên cứu về các kỹ thuật tấn công và những tool cơ bản
hiện nay là một nhu cầu tất yếu trong việc nghiên cứu bảo mật ứng dụng web.
1.1.4 Thực trạng an ninh mạng hiện nay
-

Gia tăng tấn công vào thiết bị di động: Năm 2021 đã chứng kiến nhiều
cuộc tấn công trên iOS hơn bao giờ hết. Khơng giống như trên PC hoặc
Mac, nơi người dùng có tùy chọn cài đặt gói bảo mật, trên iOS, các gói
bảo mật như vậy bị hạn chế hoặc đơn giản là không tồn tại. Điều này tạo
ra nhiều cơ hội cho các cuộc tấn cơng có chủ đích (Advanced Persistent
Threat - APT). Báo cáo của Kaspersky cho thấy, thiết bị di động sẽ là mục
tiêu của các cuộc tấn công tinh vi, trên diện rộng vào năm 2022. Theo đó,
thiết bị di động luôn là đối tượng hấp dẫn đối với những kẻ tấn công khi
điện thoại thông minh luôn đi cùng chủ nhân của chúng mọi lúc, mọi nơi

và mỗi mục tiêu tiềm năng hoạt động như một kho lưu trữ lượng lớn
thơng tin có giá trị, vì thế, các thiết bị di động tiếp tục là mục tiêu của các

cuộc tấn công tinh vi, trên diện rộng trong thời gian tới.
- Làm việc từ xa tiếp tục là chủ đề bị khai thác: Đại dịch Covid-19 đã làm
thay đổi cả thế giới khi giờ đây rất nhiều công ty đã chuyển đổi cách thức
hoạt động, cho phép nhân viên làm việc tại nhà hay từ bất cứ nơi đâu.
Năm 2020 và 2021 là hai năm thế giới trải qua đợt diễn tập làm việc tại
nhà lớn nhất từ trước đến nay khi đại dịch toàn cầu buộc các doanh nghiệp
phải chuyển sang hoạt động trực tuyến và thích ứng với việc sử dụng lực
lượng lao động phân tán. Hình thức làm việc này tạo ra những thách thức
mới về an tồn thơng tin trong bối cảnh tấn cơng mạng tiếp tục có nhiều
diễn biến phức tạp. Năm 2022 tình hình dịch bệnh vẫn cịn tiếp tục kéo
dài và mơ hình làm việc từ xa sẽ tiếp tục được phát triển. Với mơ hình
làm việc từ xa, tội phạm mạng sẽ tiếp tục sử dụng máy tính tại nhà không
được bảo vệ hoặc chưa được vá lỗi của nhân viên như một cách để xâm

-16-


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

nhập vào mạng của các tổ chức. Việc tin tặc dùng các biện pháp kỹ thuật
để đánh cắp thông tin đăng nhập và tấn công bẻ khóa (brute-force) vào
dịch vụ của các tổ chức để giành quyền truy cập vào các máy chủ được
cảnh báo sẽ tiếp tục gia tăng.
- Tống tiền bằng mã độc: Song song với phong trào chuyển đổi số đang

diễn ra mạnh mẽ trong các doanh nghiệp hiện nay, mã độc tống tiền
(ransomware) được dự báo sẽ tiếp tục gây ra nhiều hiểm họa. Theo báo
cáo về hoạt động mã độc tống tiền đầu tiên của VirusTotal và Google, tính
đến cuối năm 2021, mã độc tống tiền ransomware tăng gần 200% so với
thời điểm ban đầu tại Việt Nam. Nguyên nhân được cho là do ảnh hưởng
của đại dịch Covid-19, các tổ chức, doanh nghiệp cũng như rất nhiều cá
nhân tại Việt Nam nói riêng và trên tồn thế giới nói chung đang “chuyển
đổi số”, làm quen với việc làm việc trực tuyến.
- Tội phạm mạng liên quan đến Blockchain: Trong bối cảnh ngày càng
nhiều doanh nghiệp và người tiêu dùng phụ thuộc vào công nghệ chuỗi
khối (Blockchain) để quản lý chuỗi cung ứng và giao dịch kỹ thuật số của
họ, Blockchain chứa thông tin nhạy cảm về tài sản và cơ sở hạ tầng của
người dùng và doanh nghiệp, vì thế nó trở nên hấp dẫn đối với bọn tội
phạm. Tội phạm mạng cũng tận dụng lợi thế của Blockchain để ẩn giấu
các hành vi phạm tội. Theo hãng bảo mật Kaspersky, lừa đảo bằng kỹ
thuật xã hội, chiêu trò gian lận vẫn xảy ra với các hệ thống bảo mật cao
như Blockchain, vì những kẻ lừa đảo vẫn có thể lấy được thông tin đăng
nhập hoặc thông tin cá nhân của người dùng để thực hiện các hành vi xâm
nhập và trục lợi. Bên cạnh đó, việc tiền ảo bùng nổ trên tồn cầu đã khiến
đơng đảo người dùng mơ ước làm giàu nhanh chóng bị lơi kéo vào cuộc
chơi này. Nhiều dự án lừa đảo hiện nay đang mạo danh ứng dụng
Blockchain để giăng bẫy người dùng. Đây chỉ là một chiêu trò lừa đảo
bằng kỹ thuật xã hội đơn giản nhưng dễ thu hút người dùng nhờ đánh vào
lịng tham của họ.
- Các cuộc tấn cơng vào chuỗi cung ứng có xu hướng gia tăng: Năm 2021,
thế giới bị đẩy vào tình thế khó khăn vì các chuỗi cung ứng gián đoạn do

-17-



Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

những hạn chế mà dịch Covid-19 mang lại. Theo giới chuyên gia kinh tế,
sự gián đoạn chuỗi cung ứng toàn cầu đang ngày càng tồi tệ hơn bất chấp
các nỗ lực ngăn chặn dịch bệnh Covid-19 lây lan của các nước. Mạng lưới
rộng lớn kết nối các cảng biển, tàu chở hàng cũng như các công ty vận tải
hàng hóa đường bộ trên khắp thế giới đang rơi vào tình trạng rối loạn
nghiêm trọng. Nắm bắt được điều này, tội phạm mạng sẽ tìm cách lợi
dụng sự phụ thuộc đáng kể của mọi người đối với chuỗi cung ứng, bao
gồm cấp độ người tiêu dùng lẫn doanh nghiệp. Các cuộc tấn công tống
tiền bằng mã độc không những là mối đe dọa cho các công ty, mà cịn đối
với tồn bộ chuỗi cung ứng của họ. Điều đó biến những dạng tấn cơng
này trở thành mối quan tâm hàng đầu đối với hội đồng quản trị các công
ty.
- Bùng nổ các cuộc tấn công vào đám mây: Ngày càng có nhiều dữ liệu và
ứng dụng chuyển sang sử dụng nền tảng đám mây. Mặc dù, điện tốn đám
mây có một số lợi thế như truy cập thơng tin trên bất kỳ thiết bị nào có kết
nối Internet, cộng tác với đồng nghiệp trên cùng một tài liệu, lưu trữ
lượng lớn dữ liệu với chi phí thấp... nhưng nó cũng đi kèm với nhiều mối
đe dọa và thách thức về bảo mật. Hiện nay, điện toán đám mây tiếp tục
thay đổi cách các tổ chức sử dụng, lưu trữ, chia sẻ dữ liệu, đồng thời cũng
xuất hiện một loạt các mối đe dọa và thách thức bảo mật mới. Với rất
nhiều dữ liệu đưa lên đám mây, đặc biệt là các dịch vụ đám mây cơng
cộng thì những tài nguyên này đã trở thành mục tiêu hấp dẫn cho kẻ tấn
công. Nhiều doanh nghiệp đang kết hợp điện toán đám mây và kiến trúc
phần mềm dựa trên kỹ thuật phát triển phần mềm và chạy trên cơ sở hạ
tầng của bên thứ ba, khiến các doanh nghiệp này dễ bị tấn công hơn. Điều

này khiến ngày càng nhiều công ty trở thành mục tiêu cho các cuộc tấn
công tinh vi trong thời gian tới.
- Gia tăng các cuộc tấn cơng vào tồn bộ mạng lưới doanh nghiệp: Tội
phạm mạng thường sử dụng các kỹ thuật di chuyển để xâm nhập vào toàn
bộ mạng của tổ chức sau khi thực hiện cuộc tấn công của chúng. Năm
2021, chúng ta đã chứng kiến nhóm REvil Ransomware sử dụng phần
-18-


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

mềm quản lý mạng và điều khiển từ xa trong vụ tấn công nhằm vào hãng
phần mềm Kaseya bằng ransomware. Điều này không chỉ ảnh hưởng đến
bản thân Kaseya mà còn ảnh hưởng đến khách hàng của nhà cung cấp
dịch vụ và người dùng cuối của họ.
- Quản lý những rủi ro mới trong thời đại 5G: Nhiều nước trên thế giới hiện
đang thúc đẩy việc áp dụng 5G và theo Hiệp hội Hệ thống thông tin di
động tồn cầu (GSMA), thế giới sẽ có 276 triệu kết nối 5G vào cuối năm
2025. Trong năm 2022, nhiều tổ chức sẽ tìm cách đầu tư vào cơng nghệ
5G để đạt được khả năng kết nối lớn hơn. Việc áp dụng 5G sẽ cho phép họ
tạo ra giá trị mới từ các tài sản mạng cốt lõi hiện có và đưa doanh nghiệp
của họ vào lộ trình chuyển đổi kỹ thuật số. Tuy nhiên, việc triển khai 5G
cũng có những thách thức khơng nhỏ. Việc 5G đang thúc đẩy tốc độ phát
triển của Internet of Things, các tác nhân đe dọa có thể tận dụng những
nơi kết nối dễ bị tấn công và xâm nhập vào thiết bị thông minh để tấn
công cơ sở hạ tầng mạng.
1.2 Tổng quan về Database trong SQL

1.2.1 Khái quát về Database
Database (hay còn gọi là Cơ sở dữ liệu) là một tập hợp dữ liệu có cấu
trúc, có tổ chức. Trong thuật ngữ máy tính, cơ sở dữ liệu đề cập đến một
phần mềm được sử dụng để lưu trữ và tổ chức dữ liệu. Database cịn có
thể được lưu trữ trên thiết bị có chức năng ghi nhớ như: thẻ nhớ nhớ USB,
ổ cứng, đĩa CD…
- Lưu trữ trên thiết bị có chức năng ghi nhớ như: thẻ nhớ nhớ USB, ổ cứng,
đĩa CD…
- Database thường được kiểm soát bởi một hệ quản trị cơ sở dữ
liệu (Database Management System – DBMS: một gói phần mềm với các
tiện ích cốt lõi được thiết kế để xác định, thao tác, truy xuất và quản lý dữ
liệu trong Database).
- Cùng với nhau, chúng tạo thành hệ thống cơ sở dữ liệu và thường được
gọi vắn tắt là Database.
-

-19-


Thực tập cơ sở
Trường
-

GVHD:TS.Nguyễn Đào

Dữ liệu trong các loại các cơ sở dữ phổ biến ngày nay thường được tổ
chức thành các hàng và cột trong một chuỗi bảng để giúp xử lý và truy
vấn dữ liệu hiệu quả. Các dữ liệu sau đó có thể dễ dàng được truy xuất,
quản lý, sửa đổi, cập nhật, kiểm soát và tổ chức.


1.2.2 Database trong các ứng dụng web
Công nghệ web đang phát triển nhanh chóng. Trong khi bạn đang tự hỏi
“ứng dụng web” là gì ?, các nhà phát triển đã bắt đầu chuyển sang “ứng
dụng web tiến bộ”. Hầu hết mọi ứng dụng web trên web đều yêu cầu cơ
sở dữ liệu. Một ứng dụng mua sắm yêu cầu một cơ sở dữ liệu để tương tác
với các sản phẩm và khách hàng.
- Một ứng dụng web động như ứng dụng tin tức hoặc blog yêu cầu cập nhật
các trang web ngay lập tức và thường xuyên. Đối với một ứng dụng như
vậy, việc thay đổi và tạo một trang HTML mới là một công việc tẻ
nhạt. Đây là nơi cơ sở dữ liệu đi vào bức tranh và giúp giảm bớt cuộc
sống của nhà phát triển.
- Không chỉ truy xuất và cập nhật dữ liệu, cơ sở dữ liệu còn giúp xác thực
được quan sát thấy trong các trang web có chức năng đăng nhập và đăng
ký. Các trang web như vậy hiển thị các trang web tùy chỉnh dựa trên
người dùng đã đăng nhập. Cơ sở dữ liệu có thể là một lợi ích thực sự cho
một nhà phát triển web nếu được sử dụng đúng cách.
-

1.3 Tổng quan về SQL Injection
1.3.1 Sơ lược về truy vấn SQL
-

Đặc trưng của các ứng dụng sử dụng cơ sở dữ liệu
• Hiện nay các ứng dụng phổ biến và có doanh thu hang đầu đều có sử
dụng tính năng quản lý. Dữ liệu là thứ vô cùng quan trọng và thiết yếu
trong mọi hoạt động, tổ chức hiện tại. Vì thế mà các ứng dụng hiện tại
đề xây dựng trên mơ hình phát triển gắn liền với cơ sở dữ liệu. An toàn
của dữ liệu được quyết định bởi sự bảo mật và an toàn của ứng dụng
Web kết nối tới cơ sở dữ liệu.


-20-


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

• Ngày nay có nhiều mơ hình phát triển ứng dụng web nhưng chúng ln

có một số điểm chung đó là Database server chỉ làm nhiệm vụ lưu trữ
dữ liệu, Database hồi đáp những dữ liệu truy vấn được xây dựng theo
chuẩn. Mọi thao tác dữ liệu input và output của Database server đều
được ứng dụng web ở tầng Logic xử lý. Vì thế các vấn đề về an ninh đa
số sẽ nằm ở tầng này.
- Cơ sở dữ liệu (database) được coi như là “trái tim” của hầu hết các
website. Nó chứa đựng những dữ liệu cần thiết để website có thể chạy và
lưu trữ các thơng tin phát sinh trong q trình chạy. Nó cũng lưu trữ
những thơng tin cá nhân, thẻ tín dụng, mật khẩu của khách hàng, của user
và thậm chí là cả của Administrator. Để lấy các thông tin cần thiết từ cơ
sở dữ liệu thì các câu lệnh SQL sẽ đảm đương trách nhiệm thực hiện các
yêu cầu truy vấn được đưa ra từ phía người sử dụng: khi người dùng đăng
nhập vào hệ thống, lấy một thông tin nào đó trên web... đều cần sử dụng
các câu lệnh SQL, hay nói cách khác, các câu lệnh SQL đóng một vai trò
rất quan trọng đối với một hệ thống web.
1.3.2 Khái niệm SQL Injection
-

SQL Injection là một kỹ thuật điền vào những đoạn mã SQL bất hợp pháp
cho phép khai thác một lỗ hổng bảo mật tồn tại trong cơ sở dữ liệu của

một ứng dụng. Lỗ hổng bảo mật này có thể xuất hiện khi ứng dụng khơng
có đoạn mã kiểm tra chuỗi ký tự trong câu truy vấn SQL hoặc do sự định
kiểu đầu vào không rõ ràng hay do lỗi cú pháp SQL của lập trình viên
khiến cho một đoạn mã ngoại lai có thể được xử lý ngồi ý muốn. Nó là
một ví dụ của sự rủi ro khi một ngơn ngữ lập trình hay ngơn ngữ kịch bản
được nhúng trong một ngôn ngữ khác. Tấn cơng SQL Injection cịn có thể

hiểu là hình thức tấn công chèn bất hợp pháp các đoạn mã SQL.
- SQL Injection là một dạng tấn công dễ thực hiện, hầu hết mọi thao tác
người tấn công cần được thực hiện với một trình duyệt web, có thể kèm
theo một ứng dụng proxy server. Chính vì đơn giản như vậy cho nên bất

-21-


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

cứ ai cũng có thể học cách tiến hành một cuộc tấn công. Lỗi bắt nguồn từ
mã nguồn của ứng dụng web chứ không phải từ phía database, chính vì
thế bất cứ thành phần nào của ứng dụng mà người dung có thể tương tác
được để điều khiển nội dung như các form tham số URL, cookie, … đều
có thể được sử dụng để tiến hành chèn truy vấn có hại.
- Như vậy lỗi SQL Injection xảy ra khi website khơng được lập trình tốt,
bản chất điểm yếu SQL Injection là xuất hiện từ trong quá trình xử lý dữ
liệu input của người dung bên trong mã nguồn, do chính thời gian bảo trì
mã nguồn thường kéo dài nên các lỗi SQL Injection cũng chậm được khắc
phục triệt để.

1.3.3 Cách hoạt động của SQL Injection
-

Một cuộc tấn công SQL injection nhắm vào lỗ hổng trong các câu lệnh
SQL động. Hãy nghĩ về một câu lệnh SQL động giống như một hàm đa
biến trong toán học, trong đó các tham số được cố định, trong khi các giá
trị được thay thế trong các biến độc lập xác định kết quả.

-

Tương tự, một câu lệnh SQL động cũng bao gồm một tập hợp các tham số
được xác định trước (chẳng hạn như biểu mẫu web), trong đó câu lệnh
hoàn chỉnh chỉ được tạo ra khi người dùng điền vào các đầu vào của họ.
Ví dụ sau về câu lệnh SQL của biểu mẫu đăng nhập:

SELECT * FROM users WHERE username = ‘$username’ AND password
= bcrypt (‘$password’)

-

Sau khi người dùng nhập tên người dùng và mật khẩu của họ, câu lệnh sẽ
được hồn tất, sau đó một truy vấn sẽ được gửi đến máy chủ để truy xuất
thông tin của người dùng từ cơ sở dữ liệu.

-

Khi một lỗ hổng tồn tại trong một câu lệnh SQL động, kẻ tấn cơng sẽ có
thể nhập các tập lệnh phức tạp vào các biểu mẫu để can thiệp vào các
tham số đã có từ trước để thay đổi ý nghĩa của câu lệnh hoàn chỉnh.


-22-


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

1.4 Tác động của SQL Injection
-

Thông tin đăng nhập bị đánh cắp: Sử dụng SQL Injection để tìm kiếm
thơng tin đăng nhập người dùng. Sau đó, những kẻ tấn cơng có thể mạo
danh người dùng, sử dụng và thay đổi các quyền hạn của người dùng sẵn

có.
- Truy cập cơ sở dữ liệu: Sử dụng SQL Injection để truy cập vào nguồn
thông tin được lưu trữ trong máy chủ cơ sở dữ liệu. Điều này có thể gây ra
những vấn đề nghiêm trọng cho các dữ liệu của tồn bộ hệ thống vận
hành.
- Xóa dữ liệu: Sử dụng SQL Injection để xóa các bản ghi của cơ sở dữ liệu,
bao gồm cả drop tables, gây ra những sự thay đổi hoặc phá vỡ các cấu
trúc của cơ sở dữ liệu.
- Dữ liệu thay thế: Sử dụng SQL Injection để chủ động thay đổi hoặc thêm
dữ liệu mới vào cơ sở dữ liệu hiện tại, ảnh hưởng đến kết quả chiết xuất
dữ liệu cuối cùng xảy ra những sai lệch.
- Mạng lưới truy cập: Sử dụng SQL Injection để truy cập vào các máy chủ
cơ sở dữ liệu và sử dụng các quyền hạn quản lý trong hệ điều hành. Sau
đó, những kẻ tấn cơng sẽ thực hiện các cuộc tấn công sâu hơn vào mạng
lưới.


CHƯƠNG 2. CÁC CÁCH TẤN CƠNG PHỔ BIẾN VÀ CÁCH PHỊNG
CHỐNG SQL INJECTION

-23-


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

2.1 Các cách tấn công phổ biến
Các dạng tấn công phổ biến bao gồm: vượt qua kiểm tra lúc đăng nhập
(authorization bypass), sử dụng câu lệnh SELECT, sử dụng câu lệnh INSERT, sử
dụng các stored-procedures, tấn công sử dụng Blind SQL injection.
2.1.1 Dạng tấn công vượt qua kiểm tra đăng nhập
Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng
nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng
dụng web.
Ví dụ:
Khi người dùng truy cập vào trang website được bảo mật thì hệ thống đó
đều có trang đăng nhập nhằm mục đích u cầu người dùng nhập thơng tin về
Username và Password. Sau khi người dùng nhập đầy đủ thông tin vào thì hệ
thống sẽ kiểm tra tên Username và Password, nếu Username và Password hợp lệ
thì cho phép người dùng sử dụng và người dùng sẽ bị từ chối nếu Username và
Password khơng đúng.
Trong trường hợp này, người ta có thể dùng hai trang, một trang HTML
để hiển thị form nhập liệu và một trang ASP dùng để xử lí thơng tin nhập từ phía
người dùng. Ví dụ:


-24-


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

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 tồ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
tồ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 người dùng nhập chuỗi sau vào trong cả 2 ô nhập
liệu username:
‘ OR 1=1#.Lúc này, câu truy vấn sẽ được gọi thực hiện là:
SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and
USR_PASSWORD= '' OR 1=1 #

-25-


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào

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ệ.
2.1.2 Dạng tấn công sử dụng câu lệnh SELECT và UNION
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.
Chúng ta có thể gặp các website tin tức có các tham số được truyền vào
như: index.php?id=21, index.asp?id=6,.. thì chúng ta chỉ cần thêm các kí tự dấu
nháy đơn ('), dấu nháy kép ("), phần trăm 27 (%27), 00 phần trăm (00%) vào sau
id để kiểm tra nếu nó hiện ra lỗi hoặc khơng hiện ra 1 cái gì (khác hồn tồn với
lúc ban đầu thì 90% có khả năng khai thác được lỗi này) Ví dụ:
là một website bị lỗi SQL
Injection thì chúng ta sẽ thử với />id=40’ thì đều trả về trang lỗi Trong các tình huống thơng thường, URL hiển thị
nội dung của tin có ID trùng với ID đã chỉ định và hầu như khơng thấy có lỗi.
Tuy nhiên, giống như ví dụ đăng nhập ở trước, đoạn mã này để lộ sơ hở cho một
lỗi SQL injection khác. Kẻ tấn cơng có thể thay thế một ID hợp lệ bằng cách gán
ID cho một giá trị khác, và từ đó bắt đầu cho một cuộc tấn cơng bất hợp pháp, ví
dụ như: 0 OR 1=1 (nghĩa là: />id=0%20or%201=1) Câu truy vấn SQL lúc này sẽ không trả về trang lỗi mặc dù
chúng ta khơng có sản phẩm nào có ID = 0, vì nó sẽ thực hiện câu lệnh:
SELECT * FROM Products WHERE Product_ID=0 or 1=1#

Mã nguồn cho chức năng này thường được viết khá đơn giản theo dạng

-26-


Thực tập cơ sở
Trường

GVHD:TS.Nguyễn Đào


Một trường hợp khác, ví dụ như trang tìm kiếm. Trang này cho phép người dùng
nhập vào các thơng tin tìm kiếm như Họ, Tên, … Đoạn mã thường gặp là:

Tương tự như trên, tin tặc có thể lợi dụng sơ hở trong câu truy vấn SQL để nhập
vào trường tên tác giả bằng chuỗi giá trị:
' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE '
'=' (*)

Lúc này, ngồi câu truy vấn đầu khơng thành cơng, chương trình sẽ thực hiện
thêm lệnh tiếp theo sau từ khóa UNION nữa.
Tất nhiên các ví dụ nói trên, dường như khơng có gì nguy hiểm, nhưng hãy thử
tưởng tượng kẻ tấn cơng có thể xóa tồn bộ cơ sở dữ liệu bằng cách chèn vào

-27-


×