Tải bản đầy đủ (.pdf) (98 trang)

tìm hiểu về tấn công và bảo mật website

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.62 MB, 98 trang )

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

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






























Đồ á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
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


Đồ á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

4
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.













Đồ á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

5
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 hay
….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ư
. 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
Đồ á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

6
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
Đồ á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

7
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
Đồ á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

8
đ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
Đồ á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

9
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
Đồ á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

10
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.
Đồ á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

11
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
Đồ á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

12
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ụ:

















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
%>
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>

Đồ á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

13

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ụ:
Mã nguồn cho chức năng này thường được viết khá đơn giản theo dạng












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
<%
Dim vNewsID, objRS, strSQL
vNewsID = Request("ID")
strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" & vNewsID
3
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN= "
Set objRS = Nothing
%>
Đồ á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

14
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à,
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à:










Tương tự như trên, tin tặc có thể lợi dụng sơ hở trong câu truy vấn SQL để
nhập vào trường tên tác giả bằng chuỗi giá trị:
' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE
''=' (*)
Lúc này, 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ư:
<%
Dim vAuthorName, objRS, strSQL
vAuthorName = Request("fAUTHOR_NAME")
strSQL = "SELECT * FROM T_AUTHORS WHERE AUTHOR_NAME =' " & _
vAuthorName & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN= "

Set objRS = Nothing
%>
Đồ á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

15
' 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 :









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ể
<%
strSQL = "INSERT INTO TableName VALUES(' " & strValueOne & " ', ' " _
& strValueTwo & " ', ' " & strValueThree & " ') "
Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN= "

Đồ á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

16
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ư:






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:











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

Đồ á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

17
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:
[2]. SQL Injection FAQ:
[3].
Advanced SQL Injection :
[4].
Preventing SQL Injection:
[5]. SQL Injection
Attacks -Are You Safe?

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
Đồ á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
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"
Đồ á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
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
Đồ á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

20
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ụ
Đồ á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


21
. 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ụ
Đồ á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

22
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:


Đồ á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
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:


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

Đồ á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

24
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



Đồ á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

25
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=" />m";

}

×