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
Trang 2Lời nói đầu
Trong công cuộc đổi mới không ngừng của khoa học kỹ thuật 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 tuyến 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!
Trang 3Nghiê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ỹ thuật tuyệt 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ọ
Trang 4
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
Trang 5Trong đó:
- 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, POST… củ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 đến…và 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, nh- vấ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á
Trang 6nhâ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
Trang 7CHƯƠ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ạng…Hacker 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ình…Họ 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:
Trang 8User-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
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
Trang 91.3 Session
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:
đ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
Trang 10+ Đ-ờ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ệ
Trang 11 Đá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ã nguồn để 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ĩ thuật 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
Trang 12 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 xuất cơ sở dữ liệu…khiến cho hacker có cơ hội truy xuất đến file, cơ sở dữ liệu…mà 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, cookie…Bở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 nh- mã 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
Trang 132.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
Trang 14CHƯƠ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ĩ thuật 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ố truyền 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
http://www.nganhang.com/example?user=abc&newpass=123
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:
Trang 15bả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:
<input type=”hiden” name=”giaca” value=”99.99”>
Nh-ng nếu hacker gán một giá trị khác cho tr-ờng “ giaca” :
<form action= http://www.tancong.com/cuahang.p1 method=”POST”>
Trang 16Ngoà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” ,…
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ĩ thuật tấn
Trang 17cô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à
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
Trang 18hacker để 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
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