Tải bản đầy đủ (.doc) (34 trang)

CÁC LOẠI TẤN CÔNG BUFFER OVERFLOW, SQL INJECTION, CROSSSITE SCRIPTING, URL ATTACK, HIJACKING

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 (478 KB, 34 trang )



HỌC VIỆC CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Đề tài :
CÁC LOẠI TẤN CÔNG BUFFER OVERFLOW, SQL
INJECTION, CROSS-SITE SCRIPTING, URL
ATTACK, HIJACKING
Giảng viên hướng dẫn :
PGS.TSKH. Hoàng Đăng Hải
Hà Nội – 11/2012
MỤC LỤC
1
PHẦN I - THỰC TRẠNG AN NINH MẠNG TẠI VIỆT NAM HIỆN NAY VÀ DỰ BÁO XU HƯỚNG AN NINH MẠNG
NĂM 2011 4
1. TÌNH HÌNH PHÁT TRIỂN INTERNET TỚI VIỆT NAM ĐẾN THÁNG 11/2012 4
2. CÁC CUỘC TẤN CÔNG CỦA HACKER VÀ NHỮNG THIỆT HẠI MÀ NÓ GÂY RA HIỆN NAY TẠI VIỆT NAM 5
3. DỰ BÁO XU HƯỚNG AN NINH MẠNG NĂM 2013 7
PHẦN II - MỘT SỐ KỸ THUẬT TẤN CÔNG CỦA HACKER VÀO LỖ HỎNG TRÊN TRANG
WEB VÀ BIỆN PHÁP PHÒNG CHỐNG 8
1. TẤN CÔNG CHÈN CÂU TRUY VẤN SQL INJECTION 8
1.1 SQL Injection là gì? 8
1.2 Các dạng tấn công SQL Injection 8
1.3 Cách phòng tránh 12
2. CHÈN MÃ LỆNH THỰC THI TRÊN TRÌNH DUYỆT CROSS-SITE SCRIPTING 14
2.1Tấn công Cross-Site Scripting 14
2.2 Phương pháp tấn công XSS truyền thống 15
2.3 Cách phòng ngừa 16
3. CHIẾM HỮU PHIÊN LÀM VIỆC (SESSION MANAGEMENT) 17
3.1. Tổng quan về Session ID 17
3.3 Đánh cắp phiên làm việc 19
3.4 Cách phòng ngừa 20


4. TỪ CHỐI DỊCH VỤ (DOS) 20
4.1 Khái niệm tấn công kiểu DoS (Denial of Service) 20
4.2 Các kỹ thuật tấn công 21
5. MỘT SỐ KỸ THUẬT TẤN CÔNG KHÁC 26
5.1 Mã Hóa URL (URL Encoding) 26
5.2 Kiểu tấn công vượt đường dẫn 26
5.3 Tấn công dựa vào ký tự rỗng 27
5.4 Ngôn ngữ phía trình chủ 27
PHẦN IV - TỔNG KẾT CÁC BIỆN PHÁP PHÒNG CHỐNG 29
1. VỚI NHỮNG NHÀ QUẢN TRỊ MẠNG 29
2. VỚI NHỮNG NHÀ THIẾT KẾ ỨNG DỤNG WEB 29
3. VỚI NHỮNG NGƯỜI SỬ DỤNG WEB 31
PHẦN V - KẾT LUẬN 32
1. NHỮNG VẤN ĐỀ ĐẠT ĐƯỢC 32
2. HƯỚNG PHÁT TRIỂN 32
MỞ ĐẦU
Ngày nay, khi Internet được phổ biến rộng rãi ,các tổ chức đều có nhu cầu giới
thiệu thông tin của mình trên xa lộ thông tin cũng như thực hiện các phiên giao dịch
trực tuyến. Vấn đề nảy sinh là vi phạm ứng dụng của các ứng dụng web ngày càng mở
rộng thì khả năng xuất hiện lỗi và bị tấn công càng cao, trở thành đối tượng cho nhiều
người tấn công với các mục đích khác nhau. Đôi khi cũng chỉ đơn giản là để thử tài
hoặc đùa bởn với người khác.
Cùng với sự phát triển không ngừng của Internet và các dịch vụ trên Internet, số
lượng dịch vụ tấn công trên Internet cũng tăng theo cấp số nhân. Trong khi các
phương tiện thông tin đại chúng ngày càng nhắc nhiều đến những khả năng truy cập
thông tin của Internet, thì các tài liệu chuyên môn bắt đầu đề cập đến nhiều vấn đề bảo
đảm và an toàn dữ liệu cho các máy tính kết nối vào mạng Internet.
Vì thế vấn đề bảo đảm và an toàn dữ liệu cho các máy tính được kết nối vào
mạng Internet là cần thiết nhằm mục đích bảo vệ dữ liệu, bảo vệ thông tin doanh
nghiệp, người dùng và bảo vệ hệ thống.

Tuy đã có nhiều cố gắng từ các nhà lập trình Web nhưng vẫn không thể đảm bảo
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 một vài khuôn khổ 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 ứng dụng.
Vì vậy, đề tài này được thực hiện với mục đích tìm hiểu, phân tích các lỗ hổng
bảo mật trong các ứng dụng Web.
• Mục tiêu và nhiệm vụ :
- Tìm hiểu các kỹ thuật tấn công ứng dụng Web cơ bản như: XSS, Session, DOS.
- Tìm hiểu và nghiên cứu cụ thể kỹ thuật tấn công chèn câu truy vấn SQL
Injection và các giải pháp phòng ngừa.
• Phương pháp nghiên cứu :
- Tổng hợp tìm hiểu, nghiên cứu từ các tư liệu liên quan.
- Phân tích, đánh giá các kỹ thuật tấn công. Đưa ra các giải pháp phòng ngừa ở
các mức.
• Ý nghĩa thực tiễn của đề tài :
- Về mặt lý thuyết, đề tài thể hiện rõ các cách tấn công cơ bản thường được
hacker sử dụng để tấn công vào các ứng dụng Web từ trước đến nay, và có thể
sử dụng tiếp trong thời gian dài trong tương lai.
- Về mặt thực tiển, với các cách tấn công của hacker như đã tìm hiểu, nghiên cứu
trong báo cáo này, nếu áp dụng tốt các phương pháp phòng ngừa trong đề tài
nêu ra sẽ góp phần nâng cao khả năng bảo vệ các ứng dụng Web trước nguy cơ
tấn công của kẽ xấu.
PHẦN I - THỰC TRẠNG AN NINH MẠNG TẠI VIỆT NAM HIỆN NAY
VÀ DỰ BÁO XU HƯỚNG AN NINH MẠNG NĂM 2011
1. TÌNH HÌNH PHÁT TRIỂN INTERNET TỚI VIỆT NAM ĐẾN THÁNG 11/2012
Tại Việt Nam, nhiều doanh nghiệp phải đối mặt với việc hình thành và lan tràn
nhiều biến thể virut mới, tấn công trên mạng ngày càng nở rộ với mục đích vụ lợi cá
nhân cũng như mục đích kinh tế, thậm chí ảnh hưởng đến hoạt động kinh doanh và an
ninh quốc gia. Các website trong nước liên tiếp bị tấn công với mức độ phức tạp gia

tăng mà điển hình là việc báo điện tử Vietnamnet bị tấn công nhiều lần và đánh sập
vào ngày 22/11/2010. Hình thức lừa đảo trực tuyến các email bằng tiếng việt đã bắt
đầu xuất hiện và phát tán rộng…đã đặt ra yêu cầu đối với sự nhận thức đúng đắn về
mức độ cấp thiết, tối quan trọng của an ninh mạng, bảo mật thông tin.
Mạng Internet Việt Nam còn tiềm ẩn rất nhiều những nguy cơ về mặt an ninh an
toàn thông tin. Hàng loạt website lớn bị tấn công với mức độ phức tạp ngày càng gia
tăng. Rất nhiều các website của các tổ chức, doanh nghiệp còn tồn tại các lỗ hổng an
toàn thông tin. Nhiều lỗ hổng an toàn thông tin mới được phát hiện. Tội phạm mạng
đang diễn ra với tốc độ nhanh hơn, quy mô hơn, tính chuyên nghiệp, trình độ kỹ thuật
ngày càng cao hơn
Số lượng các cuộc tấn công web tăng gấp đôi:
- Trong 3 tháng đầu năm 2010 đã có hơn 300 website của các cá nhân và tổ chức
có tên miền .vn bị các hacker nước ngoài thăm dò, tấn công.
- Tính đến cuối quý I/2011, số người sử dụng Internet tại Việt Nam
đạt 27.559.006 người, chiểm 31,9 % dân số; số thuê bao internet trên cả nước
ước tính đạt 3,8 triệu thuê bao. Đa số các doanh nghiệp và các tổ chức có hệ
thống mạng và website giới thiệu, quảng bá thương hiệu (191.667 tên miền .vn
và hàng triệu tên miền thương mại). Có rất nhiều doanh nghiệp đã ứng dụng
thanh toán trực tuyến vào công việc kinh doanh, giao dịch,…
- Các website bị tấn công chủ yếu là các website kinh doanh trực tuyến, ngân
hàng, các tổ chức cung cấp dịch vụ ,…( Nguyên nhân: chủ yếu là sự yếu kém
trong quản trị website và không thường xuyên kiểm soát lỗ hổng, ít quan tâm
đếncác cảnh báo an ninh của các cơ quan, tổ chức có chức năng đảm bảo an
ninh an toàn thông tin quốc gia
Rất nhiều website trong nước tồn tại các lỗ hổng an toàn thông tin ở mức độ nguy
hiểm cao. Đa số các trang web lớn của Việt Nam đều có lỗ hổng bảo mật và có thể bị
chiếm quyền điều khiển. Hiện nay, trên mạng Internet Việt Nam có đến 90% các
website được xây dựng trên công nghệ ASP.NET và sử dụng dịch vụ IIS 6.0, đây là lỗ
hổng lớn nhất và vẫn chưa được khắc phục. Trong năm 2010 đã ghi nhận hơn 1000
website ở nước ta bị tấn công từ các lỗ hổng đang tồn tại trên các website và các lỗ

hổng trên các máy chủ hệ thống. Các website của các tổ chức tài chính, ngân hàng,
chứng khoán vẫn tồn tại rất nhiều lỗ hổng.
Các hành vi phạm tội vẫn là:
- Dùng thủ đoạn Phishing, trojan horse, spyware để lấy cắp địa chỉ email, thông
tin thẻ tín dụng và thông tin cá nhân như tên, địa chỉ,số điện thoại, số thẻ an
ninh xã hội, thông tin giấy phép lái xe…
- Mua bán thông tin thẻ tín dụng trên mạng internet.
- Trộm cắp tiền từ thẻ tín dụng và tài khoản, làm thẻ tín dụng giả rút tiền từ máy
ATM.
- Rửa tiền: chuyển tiền từ tài khoản trộm cắp được sang tài khoản e-money tại e-
gold, e-passport.
- Lừa đảo qua quảng cáo, bán hàng trực tuyến trên mạng internet, trong hoạt
động thương mại điện tử,trong mua bán ngoại tệ,cổ phiếu qua mạng, đánh bạc
và rửa tiền, thực hiện hành vi trốn thuế.
- Buôn bán ma túy, mại dâm qua mạng internet, truyền bá khiêu dâm trên mạng,
thực hiện các hoạt động khủng bố, phá hoại,
2. CÁC CUỘC TẤN CÔNG CỦA HACKER VÀ NHỮNG THIỆT HẠI MÀ NÓ GÂY RA HIỆN
NAY TẠI VIỆT NAM
Trong vài năm trở lại đây, khủng hoảng kinh tế nên bọn tội phạm vẫn nhằm vào
các hệ thống Công Nghệ Thông Tin của lĩnh vực tài chính ngân hàng, với mục tiêu
kiếm được nhiều tiền hơn, nên chúng có xu hướng hoàn thiện kỹ thuật tấn công để tấn
công các mục tiêu này và chúng đã thành công ở một số hệ thống.
Trong năm 2009, chỉ tính riêng hơn 40 vụ án công nghệ cao bị phanh phui, thiệt
hại mà loại tội phạm này gây ra đã lên đến hàng ngàn tỉ đồng.
Thiệt hại do lộ thông tin bí mật của các doanh nghiệp, tổ chức không có thể ước
tính được. Các cơ quan chức năng đã phối hợp điều tra,truy tố xét xử một số vụ tấn
công nghiêm trọng
Vụ 2 đối tượng người Malaysia là Cham Tack Choi và Tan Wei Hong sử dụng thẻ
tín dụng Visa, Master giả để thanh toán tại khách sạn Metropol (thanh toán số tiền hơn
500 triệu đồng). Ngày 8/01/2009, TAND Hà Nội đã tuyên phạt Cham Tack Choi (SN

1984) và Tan Wei Hong (SN 1981), quốc tịch Malaysia mỗi người 7 năm tù giamvề
tội Trộm cắp tài sản.
Tháng 10/2009: Vụ Nguyen Hoawrd quốc tịch Mỹ, ArialFradin quốc tịch Canada
vào Việt Nam đi du lịch đã dùng thẻ AMEX hết hạn, báo mất, khóa giao dịch ở ngân
hàng phát hành rút tiền tại các máy ATM để chiếm đoạt. Nguyen Howard và đồng bọn
đã rút 1,4 tỷ đồng, Arial Fardin đã rút 800 triệu Điều tra, khám phá những vụ án
TPCNC
Vụ Công ty Golden Rock: Trưởng Văn phòng đại diện của Công ty này tại mạng
năm 2010 vẫn tiếp tục nóng bỏng, xuất hiện việc các cá nhân, tổ chức thuê hăcker
điều hành mạng máy tính “Ma” để tấn công nhằm phá hủy hệ thống Công Nghệ
Thông Tin của đối thủ cạnh tranh
Và vụ mới đây nhất, Ngày 22/11/2010 là ngày đầu tiên hacker bắt đầu tấn công
vào hệ thống website của báo Vietnamnet. Đây là cuộc tấn công với quy mô lớn, liên
tục và kéo dài. Nó đã phá hủy hầu như gần hết cơ sở dữ liệu đã lưu trữ 10 năm của báo
VietNamNet.
Hình 2.1 Giao diện báo điện tử VietNamNet bị tấn công
Lỗ hổng an ninh của các hệ thống ngày càng được phát hiện nhiều hơn. Số lượng
các điểm yếu an ninh trong năm 2010 là 4.300 (năm 2009 là 3.500) có tới 30% lỗ
hổng có mức độ nguy hiểm cao. Gần một nửa (49%) số lỗ hổng an ninh vẫn chưa có
các bản vá do nhà cung cấp dịch vụ phát hành. Lỗ hổng liên quan đến phần mềm
Adobe Acrobat PDF được phát hiện nhiều nhất. Ở nước ta vấn đề lỗ hổng của hệ
thống, ứng dụng vẫn chưa được các quản trị hệ thống cập nhật các bản vá kịp thời.
Thực trạng tấn công vào các website của hacker không mới so với những năm
trước tuy nhiên đến nay các website tại Việt Nam vẫn chưa được đầu tư về nhân lực,
kinh phí để được bảo vệ một cách tốt nhất. Nguyên nhân chủ yếu là sự yếu kém trong
quản trị website và không thường xuyên kiểm soát lỗ hổng, khoán trắng vấn đề bảo
đảm ATTT cho nơi đặt website, ít quan tâm đến các cảnh báo an ninh của các cơ
quan, tổ chức có chức năng đảm bảo an ninh an toàn thông tin quốc gia.
Tại Việt Nam, năm 2010, đã có gần 60 triệu lượt máy tính bị nhiễm virus. Trung
bình một ngày có hơn 160.000 lượt máy tính bị nhiễm virus. Đây là con số đáng báo

động về tình hình máy tính bị nhiễm virus nước ta. Đã có hơn 57.000 dòng virus mới
xuất hiện. Virus lây lan nhiều nhất qua các máy tính vẫn là virus Conficker. Trong năm
2010, đã có tới 6,5 triệu lượt máy tính bị nhiễm loại virus này. Có hơn 1,4 triệu lượt
máy tính đã bị nhiễm dòng virus giả mạo thư mục, giả mạo file ảnh, file word,
excel Các virus siêu đa hình tiếp tục đứng trong top 3 những virus lây nhiễm nhiều
nhất trong năm và là nỗi ám ảnh với người sử dụng máy tính tại Việt Nam. Với khả
năng “thay hình đổi dạng” để lẩn trốn, 2 dòng virus Vetor và Sality đã lan truyền trên
5,9 triệu lượt máy tính.
Có thể nói, chính sự chủ quan, hạn chế trong nhận thức, thiếu hụt về đầu tư an
ninh thông tin (ANTT) của các doanh nghiệp, người sử dụng đã tạo tiền đề cho sự gia
tăng các mối đe dọa và nguy cơ bảo mật. Vấn đề ANTT có tầm quan trọng sống còn
đối với các doanh nghiệp, đặc biệt khi các giao dịch trực tuyến đã trở nên ngày càng
phổ biến hơn tại Việt Nam. Lời khuyên của tôi là không nên cắt giảm ngân sách cho
an ninh bảo mật mà thay vì đó cần phải đầu tư vào đó một cách khôn ngoan hơn.
3. DỰ BÁO XU HƯỚNG AN NINH MẠNG NĂM 2013
An ninh mạng năm 2011 vẫn tiếp tục nóng bỏng, xuất hiện việc các cá nhân, tổ
chức thuê hacker điều hành mạng máy tính “Ma” để tấn công nhằm phá hủy hệ thống
CNTT của đối thủ cạnh tranh.
• Kỹ thuật tấn công tinh vi hơn, hoàn hảohơn; mã độc ngày càng “độc” hơn… sẽ
tiếp tục đặ tra những thách đố mới cho năm 2010.
• Kinh tế càng khủng hoảng, tin tặc càng tìm cách xoay sở kiếm tiền, hoạt động
cuả gới tội phậm công nghệ cao sẽ tinh vi hơn, thủ đoạn hơn để làm sao kiếm
được nhiều tiền.
• Mạng xã hội (Twiter, spacebook, ) đang phát triển mạnh mẽ không chỉ là trào
lưu nhất thời, đã trở thành một nền tảng mới rất hiệu quả giúp con người giao
tiếp, liên lạcvới nhau. Đây chính là một môi trường thuậnlợi để giới tội phạm
công nghệ cao thử nghiệm các thủ đoạn, kỹ thuật tấn công đe dọa an ninh mạng.
• Tiếp tục xuất hiện nhiều chương trình diệt virus giả.
• Hình thành nhiều mạng máy tính Ma (bootnet) được điều khiển bởi các hăcker
có chuyên môn cao, có nguy cơ xuất hiện các cuộc chiến lớn trên mạng (chiến

tranh mạng).
• Điện toán đám mây sẽ là đích nhắm mới của giới tội phạm, đặc biệt là khi mạng
3G bắt đầu được đưa vào hoạt động tại ViệtNam.
• Việc sử dụng thiết bị di động không dây Apple có dấu hiệu bùng nổ tại Việt
Nam, trong khi đó Apple chưa có giải pháp đảm bảo an toàn cho các dịch vụ của
thiết bị này, do vậy Apple có thể sẽ là một mục tiêu quan tâm mới của giới tội
phạm mạng.
• Virus đa hình và Thư rác tin nhắn tức thời (IM) ngày càng phức tạp.
Rootkit là một bộ công cụ phần mềm do kẻ xâm nhập đưa vào máy tính nhằm mục
đích cho phép mình quay lại xâm nhập máy tính đó và dùng nó cho các mục đích xấu
mà không bị phát hiện. Đây sẽ là một xu hướng mới khi đã trở thành công cụ “đại
chúng hóa” chứ không còn là “đặc quyền” của một số tin tặc “biết nghề” như trước.
Các dòng virus siêu đa hình sẽ kết hợp nhiều kỹ thuật mới để tạo ra những sự lây lan
dai dẳng kéo dài trong nhiều năm.
Cùng sự phổ biến của Windows 7 với khả năng đảm bảo an ninh cao và mọi quyết
định thực thi quan trọng trên máy tính sẽ thuộc về người sử dụng, xu hướng virus đánh
lừa người sử dụng bằng cảm quan sẽ phát triển mạnh. Trường hợp các virus giả mạo
file dữ liệu (Fake icon) là những biểu hiện đầu tiên và xu hướng này sẽ tiếp tục trong
năm 2011.
Sẽ có nhiều cuộc tấn công, lừa đảo trên điện thoại di động trong năm 2011. Có thể
sẽ ghi nhận những cuộc phát tán mã độc đầu tiên trên điện thoại di động, với hình thức
tấn công chủ yếu dưới dạng các trojan, ẩn náu và ăn cắp thông tin cá nhân.
PHẦN II - MỘT SỐ KỸ THUẬT TẤN CÔNG CỦA HACKER VÀO LỖ
HỎNG TRÊN TRANG WEB VÀ BIỆN PHÁP PHÒNG CHỐNG
1. TẤN CÔNG CHÈN CÂU TRUY VẤN SQL INJECTION
1.1 SQL Injection là gì?
Khi triển khai các ứng dụng web trên Internet, nhiều người vẫn nghĩ rằng việc đảm
bảo an toàn, bảo mật nhằm giảm thiểu tối đa khả năng bị tấn công từ các tin tặc chỉ
đơn thuần tập trung vào các vấn đề như chọn hệ điều hành, hệ quản trị cơ sỡ giữ liệu,
webserver sẽ chạy ứng dụng… mà quên mất rằng ngay cả bản thân ứng dụng chạy trên

đó cũng tiềm ẩn một lổ hổng bảo mật rất lớn. Một trong số các lổ hổng này đó là SQL
injection. Tại Việt Nam, đã qua thời kì các quản trị website lơ là việc quét virus, cập
nhật các bản vá lỗi từ các phần mềm hệ thống, nhưng việc chăm sóc các lỗi của các
ứng dụng lại rất ít được quan tâm. Đó là lý do tại sao trong thời gian vừa qua, không ít
website tại Việt Nam bị tấn công và đa số đều là lỗi SQL injection. Vậy SQL injection
là gì?
SQL injection là kĩ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng trong việc
kiểm tra dữ liệu nhập trong các ứng dụng web 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 (không
được người phát triển ứng dụ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…do có toàn
quyền trên cơ sỡ dữ liệu của ứng dụng, thậm chí là server mà nó ứng dụng đó đang
chạy. Lỗi này thường xảy ra trên các ứng dụng web 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.
1.2 Các dạng tấn công SQL Injection
Có bốn dạng thông thường 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 [2],[3]…
a. 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.
Xét ví dụ điển hình, thông thường để cho phép người dùng truy cập vào các trang
web được 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 về tên đăng nhập và mật khẩu. 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.
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ụ:
login.htm

<form action="ExecLogin.asp" method="post">
Username: <input type="text" name="fUSRNAME"><br>
Password: <input type="password" name="fPASSWORD"><br>
<input type="submit">
</form>
execlogin.asp
<%
Dim vUsrName, vPassword, objRS, strSQL
vUsrName = Request.Form("fUSRNAME")
vPassword = Request.Form("fPASSWORD")
strSQL = "SELECT * FROM T_USERS " & _
"WHERE USR_NAME=' " & vUsrName & _
" ' and USR_PASSWORD=' " & vPassword & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN= "
If (objRS.EOF) Then
Response.Write "Invalid login."
Else
Response.Write "You are logged in as " & objRS("USR_NAME")
End If
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
để 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 2 ô nhập liệu username/password của trang login.htm là: ‘OR’ ’=
’. 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”=”
Câu truy vấn này hợp lệ và sẽ trả về tất cả các bản ghi 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ệ.
b. Dạng 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 cuộc tấn công.
Xé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ụ: Mã nguồn cho chức năng này
thường được viết khá đơn giản theo dạng
<%
Dim vNewsID, objRS, strSQL
vNewsID = Request("ID")
strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" & vNewsID
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN= "
Set objRS = Nothing
%>
Trong các tình huống thông thường đoạn mã này 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ừ đó,
khởi đầ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 or
1=1)
Câu truy vấn SQL lúc này sẽ trả về tất cả các article từ bảng dử liệu vì nó sẽ thực
hiện câu lệnh: SELECT*FROM T_NEWS WHERE NEWS_ID=0 or 1=1
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à:
<%

Dim vAuthorName, objRS, strSQL
vAuthorName = Request("fAUTHOR_NAME")
strSQL = "SELECT * FROM T_AUTHORS WHERE AUTHOR_NAME =' " & _
vAuthorName & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN= "
Set objRS = Nothing
%>
Tương tự như trên, tin tặc có thể lợi dụng sơ hở trong câu lệnh SQL để nhập các
trường trên tác giả bằng chuổi giá trị :
‘UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE’’=’ (*)
Lúc này, ngoà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 là 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 toàn bộ cơ sở dữ liệu bằng cách chèn vào các đoạn
lệnh nguy hiểm như DROP TABLE. Ví dụ như :’DROP TABLE_AUTHORS-’
Làm sao biết được ứng dụng web bị lỗi dạng này được. Rất đơn giản, hãy nhập
vào chuỗi (*) như trên, nếu hệ thống báo lỗi về cú pháp dạng : Invalid object name”
OtherTable”; ta có thể biết chắc là hệ thống đã thực hiện câu SELECT sau từ khóa
UNION, vì như vậy mới có thể trả về lỗi mà ta đã cố tình tạo ra trong câu lệnh
SELECT.
Cũng sẽ có thắc mắc là làm thế nào có thể biết được tên của các bảng dữ liệu mà
thực hiện các thao tác phá hoại khi ứng dụng web bị lỗi SQL injection. Cũng rất đơn
giản, bởi vì trong SQL Server, có hai đối tượng là sysobjects và syscolumns cho phép
liệt kê tất các tên bảng và cột có trong hệ thống. Ta chỉ cần chỉnh lại câu lệnh
SELECT, ví dụ như :
‘UNION SELECT name FROM sysobjects WHERE xtype=’U’ là có thể liệt kê
được tất cả các bảng dữ liệu.
c. Dạng tấn công sử dụng câu lệnh INSERT
Thông thường các ứng dụng web cho phép người dùng đăng kí một tài khoản để

tham gia. Chức năng không thể thiếu là sau khi đăng kí thành công, người dùng có thể
xem và hiệu chỉnh thông tin của mình. SQL injection có thể được dùng khi hệ thống
không kiểm tra tính hợp lệ cảu thông tin nhập vào.
Ví dụ, một câu lệnh INSERT có thể có cú pháp dạng: INSERT INTO TableName
VALUES(‘Value One’,’Value Two’,’Value Three’). Nếu đoạn mã xây dựng SQL có
dạng :
<%
strSQL = "INSERT INTO TableName VALUES(' " & strValueOne & " ', ' " _
& strValueTwo & " ', ' " & strValueThree & " ') "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN= "
Set objRS = Nothing
%>
Thì chắc chắn sẽ bị lỗi SQL injection, bởi vì chúng ta nhập vào trường thứ nhất ví
dụ như: ‘+(SELECT TOP 1 FieldName FROM TableName)+’. Lúc này câu truy vấn
sẽ là: INSERT INTO TableName VALUES(‘ ’+( SELECT TOP 1 FieldName FROM
TableName)+’ ’,’abc’,’def’). Khi đó, lúc thực hiện lệnh xem thông tin, xem như bạn
đã yêu cầu thực hiện thêm một câu lệnh nữa đó là: SELECT TOP 1 FieldName FROM
TableName.
d. Dạng tấn công sử dụ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ê như
mục trên ở ổ đĩa C:\cài đặt server. Việc phá hoại kiểu nào tùy thuộc vào câu lệnh đằng
sau cmd.exe.
1.3 Cách phòng tránh
Trong hầu hết trình duyệt, những kí tự nên được mã hóa trên địa chỉ URL trước
khi sử dụng.
Việc tấn công theo SQL Injection dựa vào những câu thông báo lỗi do đó việc
phòng chống hay nhất là không cho hiển thị những thông điệp lỗi cho người dùng

bằng cách thay thế những lỗi thông báo bằng một trang do người phát triển thiết kế
mỗi khi lỗi xảy ra trên ứng dụng.
Kiểm tra kĩ dữ liệu nhập vào thay thế những kí tự như :
- Đối với các giá trị numeric, hãy chuyển nó sang Interger trước khi thực hiện
câu truy vấn SQL, hoặc dùng ISNUMERIC để chắc chắn nó là một Interger.
- Dùng thuật toán mã hóa dữ liệu.
- Như vậy, có thể thấy lỗi SQL injection khai thác những bất cẩn của các lập
trình viên phát triển ứng dụng web khi xữ lí các dữ liệu nhập vào để xây dựng
câu lệnh SQL. Tác hại từ lỗi SQL injection tùy thuộc vào môi trường và cách
cấu hình hệ thống. Nếu ứng dụng sử dụng quyền dbo(quyền của người sở hữu
cơ sỡ dữ liệu - owner) khi thao tác dữ liệu, nó có thể xóa toàn bộ các bảng dữ
liệu, tạo các bảng dữ liệu mới,…Nếu ứng dụng sử dụng quyền sa(quyền quản
trị hệ thống), nó có thể điều khiển toàn bộ hệ quản trị cơ sỡ dữ liệu và với
quyền hạn rộng lớn như vậy nó có thể tạo ra các tài khoản người dùng bất hợp
pháp để điều khiển hệ thống của bạn. Để phòng tránh, ta có thể thực hiện ở hai
mức
a. Kiểm soát chặt chẽ dữ liệu nhập vào
Kiểm tra tính đúng đắn của dữ liệu là một vấn đề phức tạp và thường chưa được
quan tâm đúng mức trong các ứng dụng. Khuynh hướng của việc kiểm tra tính đúng
đắn của dữ liệu không phải là chỉ cần thêm một số chức năng vào ứng dụng, mà phải
kiểm tra một cách tổng nhanh chống để đạt được mục đích.
Có ba giải pháp tiếp cận vấn đề này:
- Cố gắng kiểm tra và chỉnh sửa để làm cho dữ liệu hợp lệ .
- Loại bỏ những dữ liện bát hợp lệ.
- Chỉ chấp nhận những dữ liệu hợp lệ.
Để phòng tránh nguy cơ có thể xảy ra, hãy bảo vệ các câu lệnh SQL là bằng cách
kiểm soát chặt chẽ tất các dữ liệu nhập nhận được từ đối tượng Request (Request,
Request. QueryString, Request.Form, Request.Cookies,and Request.ServerVariables).
Ví dụ: có thể giới hạn chiều dài của chuổi nhập liệu, hoặc xây dựng hàm Escape
Quotes để thay thế các dấu nháy đơn bằng hai dấu nháy đơn như:

<%
Function EscapeQuotes(sInput)
sInput = replace(sInput, " ' ", " ' ' ")
EscapeQuotes = sInput
End Function
%>
Trong trường hợp dữ liệu nhập vào là số, lỗi xuất phát từ việc thay thế một giá trị
được tiên đoán là dữ liệu số bằng chuỗi chứa câu lệnh SQL bất hợp pháp. Để tránh
điều này, đơn giản hãy kiểm tra dữ liệu có đúng hay không bằng hàm IsNumeric().
Ngoài ra có thể xây dựng hàm loại bỏ một số kí tự và từ khóa nguy hiểm như: ;, ,
select, insert, xp_,…ra khỏi chuổi dữ liệu nhập từ phía người dùng để hạn chế các tấn
công dạng này:
<%
Function KillChars(sInput)
dim badChars
dim newChars
badChars = array("select", "drop", ";", " ", "insert", "delete", "xp_")
newChars = strInput
for i = 0 to uBound(badChars)
newChars = replace(newChars, badChars(i), "")
next
KillChars = newChars
End Function
%>
b. Thiết lập cấu hình an toàn cho hệ quản trị cơ sở dữ liệu
Cần có cơ chế kiểm soát chặt chẽ và giới hạn quyền xữ lí dữ liệu đến tài khoản
người dùng mà ứng dụng web dang sử dụng. Các ứng dụng thông thường nên tránh
dùng đến các quyền như dbo hay sa. Quyền càng bị hạn chế, thiệt hại càng ít.
Ngoài ra để tránh các nguy cơ từ SQL Injection attack, nên chú ý loại bỏ bất kì
thông tin kỹ thuật nào chứa trong thông điệp chuyển xuống cho người dùng khi ứng

dụng có lỗi. Các thông báo lỗi thông thường tiết lệ các chi tiết kỉ thuật có thể cho phép
kẻ tấn công biết được điểm yếu của hệ thống.
Xác định các phương pháp kết nối server :
- Dùng tiện ích Network Utility để kiểm tra rằng chỉ có các thư viện mạng đang
là hoạt động.
- Kiểm tra tất cả các tài khoản trong SQL server
- Chỉ tạo tài khoản có quyền thấp cho các ứng dụng.
- Loại bỏ những tài khoản không cần thiết.
- Đảm bảo rằng tất cả các tài khoản co một mật khẩu hợp lệ.
- Kiểm tra các đối tượng tồn tại
- Nhiều extended stored procedure có thể được xóa bỏ một cách an toàn. Nếu
điều này được thực hiện, thì cũng xem xét việc loại bỏ luôn những tập tin. Dll
chứa mã của extended stored procedure.
- Xóa bỏ tất cả dữ liệu mẫu như “northwind” và “pubs”
- Xóa các stored procedure không dùng như: master…xp_cmdsell, xp_startmail,
xp_makewebtask.
- Kiểm tra những tài khoản nào có thể truy xuất đến những đối tượng nào
- Đối với những tài khoản của một ứng dụng nào đó dùng để truy xuất cơ sở dữ
liệu thì chỉ được cấp những quyền hạn cần thiết tối thiểu để truy xuất đến những
đối tượng nó cần dung.
2. CHÈN MÃ LỆNH THỰC THI TRÊN TRÌNH DUYỆT CROSS-SITE SCRIPTING
2.1Tấn công Cross-Site Scripting
Cross-Site Scripting (XSS) là một trong những kỹ thuật tấn công phổ biến, nó cũng
là một trong những vấn đề bảo mật quan trọng đối với các nhà phát triển Web và cả
những người sử dụng Web. Bất kì một Website nào cho phép người sử dụng đăng
thông tin mà không có sự kiểm tra chặt chẽ các đoạn mã nguy hiểm thì đều có thể tiềm
ẩn các lỗi XSS.
Hacker sẽ lợi dụng sự kiểm tra lỏng lẻo từ ứng dụng và hiểu biết hạn chế của
người dùng cũng như biết đánh vào sự tò mò của họ dẫn đến người dùng bị mất thông
tin một cách dễ dàng. Hacker thực hiện tấn công XSS bằng cách chèn vào các Website

động (ASP, PHP, CGI, JSP, ) những thẻ HTML hay những đoạn mã script nguy hiểm
có thể gây hại cho những người sử dụng khác.
Thông thường hacker lợi dụng địa chỉ URL để đưa ra những liên kết là tác nhân
kích hoạt những đoạn chương trình nguy hiểm được chèn vào, hầu hết được viết bằng
các Client-Site Script như JavaScript, Jscript và cũng có thể là cả các thẻ HTML,…
được thực thi trên chính trình duyệt của nạn nhân.
Ví dụ 1: Hacker thường gắn thêm đoạn mã độc vào URL của Website và gởi đến
nạn nhân, nếu nạn nhân truy cập URL đó thì sẽ bị dính mã độc.
/>Lợi dụng cách truyền tham số trên URL mà hacker có thể dễ dàng thêm vào đoạn
mã đánh cắp cookie. Điều này xảy ra do ta không chú ý điều kiện lọc input từ URL
của Website.
Ví dụ 2: Trường hợp mở các bức thư mà không hề cảnh giác với XSS. Chỉ cần với
một đoạn mã HTML gửi trong thư thì đã hoàn toàn bị mất cookie của mình:
Khi nhận thư, nếu vô tình người dùng đưa con chuột qua bức ảnh gửi kèm thì cũng
có nghĩa là đã bị lấy mất cookie. Và với cookie lấy được, các hacker có thể dễ dàng
login hòm thư của người sử dụng này.

<form action=" method="post" name="XSS">
<input type="hidden" name="cookie">
</form>
<img border="0" onmouseover ="window.document .XSS.cookie.value =
document.cookie; window.document .XSS.submit();"
Nhưng thực sự thì có rất nhiều cách để thêm đoạn mã JavaScript với mục đích tấn
công kiểu XSS. Hacker có thể dễ dàng lợi dụng Document Object Model (DOM) để
thay đổi ngữ cảnh và nội dụng Web ứng dụng. Một vài loại thẻ có thể chèn đoạn mã:
<link rel="stylesheet" type="text/css" href="javascript:[code]" />
<script type="text/javascript">[code]</script>
<script>[code]</script>
<iframe src="vbscript:[code]" />
<img src="[code]" />

<img src="blah" onmouseover="[code]" />
<xml src="javascript:[code]" />

Phần in đậm là phần có thể đặt đoạn mã đánh cắp thông tin.
Nếu như các kỹ thuật tấn công khác có thể làm thay đổi được dữ liệu nguồn của
Web server (mã nguồn, cấu trúc, cơ sở dữ liệu) thì XSS chỉ gây tổn hại đối với
Website ở phía client mà nạn nhân trực tiếp là những người khách duyệt site đó.
Đôi khi các hacker cũng sử dụng kỹ thuật này đề phá hoại các Website nhưng đó
vẫn chỉ tấn công vào bề mặt của Website. XSS là những Client-Side Script, những
đoạn mã này sẽ chỉ chạy bởi trình duyệt phía client do đó XSS không làm ảnh hưởng
đến hệ thống Website nằm trên server.
Mục tiêu tấn công của XSS không ai khác chính là những người sử dụng khác của
Website, khi họ vô tình vào các trang có chứa các đoạn mã nguy hiểm do các hacker
để lại họ có thể bị chuyển tới các Website khác, đặt lại homepage, hay mất mật khẩu,
mất cookie, hay có thể sẽ bị cài các loại virus, backdoor, worm,…
2.2 Phương pháp tấn công XSS truyền thống
Như đã biết, cookie là phần thông tin mà ứng dụng có thể lưu trên đĩa cứng của
người sử dụng. Nhưng chỉ các ứng dụng thiết lập ra cookie thì mới có thể đọc nó. Do
đó chỉ khi người dùng đang trong phiên làm việc của ứng dụng thì hacker mới có cơ
hội đánh cắp cookie. Công việc đầu tiên của hacker là tìm trang đích để dụ người dùng
đăng nhập sau khi đã tìm ra lỗ hổng trên ứng dụng đó.
Hình 2.2 Quá trình thực hiện XSS
- Bước 1: Hacker biết được người dùng đang chạy một ứng dụng Web có lỗ hổng
XSS.
- Bước 2: Người dùng nhận được một liên kết thông qua email hay trên chính trang
Web (như banner, link,…). Thông thường, hacker khiến người dùng chú ý bằng những
câu kích thích sự tò mò của người dùng như “Kiểm tra tài khoản của bạn”, “Quà tặng
hấp dẫn”,
- Bước 3: Chuyển nội dung thông tin (cookie, tên, mật khẩu,…) về máy chủ đã
chuẩn bị trước của hacker.

- Bước 4: Hacker đã tạo một đoạn mã hay chương trình hoặc một trang Web để ghi
nhận những thông tin đã đánh cắp vào một tập tin.
- Bước 5: Sau khi nhận được thông tin cần thiết, hacker có thể sử dụng để thâm
nhập vào tài khoản của người dùng.
2.3 Cách phòng ngừa
Như đã biết, một tấn công XSS chỉ thực hiện được khi gửi một trang Web cho
trình duyệt Web của nạn nhân có kèm theo mã script độc của kẻ tấn công. Vì vậy
những nhà phát triển có thể bảo vệ ứng dụng Web khỏi bị lợi dụng thông qua những
tấn công XSS này, đảm bảo những trang phát sinh động không chứa các tag của script
bằng cách lọc và xác nhận hợp lý các dữ liệu đầu vào từ phía người dùng hoặc mã hóa
(endcoding) và lọc các giá trị xuất cho người dùng.
• Lọc, xác nhận tính hợp lý
Luôn luôn lọc các dữ liệu nhập từ phía người dùng bằng cách lọc các ký tự đặc
biệt, dấu nháy đơn kép, ký tự Null,… được định nghĩa trong đặc tả của HTML.
Mỗi trường nhập liệu bao gồm cả tham số liên kết sẽ được kiểm tra để phát hiện
các thẻ script. Hiện tại có khá nhiều bộ lọc để ta lựa chọn (như bộ thư viện viết
bằng PHP cho phép filter HTML để ngăn chặn kẻ xấu post mã độc XSS thông qua
Website, đó là HTML Purifier. Website: )
• Mã hóa
Người dùng
Đoạn mã được phân phối
qua email hay trang web
Ứng dụng web
File ghi thông tin đánh
cắp được
Thông tin người dùng
được lấy về
1
2
3

4
5
Lỗi XSS có thể tránh được khi máy chủ Web đảm bảo những trang phát sinh
được mã hóa thích hợp để ngăn việc chạy các script không mong muốn. Mã hóa
phía máy chủ là một tiến trình mà tất cả nội dung phát sinh động sẽ đi qua một hàm
mã hóa nơi mà các thẻ script sẽ được thay thể bởi mã của nó. Việc mã hóa được
khuyến khích sử dụng vì nó không yêu cầu phải đưa ra quyết định những kí tự nào
là hợp lệ hoặc không hợp lệ. Tuy nhiên việc mã hóa tất cả dữ liệu có thể tốn tài
nguyên và ảnh hưởng đến khả năng thực thi của máy chủ.
• Người dùng
Người sử dụng cần cấu hình lại trình duyệt để được nhắc nhở có cho thực thi
ngôn ngữ kịch bản trên máy của họ hay không? Tùy vào mức độ tin cậy mà người
dùng sẽ quyết định.
Kỹ thuật XSS khá phổ biến và dễ dàng áp dụng, tuy nhiên mức độ thiệt hại chỉ
dừng lại ở mức độ tấn công trên máy nạn nhân. Vì thế, ngoài việc ứng dụng kiểm
tra tính đúng đắn của dữ liệu thì việc cần nhất là người dùng nên cảnh giác trước
khi bước vào một trang Web mới. Có thể nói, nhờ vào sự cảnh giác của người dùng
thì 90% đã đạt được sự bảo mật trong kỹ thuật này.
3. CHIẾM HỮU PHIÊN LÀM VIỆC (SESSION MANAGEMENT)
3.1. Tổng quan về Session ID
Như đã đề cập, session dùng để lưu trữ trạng thái làm việc giữa trình duyệt và trình
chủ. Session ID có thể được lưu trữ trong cookie hay được nhúng vào địa chỉ URL hay
trong biến ẩn của form. Mỗi kiểu lưu trữ đều có ưu và khuyết điểm, nhưng qua thực tế
cookie vẫn là lựa chọn tốt nhất, và là phương pháp an toàn nhất.
Thông thường, sau khi người dùng được chứng thực dựa trên những thông tin cá
nhân như tên / mật khẩu, session ID được xem như một mật khẩu tĩnh tạm thời cho
những lần yêu cầu tiếp theo. Điều này đã khiến cho session ID là mục tiêu lớn cho
những hacker. Trong nhiều trường hợp, hacker giành được session ID hợp lệ của
người dùng để từ đó đột nhập vào phiên làm việc của họ.
XSS cũng là một cách tấn công có thể chiếm được session ID lưu trữ trong cookie.

Cách tấn công này gọi là “session hijacking”.
Tấn công vào một phiên làm việc thường được thực hiện theo 2 kiểu chính sau:
• Ấn định phiên làm việc
• Đánh cắp phiên làm việc
3.2 Ấn định phiên làm việc
Trong kiểu tấn công ấn định một phiên làm việc, hacker ấn định sẵn session ID cho
nạn nhân trước khi họ đăng nhập vào hệ thống. Sau đó, hacker sẽ sử dụng session ID
này để buớc vào phiên làm việc của nạn nhân đó.
Hình 2.3 Quá trình tấn công người dùng bằng kỹ thuật ấn định session
Bước 1: Thiết lập session ID.
Hệ thống quản lý session theo 2 hướng:
+ Hướng tự do: Chấp nhận bất kì một session ID, nếu chưa tồn tại session thì
tạo mới một session ID
+ Hướng giới hạn: Chấp nhận session ID nào đã đăng kí trước đó. Ở hướng giới
hạn, hacker phải đăng kí một session ID với ứng dụng.
Phụ thuộc vào quy trình quản lý phiên làm việc mà hacker lưu trữ thời gian
sống của phiên làm việc cho đến khi nạn nhân đăng nhập vào hệ thống. Thông thường
một phiên làm việc không tồn tại vô hạn định. Hệ thống sẽ tự động hủy bỏ phiên làm
việc nếu nó không thực hiện một thao tác nào (thời gian nhàn rỗi) hoặc hết hạn định.
Do đó bước 1a là kẻ tấn công sẽ bảo trì phiên làm việc bằng cách gửi yêu cầu
đến server.
Bước 2: Gởi session ID đến trình duyệt nạn nhân.
Hacker gửi session ID vừa tạo đến người dùng và việc trao đổi ID session tùy
vào ứng dụng mà có thể có các cách tấn công thông dụng gồm:
- Tấn công session ID trên tham số URL.
- Tấn công session ID bằng biến ẩn form.
- Tấn công session ID trong cookie.
Bước 3: Đột nhập vào phiên làm việc của nạn nhân.
Sau khi nạn nhân đăng nhập vào hệ thống qua session ID đã được chỉ định sẵn và
chưa thoát khỏi ứng dụng, hacker lúc này bắt đầu dùng session ID đó để bước vào

phiên làm việc của nạn nhân.
Ví dụ: Tấn công Session ID trên tham số URL
Hình 2.4 Tấn công Session ID trên tham số URL
Hacker gửi một liên kết yêu cầu người dùng đăng nhập vào hệ thống máy đích với
sessionID đã được ấn định sẵn trên URL.
/>Hacker mở dịch vụ trực tuyến của ngân hàng qua địa chỉ online .worldbank .com.
Nhận được một session ID từ trình chủ để xác định phiên làm việc của hacker
(session ID = 1234).
Sau đó hacker sẽ tìm cách gửi một liên kết đến một người dùng nào đó có tài
khoản trong ngân hàng này. Liên kết đó thường là dẫn đến trang đăng nhập vào tài
khoản trong ngân hàng ( để lừa
người dùng làm việc trong phiên làm việc của hacker khi người dùng xác nhận liên kết
này.
Người dùng mở ứng dụng Web bằng liên kết của hacker. Do đã có session ID của
hacker nên trình chủ sẽ không tạo một session ID mới.
Người dùng vẫn tiếp tục đăng nhập với thông tin của mình để quản lý tài khoản.
Khi đó hacker sẽ vào tài khoản của người dùng mà không cần phải đăng nhập vì có
cùng phiên làm việc.
Nhận xét: Cách tấn công này nếu người dùng chú ý dể bị phát hiện, đòi hỏi ứng
dụng phải tạo session ID ngay khi người dùng sử dụng ứng dụng.
3.3 Đánh cắp phiên làm việc
Khác với kiểu tấn công ấn định phiên làm việc, hacker đánh cắp một session ID
của người dùng khi họ đang trong phiên làm việc của mình. Để có thể đánh cắp
session ID của người dùng, hacker có thể dùng những phương pháp sau:
• Tấn công kiểu dự đoán phiên làm việc.
Hacker phải là người dùng hợp lệ của hệ thống, sau vài lần đăng nhập vào hệ
thống, hacker xem xét các giá trị session ID nhận được, tìm ra qui luật phát sinh và từ
đó có thể đoán được giá trị của một phiên làm việc của người dùng kế tiếp.
• Tấn công kiểu vét cạn phiên làm việc.
Hacker có thể tự tạo một chương trình gửi nhiều yêu cầu trong một khoảng thời

gian đến trình chủ. Mỗi một yêu cầu kèm theo một session ID để tìm các session ID
đang tồn tại. Hacker dựa vào thói quen của những nhà phát triển ứng dụng Web lấy
thời gian hay địa chỉ IP của người dùng để tạo session ID để hạn chế vùng vét cạn.
• Tấn công kiểu dùng đoạn mã để đánh cắp phiên làm việc.
Bằng cách chèn vào một đoạn mã thực thi trên chính trình duyệt của nạn nhân,
hacker có thể lừa người dùng theo vết một liên kết để từ đó thực hiện đánh cắp cookie
của người dùng. Cách này được thực hiện thông qua lỗi Cross-Site Scripting. Sau khi
có được phiên làm việc của người dùng, hacker vào phiên làm việc của họ.
3.4Cách phòng ngừa
Việc phòng chống kiểu tấn công chiếm hữu phiên làm việc không thuộc trách
nhiệm của trình chủ Web server, vì trình chủ chỉ cung cấp API quản lý phiên làm việc
cho ứng dụng. Vì thế, chỉ ứng dụng mới cần có những biện pháp phòng chống lại kiểu
tấn công này.
Chống việc đăng nhập với một session ID có sẵn, ứng dụng phải hủy bỏ session ID
được cung cấp bởi trình duyệt của người dùng khi đăng nhập và luôn tạo một session
ID mới khi người dùng đăng nhập thành công sẽ khiến cho những hacker không phải
là người dùng hợp lệ của hệ thống.
Giới hạn phạm vi ứng dụng của session ID như kết hợp session ID với địa chỉ của
trình duyệt, kết hợp session ID với chứng thực được mã hoá SSL của người dùng, xóa
bỏ session khi người dùng thoát khỏi hệ thống hay hết hiệu lực, thiết lập thời gian hết
hiệu lực cho session để tránh trường hợp hacker có thể duy trì session và sử dụng nó
lâu dài.
Người sử dụng phải dùng chế độ thoát khỏi hệ thống để xóa bỏ session hiện thời
và có thể những session ID còn lưu lại trên hệ thống khi họ quên thoát ra ngoài những
lần trước.
Không được chủ quan với thuật toán tạo session của ứng dụng là bảo mật, không ai
có thể đoán được. Với session ID quá ngắn, hacker có thể dùng kỹ thuật để vét cạn.
Nhưng không vì thế mà cho rằng ứng dụng sẽ bảo mật với session ID dài và phức tạp
vì kích thước session ID sẽ là một vấn đề nếu thuật toán không tốt.
4. TỪ CHỐI DỊCH VỤ (DOS)

4.1Khái niệm tấn công kiểu DoS (Denial of Service)
Tấn công từ chối dịch vụ DoS là các cuộc tấn công trên hệ thống mạng nhằm ngăn
cản những truy xuất tới một dịch vụ. Tấn công DoS làm cho các dịch vụ mạng bị tê
liệt, không còn khả năng đáp ứng được yêu cầu bằng cách làm tràn ngập số lượng kết
nối, quá tải server hoặc chương trình chạy trên server, tiêu tốn tài nguyên của server,
hoặc ngăn chặn người dùng hợp lệ truy nhập tới dịch vụ mạng. Loại tấn công này ảnh
hưởng đến nhiều hệ thống, rất dễ thực hiện và rất khó bảo vệ hệ thống khỏi kiểu tấn
công DoS.
Thông thường, kiểu tấn công DoS dựa trên những giao thức (Ví dụ như tràn ngập
ICMP với Smurf, Ping of Death, khai thác điểm yếu của TCP trong hoạt động của giao
thức và phân mảnh gói tin, hacker có thể sử dụng bom email để gửi hàng loạt thông
điệp email với mục đích tiêu thụ băng thông để làm hao hụt tài nguyên hệ thống trên
mail server). Hoặc có thể dùng phần mềm gửi hàng loạt yêu cầu đến máy chủ khiến
cho máy chủ không thể đáp ứng những yêu cầu chính đáng khác.
Những khả năng bị tấn công:
- Tấn công trên Swap space: Hầu hết các hệ thống đều có vài trăm MB không
gian chuyển đổi (Swap space) để phục vụ những yêu cầu từ máy khách. Swap
space thường dùng cho các tiến trình con có thời gian ngắn, nên DoS có thể dựa
trên phương thức làm tràn đầy Swap space.
- Tấn công trên Bandwidth: Phần băng thông dành cho mỗi hệ thống là giới hạn,
vì thế nếu hacker cùng lúc gửi nhiều yêu cầu đến hệ thống thì phần băng thông
không đủ đáp ứng cho một khối lượng dữ liệu lớn đó và dẫn đến hệ thống bị
phá vỡ.
- Tấn công vào Ram: Tấn công Dos chiếm một khoảng lớn bộ nhớ của Ram,
cũng có thể gây ra các vấn đề phá hủy hệ thống. Kiểu tấn công Buffer Overflow
là một ví dụ cho cách phá hủy này.
- Tấn công vào Disks: Một kiểu tấn công cổ điển là làm đầy đĩa cứng. Đĩa cứng
có thể bị tràn và không thể được sử dụng nữa.
4.2 Các kỹ thuật tấn công
a. Khái niệm Tcp bắt tay ba chiều

Để nghiên cứu phương pháp tấn công DoS, trước tiên tìm hiểu về cơ chế làm việc
“Tcp bắt tay ba chiều”. Trong đó:
- Gói dữ liệu TCP với cờ SYN (synchoronize) dùng để bắt đầu 1 kết nối.
- ACK (acknowledgement) là sự công nhận.
Cách hoạt động của gói TCP:
Hình 2.5 Cơ chế thiết lập kết nối trước khi truyền số liệu
• Buớc 1: Máy con gửi gói tin SYN yêu cầu kết nối.
• Bước 2: Nếu máy chủ chấp nhận kết nối, máy chủ sẽ gửi gói tin SYN/ACK.
Server bắt buộc phải gửi thông báo lại bởi vì TCP là chuẩn tin cậy nên nếu máy
con không nhận được thông báo thì sẽ nghĩ rằng packet đã bị lạc và gửi lại một
packet mới .
• Bước 3: Máy con gửi hồi đáp bằng gói tin ACK, báo cho máy chủ biết rằng
máy con đã nhận được SYN/ACK packet và lúc này kết nối đã được thiết lập.
b. Lợi dụng TCP thực hiện phương pháp SYN flood truyền thống
Hình 2.6 Tấn công DoS truyền thống
Bất cứ 1 gói tin SYN, máy chủ đều phải để 1 phần tài nguyên của hệ thống như bộ
nhớ đệm để nhận và truyền dữ liệu cho đường truyền đó. Tuy nhiên, tài nguyên của hệ
thống là có hạn và hacker sẽ tìm mọi cách để hệ thống quá giới hạn đó. Đây còn được
gọi là half-open connection vì máy khách mở kết nối giữa chừng.
Nếu máy chủ sau khi gửi trả một gói tin SYN/ACK để thông báo chấp nhận kết nối
cho máy yêu cầu nhưng nếu địa chỉ IP của máy yêu cầu này là giả mạo thì gói tin
không thể đến được đích, nên máy chủ vẫn phải dành tài nguyên cho yêu cầu đó. Sau
một thời gian không nhận được phản hồi từ máy khách, máy chủ lại tiếp tục gửi một
gói tin SYN/ACK để xác nhận lần nữa. Và cứ như vậy, kết nối vẫn tiếp tục mở. Nếu
như hacker gửi nhiều gói tin SYN đến máy chủ đến khi máy chủ không thể tiếp nhận
thêm 1 kết nối nào nữa thì lúc này hệ thống sẽ quá hạn và bị phá vỡ.
c. Tấn công vào băng thông
Thường kiểu tấn công này được sử dụng khi đường truyền mạng của hacker thấp
hơn so với đường truyền của máy đích (kiểu tấn công vào băng thông lớn). Hacker
xâm nhập vào các hệ thống máy tính, cài đặt các chương trình điều khiển từ xa, và sẽ

kích hoạt đồng thời các chương trình này vào cùng một thời điểm để đồng loạt tấn
công vào một mục tiêu khiến cho đường truyền của hệ thống đích không còn khả năng
đáp ứng, không còn khả năng nhận một gói tin nào nữa.
Phương pháp tấn công kiểu từ chối dịch vụ này gọi là DDoS (từ chối dịch vụ phân
tán), cùng một lúc nhiều máy sẽ được phát động để gửi gói tin đến máy đích làm cho
máy đích quá hạn và bị loại khỏi mạng Internet, như sơ đồ minh họa sau:ợ
Hình 2.7 Tấn công DDoS
Đây là cách thức tấn công rất nguy hiểm. Với DDoS, các hacker có thể huy động
tới hàng trăm thậm chí hàng ngàn máy tính cùng tham gia tấn công cùng một thời
điểm và có thể "ngốn" hết băng thông của mục tiêu trong nháy mắt.
=> DrDoS (Distributed Reflection Denial of Service) - Tấn công từ chối dịch vụ
phản xạ nhiều vùng.
Mục tiêu chính của DrDoS là chiếm đoạt toàn bộ băng thông của máy đích, tức là
làm tắc nghẽn hoàn toàn đường kết nối từ máy đích vào xương sống của Internet và
làm tiêu hao tài nguyên. Trong suốt quá trình máy đích bị tấn công bằng DrDoS,
không một máy khách nào có thể kết nối được vào máy đích đó. Tất cả các dịch vụ
chạy trên nền TCP/IP như DNS, HTTP, FTP, POP3, đều bị vô hiệu hóa.
Hình 2.8 Tấn công DrDoS
Bằng cách giả địa chỉ IP của máy đích, hacker sẽ cùng lúc gửi nhiều gói tin đến
các hệ thống máy mạnh trên mạng như Yahoo, Micorosoft,… chẳng hạn. Các hệ thống
này khi nhận gói tin SYN giả, chấp nhận kết nối và gửi trả một gói tin SYN/ACK để
thông báo. Vì địa chỉ IP của gói tin SYN bị hacker sửa đổi thành địa chỉ IP máy đích
nên những gói tin SYN/ACK sẽ được gửi về cho máy đích. Các server lớn, đường
truyền mạnh đó đã vô tình đóng vai trò zoombies cho kẻ tấn công. Cùng một lúc nhận
được nhiều gói tin, đường truyền của máy đích không đủ khả năng đáp ứng, hệ thống
máy đích từ chối nhận bất kì gói tin nào và lúc này hệ thống máy đích đã bị sụp đổ.
d. Kiểu tấn công vào tài nguyên hệ thống
Đây là kiểu tấn công nhằm vào tài nguyên hệ thống hơn là tài nguyên mạng như
CPU, bộ nhớ, file hệ thống, tiến trình,… Hacker là một người dùng hợp lệ của hệ
thống, và được một lượng tài nguyên giới hạn trên hệ thống. Tuy nhiên, hacker sẽ lạm

dụng quyền truy cập này để yêu cầu thêm tài nguyên, có thể thay đổi dữ liệu và tự sao
chép dữ liệu mà nạn nhân cần lên nhiều lần, làm CPU bị quá tải và các quá trình xử lý
dữ liệu bị đình trệ, không còn tiến trình để thực thi nữa.
• Tấn công kiểu Smurf Attack: Kiểu tấn công này cần một hệ thống rất quan
trọng, đó là mạng khuyếch đại. Hacker dùng địa chỉ của máy tính cần tấn công
bằng cách gửi gói tin ICMP echo cho toàn bộ mạng (broadcast). Các máy tính
trong mạng sẽ đồng loạt gửi gói tin ICMP reply cho máy tính mà hacker muốn
tấn công. Kết quả là máy tính này sẽ không thể xử lý kịp thời một lượng lớn
thông tin và dẫn tới bị treo máy.
• Tấn công kiểu Tear Drop: Trong mạng chuyển mạch gói, dữ liệu được chia
thành nhiều gói tin nhỏ, mỗi gói tin có một giá trị offset riêng và có thể truyền
đi theo nhiều con đường khác nhau để tới đích. Tại đích, nhờ vào giá trị offset
của từng gói tin mà dữ liệu lại được kết hợp lại như ban đầu. Lợi dụng điều này,
hacker có thể tạo ra nhiều gói tin có giá trị offset trùng lặp nhau gửi đến mục
tiêu muốn tấn công. Kết quả là máy tính đích không thể sắp xếp được những gói
tin này và dẫn tới bị treo máy vì bị "vắt kiệt" khả năng xử lý.
• Phá hoại hoặc chỉnh sửa phần cứng: Lợi dụng quyền hạn của chính bản thân kẻ
tấn công đối với các thiết bị trong hệ thống mạng để tiếp cận thay đổi trực tiếp
hoặc từ xa các thông tin quan trọng của thiết bị hay phá hoại các thiết bị phần
cứng như router, switch,…
e. Cách phòng ngừa
Tấn công từ chối dịch vụ không quá khó thực hiện, nhưng rất khó phòng chống do
tính bất ngờ và thường là phòng chống trong thế bị động khi sự việc đã diễn ra. Kiểu
tấn công này tuy chỉ khiến cho hệ thống bị phá vỡ trong vài phút nhưng hậu quả thì
khá to lớn (ảnh hưởng về kinh tế, uy tín,…). Đây là kỹ thuật thường được hacker sử
dụng trong trường hợp không thể chiếm quyền quản trị trên hệ thống hoặc thông tin,
hoặc muốn phá hủy uy tín của cơ quan đó. Việc giả mạo địa chỉ khiến cho hacker càng
dễ dàng thực hiện viêc tấn công mà không sợ bị phát hiện. Thông thường kỹ thuật này
được thực hiện kèm theo sự hỗ trợ của vài công cụ như Ping of death, Tear drop,…
Các phương án phòng ngừa:

• Thiết lập mật khẩu mạnh (strong password) để bảo vệ các thiết bị mạng và các
nguồn tài nguyên quan trọng khác. Cài đặt, quản lý các thiết bị mạng trong hệ
thống một cách tối ưu nhất có thể. Xác định mức độ ưu tiên đối với các đối
tượng, các đối tượng cần bảo vệ trên một hệ thống có thể là: Máy chủ dịch vụ,
các router, các chương trình ứng dụng Web, hệ quản trị cơ sở dữ liệu, các dịch
vụ cung cấp,
• Phòng ngừa các điểm yếu của ứng dụng. Lỗi chủ yếu được tìm thấy trên các
ứng dụng mạng nội bộ của Windows, trên các chương trình Webserver, DNS,
hay SQL database. Cập nhật bản vá là một trong những yêu cầu quan trọng cho
việc phòng ngừa.
• Thiết lập các mức xác thực, hệ thống định mức, giới hạn đối với người sử dụng
cũng như các nguồn tin trên mạng. Mục đích ngăn ngừa trường hợp người sử
dụng chủ ý muốn lợi dụng các tài nguyên trên server để tấn công chính server
hoặc mạng và server khác.
• Dùng tính năng lọc dữ liệu, tính năng cho phép đặt rate limit của router /
firewall để loại bỏ các packet không mong muốn, giảm lượng lưu thông trên
mạng và tải của máy chủ, hạn chế số lượng packet vào hệ thống.
• Dùng một số cơ chế, công cụ, phần mềm để chống lại TCP SYN Flooding. Chỉ
kích hoạt các dịch vụ cần thiết, tạm thời vô hiệu hoá và dừng các dịch vụ chưa
có yêu cầu.

×