Một phần rất lớn các vụ tấncô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ữngcuộc t
Trang 1Trờng đại học vinh Khoa công nghệ thông tin
Lờ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ôngtin 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ùngchung nguồn dữ liệu Nếu không có hệ thống mạng, dữ liệu phải đợc in ra giấythì 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ênthiết bị lu 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áytí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àinguyê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
Trang 2Đồ án tốt nghiệp Nghiên cứu một số vấn đề bảo mật ứng dụng web
đ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!
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ữngtạ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ạntruy nhập vào nhiều nơi trên thế giới, Internet còn cho phép nhiều ngời khôngmờ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 Nhng nó cũng là nguy cơ chính dẫn đến thông tincủ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ứumá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áctrờ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ụ
Trang 3Đồ án tốt nghiệp Nghiên cứu một số vấn đề bảo mật ứng dụng web
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ấncô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ữngcuộc tấn công nhằm vào hệ thống của họ
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ácvớ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 quaviệ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ếtbằ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ântá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 racò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ờidù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-
Trang 4Đồ án tốt nghiệp Nghiên cứu một số vấn đề bảo mật ứng dụng web
ờng đợc cài đặt bằng các ngôn ngữ Java, NET, ASP, PHP đợc triển khaitrê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áchnhiệ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
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ệnhcơ 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, lu 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
Trang 5Đồ án tốt nghiệp Nghiên cứu một số vấn đề bảo mật ứng dụng web
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á 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ếthacker
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 đợcthự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ấpdị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 (nhMicrosoft 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ếptớ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ềuhành Các cổng này để mở nhằm cho phép liên lạc với hoạt động giao thôngmạ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
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ốngmạng….Hacker thờng là những chuyên gia về máy tính Hacker không tạo ra các
Trang 6Đồ án tốt nghiệp Nghiên cứu một số vấn đề bảo mật ứng dụng web
kẽ hở cho hệ thống, nhng 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ìnhtrong 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 hayngờ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 mu lợi riêng, những ngời này bị xem nh là BlackHat( Hackernó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à HTTPrequests (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:
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ặcPOST), đị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
Trang 7Đồ án tốt nghiệp Nghiên cứu một số vấn đề bảo mật ứng dụng web
Date: Thu, 13 Jul 2000 05:46:53 GMT
Content-Length: 2291
Content-Type: text/html
Set-cookie:ASPSESSIONIDQQGGGNCC=LKLDFFKCINFLDMFHCBCBMFLJ;
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
1.3 Session
HTTP là giao thức hớng đối tợng tổng quát, phi trạng thái, nghĩa là HTTPkhông lu 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àygâ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, ứngdụng Web đa ra một khái niệm phiên làm việc (Session) Còn SessionID là mộtchuỗi để chứng thực phiên làm việc Một số trình chủ sẽ cung cấp một SessionIDcho 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 lu vào:
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 quen….Cookie đợc browser của ngời dùng chấp nhận lu trên đĩa cứng
Trang 8Đồ án tốt nghiệp Nghiên cứu một số vấn đề bảo mật ứng dụng web
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ậpvào site, những thông tin về ngời dùng đợc lu trữ trong cookie ở những lần truycập sau đến site đó, web site có thể dùng lại những thông tin trong cookie (nhthông tin liên quan đến việc đăng nhập vào 1 forum….) mà ngời sử dụng khôngphả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ínhxá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ểnsite
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
+ Đờ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 trng đợc web server lu 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ệthoặ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 thaythế 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 haykhông đáp ứng, nếu yêu cầu đợc đáp ứng, proxy server sẽ kết nối với server thậtthay 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 giangiữ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 đã đợcphâ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àimộ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
Trang 9Đồ án tốt nghiệp Nghiên cứu một số vấn đề bảo mật ứng dụng web
ấ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ằngcách gửi một session ID hợp lệ đến ngời dùng, sau khi ngời dùng đăngnhập vào hệ thống thành công, hacker sẽ dùng lại session ID đó và nghiễmnhiên trở thành ngời dùng hợp lệ
Đá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 khinạn nhân đã đăng nhập vào hệ thống bằng cách giải mã session ID của họ
đợc lu 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êntrì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ấpphá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 roottrê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ônngữ 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ửinhững kí tự trong chuỗi câu lệnh nh <script> trong kĩ thuật XSS, trongSQL 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âutruy vấn hay những giá trị không hợp lệ để đăng nhập vào hệ thống
Ngôn ngữ phía máy chủ (Server side includes)
Trang 10Đồ án tốt nghiệp Nghiên cứu một số vấn đề bảo mật ứng dụng web
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 truyxuất đến file, cơ sở dữ liệu….mà bình thờng không thể xem đợc trênwebsite
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ủachuỗ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ênkhô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 lu trữ trongnhững biến nh biến trên URL, biến ẩn form, cookie….Bởi vì việc kiểmsoát biến cha đợc quan tâm đúng mức nên hacker có thể lợi dụng sửa đổigiá 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ốngluô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 ứngdụ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
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ôngDoS
Trang 11Đồ á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êncookie, 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ànthiệ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ọihoạt động của hacker trong quá trình tấn công ứng dụng
1.1 Thao tác trên URL
Trang 12Đồ án tốt nghiệp Nghiên cứu một số vấn đề bảo mật ứng dụng web
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 hayPOST 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 trongchuỗi URL
Ví dụ: Có một trang web ứng dụng cho phép thành viên đã đợc thay đổi mậtkhẩ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:
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 khicho 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à HiddenForm Field Biến bẩn form không hiển thị trên màn hình trình duyệt nhng ngờidù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 lu 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= http://www.tancong.com/cuahang.p1 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:
Trang 13Đồ án tốt nghiệp Nghiên cứu một số vấn đề bảo mật ứng dụng web
POST /cuahang.p1 HTTP/1.1
Giaca=99.99
Nhng 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”>
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ánmã hóa MD5 hoặc một kiểu hash một chiều khác để tổng hợp chuỗi đó và
lu 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ớicùng một khóa mà ta định trớc Sau đó đem so sánh với “Chuỗi mẫu”, nếuchũ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 lu 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)
Trang 14Đồ án tốt nghiệp Nghiên cứu một số vấn đề bảo mật ứng dụng web
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ểnweb 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ểmthì đề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ấncô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ếnnhất của Web Applications và mối đe doạ của chúng đối với ngời sử dụng ngàycà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ácyêu cầu (request) đợc gửi từ các máy client tới server nhằm chèn vào đó cácthô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à
Nhng 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 websitenhng đó 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
Trang 15Đồ án tốt nghiệp Nghiên cứu một số vấn đề bảo mật ứng dụng web
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 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ácloại virus, backdoor, worm
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 cha cookie của trang web chứa tậptin flash đó Nh vậy là trang web đó đã bị tấn công, bằng cách chèn một đoạnJavaScript 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
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 webchứa các thông tin về bảo mật nh securityfocus.com, securiteam.com, Tuynhiê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 hayAppScan, đó là những chơng trình scan khá tuyệt, ta không chỉ kiểm tra đợc cáclỗ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 Đó